目录
1.对象
2.python标识符命名规则
3.变量的声明与赋值
4.变量删除与垃圾回收机制
5.常量
6.链式赋值
7.系列解包赋值
1.1 python中,一切皆对象。
每个对象由三个部分组成,标识(id)、类型(type)、值(value)。
1.2 对象的本质:
一个内存块,拥有特定的值,支持特定类型的相关操作。
代码演示如下:
a = 3
print(id(a)) #打印a的地址
print(type(a)) #打印a的类型
print(a) #打印a的值
执行结果如下:
2397444440368
3
可以知道,a是一个变量名,它的类型是int(整型),值是3,
1.3 它的内存示意图如下:
在这个内存示意图中,对象存储在堆中,而变量a在栈内,变量a可以通过id(地址)引用对象,从而获得对象的值和类型。
在python中,变量也叫做:对象的引用。即是变量存储的就是对象的地址。变量通过地址引用了“对象”。
1.4 python是动态类型语言
变量是不需要显示声明类型的,根据变量引用的对象,python解释器能自动确定数据类型。
1.5 标识符规则
(1)区分大小写
例如True和true,代码演示如下:
1.True
while True:
a = 3
print(a)
if a == 3:
break
2.true
while true:
a = 3
print(a)
if a == 3:
break
执行结果:
1.3
2.Traceback (most recent call last):
File "D:\Python\pycharm\pycharmexec\mypro01\practise01.py", line 1, in
while true:
NameError: name 'true' is not defined. Did you mean: 'True'?
Process finished with exit code 1
从图中可以看出,当为True时,结果能正常输出,而为true时,提示报错。
(2)第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线。
代码演示如下:
1.代码
a1 = 5
_a1 = 5
1a = 5
2.结果
File "D:\Python\pycharm\pycharmexec\mypro01\practise01.py", line 3
1a = 5
^
SyntaxError: invalid decimal literal
如图中所示,如果第一个是数字则会报错。
(3)不能使用关键字。比如:if、or、while等
代码演示如下:
1.代码
if = 3
or = 4
while = 5
2.结果
File "D:\Python\pycharm\pycharmexec\mypro01\practise01.py", line 1
if = 3
^
SyntaxError: invalid syntax
(4)以上下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。
1.代码
__call__() #表示将类对象变得跟函数一样可以直接使用函数名()进行调用函数方法
__init__() #表示构造方法,初始化实例对象
刚刚我们说到关键词,在这里我们可以使用help(),help>keywords来查看关键词
代码演示如下:
help()
help> keywords
Here is a list of the Python keywords. Enter any keyword to get more help.
False class from or
None continue global pass
True def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
break for not
图中的都是关键词,我们要避免用这些来命名。
2.1 模块和包名
全小写字母,尽量简单。多个单词之间用下划线 ,例如:say_score,say
2.2 函数名
全小写字母,多个单词之间用下划线隔开,例如:my_score,number
2.3 类名
首字母大写,采用驼峰原则。多个单词时,每个单词第一个字母大写,其余全部小写。例如:MyHobby,MyCar
2.4 常量名
全大写字母,多个单词是用下划线隔开,例如:SPEED,MIN_SPEED
格式:变量名 = 表达式
例如:a = 4,a是变量名,3是表达式,=是赋值符号
变量在使用前必须先被初始化(先被赋值)
1.代码
print(a)
2.结果
Traceback (most recent call last):
File "D:\Python\pycharm\pycharmexec\mypro01\practise01.py", line 1, in
print(a)
NameError: name 'a' is not defined
结果显示报错,a需要先被定义才能打印
4.1 可以通过del语句删除不再使用的变量。
4.2 如果对象没有变量引用,就会被垃圾回收器回收,清除内存空间。
1.代码
未使用del前
a = 3
b = 4
print(a)
print(b)
使用del后
a = 3
b = 4
del a
print(a)
print(b)
2.结果
3
4
Traceback (most recent call last):
File "D:\Python\pycharm\pycharmexec\mypro01\practise01.py", line 4, in
print(a)
NameError: name 'a' is not defined
此时del a之后显示a需要再被定义,也就是a已经被当作垃圾回收了。
常量命名一般都是大写,但是python中的常量是可以修改的,是逻辑上的常量
1.代码
MAX_AGE = 80
print(MAX_AGE)
MAX_AGE = 100 #修改常量,是逻辑上的常量
print(MAX_AGE)
2.结果
80
100
链式赋值用于同一个对象赋值给多个对象
1.代码
x = y = 3
print(x)
print(y)
2.结果
3
3
从图中可以看出3分别赋给x、y。
系列数据赋值给对应相同个数的变量(个数必须保持相同)。
a,b,c = 2,3,4 相当于: a = 2;b = 3;c = 4
1.代码
x,y,z = 2,3,4
print(x)
print(y)
print(z)
2.结果
2
3
4
变量互换
使用系列解包赋值可以实现变量值交换
1.代码
x,y = 2,3
x,y = y,x #变量互换
print(x)
print(y)
2.结果
3
2
这周的python学习小报就先分享到这吧,下周咱们再继续,希望对大家有所帮助。