缩进
python使用空格或tab缩进,推荐使用四个空格(有些文本编辑器自动使用4个空格替代tab)
分号 ; 用于分隔同一行的不同句子
a=1, b=2,c=3
注释
单行注释用 # comments
也可使用单引号' 双引号" 三引号(三个单引号或三个双引号)'''.三引号用于跨行使用.跨行注释不支持嵌套
赋值
'增量赋值'
a = 0; a+=1 '等同于a=a+1'
out: a=1
'链式赋值'
a=b=1 #从左往右
'多重赋值'
x,y=1,2
y,x=x,y
out: x=2, y=1
比较运算
'连续比较'
1<2<3 '等同1<2 and 2<3'
out: true
变量与引用
python中创建变量事实上创建的是object和reference
变量为不可变类型的数字和字符串,python创建不同reference对应固定object;变量为可变类型的字典和列表时,python会创建不同的object
可变列表.png
不可变数字.png
简单示意.png
变量作用域
python同名变量内层屏蔽外层
内层找到变量后就不会再往外找,也是从小范围到大范围找
当前作用域
分开举例便于理解(其实是一样的)
不可变
x=1 #此处为全局变量
def func(num):
x=num+1; print(x,end=',')
func(1) '在自定函数func中x=2并输出,结束后x的临时值删除'
print(x) '最终x=1'
out:
2,1
'若想在函数内更改全局变量x的值需声明'
def func(num):
global x
'''声明 nonlocal x 就从外层作用域开始找x (不包括全局)
声明 global x 就从全局变量找
找不到报错 no binding'''
可变
a = [0,1];print(a)
def append(lists,b):
'''这个位置print(a)可以运行,print(x)会报错UnboundLocalError,原因见下'''
lists.append(b)
append(a,2)
print(a)
out:
[0,1]
[0,1,2]
变量作用域.png
a指向的是被改为[0,1,2]的object,仍存储在同一内存地址,只有引用过程,没有赋值过程