Python编程基础
1. 程序的构成
- 程序由模块组成,一个模块对应python的源文件 ,一般后缀为:.py
- 模块由语句构成
- 语句是python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
2. 对象
每个对象由:标识(ID)、类型(type)、值(value)组成
- 标识:用于唯一标识对象,相当于计算机内存中的地址。使用内置函数id(123)可返回123的标识
- 类型:相当于对象存储的"数据"的类型。类型可以限制对象的取值范围和可执行操作,使用type(123)获取所属类型。
- 值:表示对象所存储的数据的信息。使用print(123)直接打在这里插入代码片印出值。
>>> a=3
>>> a
3
>>> id(3)
140405005759776
>>> type(3)
<class 'int'>
>>> a
3. 引用
在Python中变量称之为:对象的引用。因为变量存储的就是对象的地址。变量通过地址引用了对象。
4. 标识符
用于变量、函数、类、模块等的名称。
- 区分大小写
- 第一个字符必须为字母、下划线。其后是:字母、数字、下划线
- 不能使用关键字
- 双下划线开头或结尾的通常有特殊意义,尽量避免此类写法。
5. 变量和简单赋值语句
5.1 变量的声明和赋值
- 用于将一个变量绑定到一个对象上,格式为:变量名=表达式
- 例如a=3,运行过程中,解释器先运行右边的表达式,生成一个代表表达式运算结果的对象;然后将对象的地址赋值给左边的变量。
- 变量在使用前应该进行初始化(赋值),否则会报错。
5.2 删除变量和垃圾回收机制
- 通过del语句删除不再使用的变量
- 当变量删除后,对象将没有变量引用,就会将对象回收到垃圾回收器,清空内存空间。
>>> a=123
>>> a
123
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>>
5.3 链式赋值
用于同一个对象赋值给多个变量
- x=y=123,相当于x=123;y=123
5.4 系列解包赋值
系列数据赋值给对应相同个数的变量
- a,b,c=4,5,6 相当于a=4,b=5,c=6
5.5 常量
Python不支持常量,只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。
>>> print(max_speed)
120
>>> max_speed = 140 #实际上是可以进行更改的,逻辑上不能更改
>>> print(max_speed)
140
6. 基本内置数据类型与运算符
6.1 内置基本数据类型
- 整型(整数)
- 浮点型(小数)
- 布尔型(仅包含True、False)
- 字符串型(由字符组成的序列)
6.2 整数
6.2.1 使用int()实现类型转换
- 浮点数直接舍去小数部分。如int(9.9)结果是:9
- 布尔值True转换为1,False转为0。如int(True)结果是1
- 字符串符合整数格式(浮点数格式不行)则直接转换为对应整数,否则报错。
>>> int("456")
456
>>> int("456abc")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '456abc'
>>> int("456.789")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '456.789'
>>> int(456.789)
456
>>>
6.2.2 自动转型
- 整数和浮点数混合运算,表达式结果自动转型为浮点型。比如2+8.0=10.0
6.2.3 整数可以有多大
- Python2中int是32位,最多能够存储正负21亿个整数;Python3中,int可以存储任意大小的整数。
6.3 浮点数
6.3.1 类型转换和四舍五入
- 类似于int(),也可以使用float()将其他类型转换为浮点数
- 整数和浮点数运算后表达式结果自动为浮点数
- 整数和浮点数运算后表达式结果自动为浮点数
6.4 运算符
6.4.1 基本运算符
运算符 | 说明 | 实例 | 结果 |
---|---|---|---|
+ | 加法 | 3+2 | 5 |
- | 减法 | 30-5 | 25 |
* | 乘法 | 3*6 | 18 |
/ | 浮点数除法 | 8/2 | 4.0 |
// | 整数除法 | 7//2 | 3 |
** | 幂 | 2**3 | 8 |
6.4.2 增强型赋值运算符
运算符 | 实例 | 结果 |
---|---|---|
+= | a+=2 | a=a+2 |
-= | a-=2 | a=a-2 |
*= | a*=2 | a=a*2 |
/= | a/=2 | a=a/2 |
//= | a//=2 | a=a//2 |
**= | a**=2 | a=a**2 |
%= | a%=2 | a=a%2 |
6.4.3 比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 | a==b,返回False |
!= | 不等于 | a!=b,返回False |
> | 大于 | a>b,返回False |
< | 小于 | a<b,返回True |
>= | 大于等于 | a>=b,返回False |
<= | 小于等于 | a<=b,返回True |
6.4.4 逻辑运算符
运算符 | 格式 | 实例 |
---|---|---|
or 逻辑或 | x or y | x为true,则不计算y,直接返回true;x为false,则返回y |
and 逻辑或 | x and y | x为true,则返回y的值;x为false,则不计算y,直接返回false |
not 逻辑非 | not x | x为true,则返回false,x为false,则返回true |
6.4.5 同一运算符
用于比较两个对象的存储单元,实际比较两个对象的地址。
运算符 | 描述 |
---|---|
is | is是判断两个标识是不是引用同一对象 |
is not | is是判断两个标识是不是引用不同对象 |
6.4.6 运算符优先级(由高到底)
- 乘除优先加减
- 位运算和算术运算>比较运算>赋值运算>逻辑运算