Python知识结构
在接触代码之前我们先来简单地了解一下python全貌,从更具体的视角来看,python程序可以分解成模块、语句、表达式以及对象;
- 程序由模块构成
- 模块包含语句
- 语句包含表达式
- 表达式创建并处理对象
如果你使用过C++或者JAVA,在使用前都需要声明一个对象(或者叫做数据结构),你需要去部署内存结构,管理内存分配。
例如创建变量,需要声明,给定变量类型等。这称之为静态类型,是因为编译器会在编译的时候知道每个变量的类型;而python各变量没有严格的类型限制,而且不需要声明。
python内置对象
对象类型 | 构造示例 |
---|---|
数字 | 1234,3.1415,-5,3+4j,Ob0111 |
字符串 | ‘Bob’,‘1234’, ‘1.234’,‘Bob’s’ |
列表 | [1,1.2,‘a’,‘b’],list(range(10)) |
字典 | {‘A’:10,‘B’:12.1},dict(hours=10) |
元组 | (‘Bob’,‘1234’),(1,2), tuple(‘spam’) |
文件 | open(‘test.txt’),open(r’C:\user\desktop\text.txt) |
集合 | {A,B,C},set(‘abc’) |
其他核心类型 | 类型,None,布尔型 |
程序单元类型 | 函数,模块,类 |
python实现相关类型 | 已编译代码、调用栈跟踪 |
变量与对象
在编辑器中,我们可以直接使用赋值运算符 ‘=’ 来创建变量;
x = 71
y = 'love'
第一行我们创建了一个int型对象,该对象名称是x;
第二行我们创建了一个str型对象名称是y;
x = 71
y = 'love'
print(id(x))
print(id(y))
程序运行结果:
4302866944
140629309137616
程序运行结束
python变量命名规则:
- 变量名称由ASCII字符、数字和下划线(_)组成;
- 变量的名称必须以字符开头,且区分大小写,比如(rowan、Rowan、roWan就是三个不同的变量);
- python变量名不可与python任何关键字名称相同,也不可与python任何内置常量(None、True、False)相同。
python关键字:
python使用动态数据类型:
1. 可以把任何对象赋值给任何变量;
x = 71
x = 'love'
给变量赋值称为绑定,实际上是把名称绑到对象上。如果给一个已经存在的对象赋一个新对象,则称为对该名称进行重新绑定。
对象一旦没有具体的名称绑定,对象所占用的空间就会由计算机垃圾收集程序予以处理,将其从内存中删除,释放内存空间。
当然,python也可以同时给多个变量赋值;
x, y, z = 1, 2, 3
str_1, str_2, str_3 = "A", "B", "C"
2. python动态类型是强类型的:python不允许在不兼容的类型之间进行运算
a = 71
b = 'love'
print(a+b)
运行结果:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
a = 71
b = 8.5
print(a+b)
运行结果:79.5
这是由于python提供了其他语言也会用到的自动类型转换技术,将a转换成浮点数float。
数字和字符串
python提供了数个数字类型和两种字符串类型。所有的这些类型的共同点在于,它们都是不可变的。
1.数字
数字有4种类型:int(整数)、布尔型(bool)、float(浮点数)、complex(复数)。我们可以使用内置的type函数来查看变量所指的对象类型。
①整数、布尔型
python提供了三种整数类型:整数、布尔型。布尔型只有两个值,即True和False,在用作数字时,亦可以看做 1 和 0。
#定义整型变量
x, y, z = 1, 2, 3
python支持常见的数字运算符,包括 +、 -、 、 /、 %以及增量运算符 +=、-=、= 和%=,同时还有 ** 运算符,表示数字的平方,//运算符表示整除。
print(2 + 2) # 加法
print(3 - 2) # 减法
print(2 * 3) # 乘法
print(3 / 2) # 除法, 得到一个浮点数
print(2 // 4) # 除法, 得到一个整数
print(3 % 2) # 取余
print(3 ** 2) # 乘方
布尔值运算:
True and False # False
True and True # True
False and True # False
False or True # True
False and False # False
True ^ False # True
True ^ True # False
②浮点数(小数)、复数
任何带有小数点的数字都是浮点数,当我们把浮点数和整数混合的时候,我们会得到一个浮点数。
num = 3.1415926
复数(complex)是由实数部分和虚数部分构成的,可以用a + bj或者complex(a, b)表示,复数的实部a和虚部b都是浮点数。
c = 5.4 + 0.8j
我们可以使用内置的type函数来查看变量所指的对象类型:
num = 3.1415926
c = 5.4 + 0.8j
print(type(num))
print(type(c))
程序运行结果
<class 'float'>
<class 'complex'>
2.字符串
字符串是由一系列的字符组成的,是由单引号 ‘ 或双引号 ” 括起来的,同时使用反斜杠 \ 转义特殊字符。
双引号和单引号的自由转换,可以让你在引号中套用引号更方便。
str_1 = 'a'
str_2 = '1'
str_3 = "This is a string."
如果需要再字符串中包含特殊字符,可以使用反斜杠“ \ ”进行转义。
"He said \"No you don't! \" again."
'What \'s up with him?'
由于双引号的界限,无需对字符串中的单引号进行转义,同时也不必对由单引号界定的字符串中的双引号进行转义。
对于多行字符串,我们可以使用三引号来进行表示。
'''
This is a string.
He said \"No you don't! \" again.
What \'s up with him?
'''
"""
This is a string.
He said \"No you don't! \" again.
What \'s up with him?
"""
python字符串是字符的有序集合,可以通过位置索引方位字符串中的单个字符,其中,第一个字符的索引值为0。同样,也可以从字符串的末尾访问每个字符,最后一个字符的索引值是-1。
phrase = "The red balloon"
print(phrase[0],phrase[5],phrase[-1])
运行结果
T e n
python的序列是支持切片的,这意味着我们可以从一个序列中复制出多个子序列。一个切片由一个、两个或者三个相对独立的部分。开始(默认从零开始)、结束(默认以序列长度为结束)和间隔数。切片会从索引值开始并包含开始字符,但是不包含结束索引值处的字符。
phrase = "The red balloon"
print(phrase[0:3])
print(phrase[-3:])
print(phrase[4:7])
运行结果
The
oon
red
3.字符串操作函数
除了可以通过索引获取字符,我们也可以通过函数来获得索引;例如find()函数。
phrase = "The red balloon"
print(len(phrase))
print(phrase.find('r'))
print(phrase.index('e'))
输出结果:
15
4
2
字符串操作方法和函数:
为了获得格式化操作,可以使用二员运算符 “ % ” 。
phrase = "The are %i balloons" %5
print(phrase)
输出:
The are 5 balloons
字符串中的 %i 被替换为数字5。格式化字符串中 % 后面的字母表示对象的类型,用 %i 表示这是一个整数。
phrase = "The %i %s cost %f dollars" %(3,"fish",17.5)
print(phrase)
输出:
The 3 fish cost 17.500000 dollars
字符串格式化符号: