>>>L=[1,2]
>>>M=L
>>>L+=[3,4]
>>>L,M
([1,2,3,4], [1,2,3,4])
python中没有X++,X--的用法,由于python没有对于不可变对象在原处修改的概念,好比数字
print X等价于
import sys
sys.stdout.write(str(X)+'\n')
也能够把sys.stdout赋给标准输出流之外的东西,如
import sys
sys.stdout=open('log.txt', a) 则每一个print会重定向到文件log.txt末尾
甚至能够把sys.stdout赋值给一个对象,而由该对象的write方法处理文字
e.g class FileFaker:
def write(self,string):
#do something
import sys
sys.stdout=FileFaker()
print someObjects
或者 myobj=FileFaker()
print>>myobj, someObjects
布尔and和or运算会返回对象而不是值True或者False
or会停在第一个为真的操做对象
>>>2 or 3, 3 or 2
(2,3)
>>>[ ] or 3
3
>>>[ ] or { }
{ }
and会停在第一个为假的操做对象上
>>>2 and 3, 3 and 2
(3, 2)
>>>[ ] and { }
[ ]
if X:
A=Y
else:
A=Z
等价于 A =Y if X else Z
例如:
>>>A= ' t' if ' ' else 'f'
>>>A
'f'
还等价于A=[ Z, Y] [bool(X)] bool
A=((X and Y) or Z) 要保证Y为真,那么X为真时返回Y,X为假时返回Z
python不容许赋值语句出如今表达式中
C语言里 while((x=next())!=NULL ) { }不可用
python中会从左至右扫描对象的迭代工具备for 循环,列表解析,in成员关系测试,map内置函数等
全部迭代工具内部都是每次迭代调用next,并捕捉StopIteration异常来肯定什么时候离开。逐行读取文本的最佳效果就是不去读取,例如
for line in open('test.py'):
print line,
若是想在for循环中跳过一些元素能够使用range,也能够用分片来实现
S=‘abcde’
for i in range(0, len(S), 2) :
print S[i]
用分片实现 for x in S[: : 2] : print x,
对于大型文件,列表解析甚至比for要快
f=open('script.py')
lines=f.readlines()
lines=[lines.rstrip( ) for line in lines] #移除右侧换行符
或者不用读取 lines=[line.rstrip( ) for line in open('script.py')]
python中的迭代环境包括for循环, 列表解析,map内置函数,in成员关系测试表达式,内置函数sorted, sum, any,all, list, tuple, 字符串join方法, 序列赋值运算