- Python属于动态数据类型语言,类型是在运行过程中自动决定的,不需要通过代码申明,根据所赋值来决定其数据类型。
- 其中,Python变量的命名遵循标识符(类似C)命名规则。
- python 数据类型: 数字型和非数字型
- 数字型:整形(int)、浮点型(float)、布尔型(bool)、复数型(complex)
- 非数字型: 字符串、列表、元组、字典
数据赋值
- 简单赋值: x=2
- 序列赋值:等号左侧是元组、列表表示的多个变量名,右侧是元组、列表或字符串表示的值。例如:
使用省略圆括号的元组赋值
1
2
3a,b=1,2
print('hahha %d %d' %(a,b))
>>>hahha 1 2使用元组赋值
(a,b)=1,2
- 使用列表赋值
[a,b]=[30,'abc']
- 用字符串赋值
此时python会将字符串分解为单个字符,依次赋值给每个变量【变量个数必须和字符个数相等,否则报错】(a,b,c)='abc'
在变量名前使用
*
,为创建列表对象引用
此时,不带星号的变量匹配一个值,剩余的作为列表对象。例如:1
2
3
4
5
6x,*y='abc'
print(x,y);
>>>a ['b', 'c']
*y,x='a'
print(x,y);
a []多目标赋值:指用多个连续的等号为变量赋值:
a=b=c=10
- Tips: 使用type()函数可以查看一个变量的类型
- 在python3中没有了long数据类型,只有int
变量的格式化输出
- %s 字符串
- %d 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方用0补齐
- %f 浮点数,%.02f 表示小数点后面只显示两位
- %% 输出%
- 以下几种常见输出格式:
- print(‘my name is %s’ %name)
- print(‘my name is %s , this is %s’ %(my_name,others))
标识符与关键字
- 标识符:由字母数字和下划线组成,首字母不能是数字。
- 关键字:内置标识符,具有特殊的功能和定义,标识符不能和关键字重命。
- 以下命令可以查看python中的关键字:
1
2
3
4
5
6import keyword
print(keyword.kwlist)
>>>
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def',
'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量的引用
- 变量和数据都是保存在内存中的,Python中函数的参数传递以及返回值都是靠引用传递的
- 在Python中,变量和数据是分开存储的,数据保存在内存中的一个位置,变量中保存数据的内存地址
- 变量中记录数据的地址就叫做 引用,当再次给变量赋值时,实际上是修改了数据的引用
- 使用id()函数可以查看数据的内存地址
- 调用函数传递实参:调用函数时,本质上是传递的是实参保存数据的引用,而不是实参保存的数据
- 函数返回值传递引用: 返回的是数据的引用,而不是数据本身
可变类型和不可变类型
- 不可变类型:内存中的数据不允许被修改 – 数字类型、字符串、元组
- 可变类型:内存中的数据可以被修改 – 列表、字典
- 字典的key不能是可变类型,值可以是任意类型的数据。
hash函数
- python中的hash(o)函数接收一个不可变的数据作为参数,返回结果是一个整数
- 哈希是一种算法,其作用就是提取数据的特征码(指纹),相同的内容得到相同的结果。
- 在Python中,设置字典的键值对时,会首先对key进行hash,决定如何在内存中保存字典的数据,以方便后续对字典的操作
- 局部变量和全局变量
- 局部变量是在函数内部定义的变量,只能在函数内部使用,函数执行结束,局部变量会被系统回收
- 全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
- 局部变量的生命周期:从创建到被系统回收
- 全局变量的使用:在函数内部,可以通过全局变量的引用获取对应的数据,但是在函数内部不允许直接修改全局变量(可变数据类型除外)的引用而是新创建局部变量
- 在函数内部修改全局变量的值:用 global 声明与一下变量即可,这句只负责声明不能带赋值
- 全局变量定义的位置:在开发时,应该把模块中的所有全局变量定义在所有函数的上方