2.python部分语法及特性

缩进

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同名变量内层屏蔽外层

内层找到变量后就不会再往外找,也是从小范围到大范围找
当前作用域<外层作用域<全局变量<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,仍存储在同一内存地址,只有引用过程,没有赋值过程

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容