1、在python2.6总nonlocal不可用
2、python中还是可以出现";"的,例如:x = 3 ; y = 5 ; print(x+y)
3、python中的集中赋值:
spam = 'spam' #简单赋值
spam,ham = 'yun','YNN' #元祖赋值运算
['spam','ham'] = ['yun','YUM'] #列表赋值运算
a,b,c,d = 'spam' #序列赋值运算
a,*b= 'spam' #扩展序列解包
spam=ham='lunch' #多目标赋值
spam += 412 #增强赋值运算
3、序列赋值,
[a,b,c]=(1,2,3)
(a,b,c)="abc"
[a,b,c]='abc'
但是当两侧数目不一致时会报错。
4、当两侧数目不一致时,序列解包可以解决这个问题
seq = [1,2,3,4]
a,*b = seq
print(a,b) #输出:1,[2,3,4]
*a,b = seq
print(a,b) #输出:[1,2,3],4
a,*b,c = seq
print(a,b,c) #输出:1,[2,3],4
序列解包对任何序列都有效:
a,*b = 'spam' #输出:s,pam
如果没有剩下的内容给带星号的名称,则会赋值一个空的列表
a,b,c,d,*e = seq #输出:1,2,3,4,[]
a,b,*c,d,e = seq #输出1,2,[],3,4
#a,*b,c,*d=seq将会报错
#*a = seq 将会报错
*a, = seq
5、案例分析
a = b = 0
b = b+1
print(a,b) #0,1
#修改b只对b有影响,
6、列表的+和增强运算+=是有区别的,其中调用列表的extend的方法和增强+=效果一样。+=是在原处修改,而+是新建一个新的列表
L = [1,2,3,4]
t = [[1,2,3,4,5,6,7]]
k = L+t
print(k) #输出[1,2,3,4,[1,2,3,4,5,6,7]]
t[0][0] = -100
print(k) #输出[1,2,3,4,[1,2,3,4,5,6,7]]
L = [1,2,3,4]
t = [[1,2,3,4,5,6,7]]
L+=t
print(L) #输出:[1, 2, 3, 4,[ 1, 2, 3, 4, 5, 6, 7]]
t[0][0]=-100
print(L) #输出:[1, 2, 3, 4, [-100, 2, 3, 4, 5, 6, 7]]
L = [1,2,3,4]
t = [[1,2,3,4,5,6,7]]
L.extend(t)
print(L) #输出:[1, 2, 3, 4,[ 1, 2, 3, 4, 5, 6, 7]]
t[0][0]=-100
print(L) #输出:[1, 2, 3, 4, [-100, 2, 3, 4, 5, 6, 7]]
另外一个例子:
L = [1,2]
M = L
L = L + [3,4]
print(L,M) #输出:[1,2,3,4],[1,2]
L = [1,2]
M = L
L.extend([3,4]) #或者L+=[3,4]
print(L,M) #输出:[1,2,3,4][1,2,3,4]
7、命名规则
单下划线开头不会被from module import * 导入 例如:_x
前后都有双下划线的是系统定义变量 例如:__doc__
前面有两个下划线,但是后面没有下划线的是类本地变量
8、python3.0中的语法
print([object][,sep=' '][,end='\n'][,file=sys.stdout]) #等号后面都是默认值
9、python2.6中
print x,y 等效于 print(x,y)
print x,y, 等效于print(x,y,end='' #表示消除末尾的换行符
print >>myfile x,y 等效于 print(x,y,file=myfile)
如果想消除各个元素间的分隔符可以通过+或者格式化表示
print x+y 或者 '%s%s'%(x,y)
10、print(x)等价于 如下
import sys
sys.stdout.write(str(x)+'\n')
11、可以设置sys.stdout为文件,例如:
import sys
temp = sys.stdout #保存下来,方便以后调换过来
sys.stdout = open(r'f:/python/tsst.txt') #或者 print(x,y,file=(open(r'f:/python/test.txt')))
print('hello,worl')
print(1,2,3)
sys.stdout.close()
sys.stdout = temp #又切换为原来
print('hello,worl')
print(1,2,3)
12、错误信息也可以重定向
import sys
sys.stderr.write('bad'*8+'\n')
或者print('bad'*8,file=sys.stderr)