变量

1. 变量

变量是表示(或指向)特定值的名称。

1.1 变量的定义和组成

# 变量名 赋值符号(=) 变量值
x = 1

1.2 变量名的命名规则

  • 变量名只能以字母、数字和下划线(_)组成,且不能以数字开头(谨慎使用下划线开头)。

  • 变量名不能使用空格,中间以下划线连接。

  • 变量名应尽量简短,又具有描述性,如 x = 18,读者很难理解x的具体含义。

  • 慎用小写字母l和大写字母O,很容易和数字1,0混淆。

  • 不要将python关键字和函数名用作变量名,python主要关键字如下:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

1.3 变量名的两种风格

  • 驼峰体

    如 AgeOfNick = 12,不推荐使用,可读性差

  • 下划线式

    如age_of_nick = 12,推荐使用此种格式

2. 常量

python中没有使用语法强制定义常量,如果非要定义常量,变量名全部使用大写,如HEIGHT_OF_NICK = 149

3. 变量内存管理

3.1 变量的存储

变量存放在内存中,每定义一个变量,就会在内存中开辟一个内存空间,用于存放变量值,且使变量名指向存放变量值的内存空间。

3.2 垃圾回收机制

在3.1中,变量名指向存放变量值的内存空间(如x = 233,x指向存放233的内存地址),如果此时赋值一个新值给变量名(x = 50),此时x解除与233的绑定关系而指向存放50的内存空间,系统便会触发垃圾回收机制释放存放233的内存空间。

3.2.1 引用计数

垃圾回收机制是由引用计数触发的,当定义一个变量时,变量名便指向存放变量值的内存空间,此时引用计数为1,当引用计数 = 0时,便会触发垃圾回收机制,具体原理可用以下代码解释:

# 此段代码只能在cmd窗口和jupyter内实现
x = 1234  # 引用计数为1
y = x  # 引用计数为2
del x  # 引用计数为1
del y  # 引用计数为0,此时触发垃圾回收机制,所指内存地址的数据被清除

3.3 小整数池

在python中,对于int类型,为了避免因创建相同的值而频繁申请内存空间而带来的效率问题,在python解释器启动时,会建立小整数池,范围为[-5, 256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。

在pycharm中,出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也按此种机制处理。

4. 花式赋值

4.1 链式赋值

a = 10
b = 10
c = 10
print(a, b, c)

结果为:

10 10 10

链式赋值:

a = b = c = 10
print(a, b, c)

结果为:

10 10 10

4.2 交叉赋值

x = 123
y = 456

temp = x
x = y
y = temp
print(x, y)

结果为:

456 123

交叉赋值:

x = 123
y = 456
​
x, y = y, x
print(x, y)

结果为:

456 123

4.3 交叉赋值(解压缩)

height_of_nick, weight_of_nick, age_of_nick = 149, 180, 12
print(height_of_nick, weight_of_nick, age_of_nick)

结果为:

149 180 12

5. 注释

5.1 单行注释

# a = 2       # 注释此行,不执行
b = 3
print(b)      # 打印b

单行注释一般注释在一行的后面,如果是语句块,则注释于语句块前

ctrl + / 注释多行,再次输入则取消注释

5.2 多行注释

"""
我要被注释了
我要注被释了
"""
​
'''
It is annotation!
It is annotation!
'''

你可能感兴趣的:(变量)