目录
变量
变量是计算机内存中的一块区域,变量可以存储任何值(也称指向),而且值可以改变。变量是存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符串等。
变量命名规则:变量名的长度不受限制,必须是字母、数字或下划线(_)的组合,不能使用空格、连字符、标点符号、引号或其他字符, 变量名的第一个字符不能是数字,必须是字母或下划线,变量名区分大小写。
- 正常变量:正常变量名是公开的(public),可以被直接引用,比如:a,name,等;
- 特殊变量:类似 __xxx__ 这样,可以被直接引用,但是有特殊用途,比如 __author__ ,__name__ 就是特殊变量,hello模块定义的文档注释也可以用特殊变量 __doc__ 访问,我们自己的变量一般不要用这种变量名;
- 私有变量:类似 _xxx 和 __ xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如 _abc,__abc 等
- 常量:通常全部用大写的字母表示:如 PI = 3.14159265359 ,但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量PI的值,也没人能拦住你。
python自带的变量,我们不能用下面的变量名:
全局变量和局部变量
全局变量是在整个py文件中声明,全局范围内都可以访问的变量。
局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了。
如果我们在全局申明了一个变量,我们想要在函数内部使用这个变量时,我们需要用 global 指定这个变量。
如下,我们在函数式内部使用全局变量时,没用global指定,所以发生了报错!
a="hello"
def test():
a=a+"world!"
print(a)
test()
当我们用global指定后
a="hello"
def test():
global a
a=a+"world!"
print(a)
test()
我们再看看另一个跟变量相关的关键字nonlocal,字面意思就是指当前的这个变量不是局部变量。
在一个返回函数中,我们在内部的函数中调用外部的函数的变量,这时,我们就需要用nonlocal指定了。
def test():
a="hello"
def test2():
a=a+"world"
print(a)
return test2()
test()
def test():
a="hello"
def test2():
nonlocal a
a=a+"world"
print(a)
return test2()
test()
数据类型
数字
整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用 0 x前缀和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。
- 整数的除法:5/2 # 2.5
- 整数的整除:5//2 # 2
- 整数的取余: 5%2 # 1
浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是完全相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差
复数
a=5+6j
序列
序列是Python中最基本的数据结构。序列中的每个元素都分配一个索引,第一个索引是0,第二个索引是1,依此类推。每个索引对应一个元素。序列类似于其他语言的数组,可以通过索引查找或者通过索引修改值
字符串str
a="hello,word!"
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ' 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
a='hello'
b="hello"
c="let's go"
原始字符串
a=r"hello,
world" 这里是
不进行转义
字符串转换为字节
a=b"root" a的type是bytes
字符串的切片
>>a="hello,word!"
>>print(a[0:5])
hello
>>print(a[0::2])
hlowr!
>>print(a[-3:-1])
rd
转义字符串
(在行尾时) | v | f | e |