Du_wood 阅读(60) 评论(0)
#keys和iterkeys
#keys返回key列表,iterkeys返回迭代器
#pop	获取并移除给定键的值
d={'x':1,'y':2}
d.pop('x')
1
d
{'y':2}
#popitem	弹出随机一对键值
d.popitem()
#setdefault	和get类似,若有该键值,返回。否则,赋值一个
d={}
d.setdefault('name','N/A')
'N/A'
d
{'name':'N/A'}
d['name']='Gumby'
d.setdefault('name','N/A')
Gumby
d
{'name':'Gumby'}
#update 通过一个字典,修改字典
d={'a':'1','b':'2','c':'3'}
x={'a':'4'}
d.update(x)	#没有则添加,有则覆盖
d
d={'a':'4','b':'2','c':'3'}
#values和itervalues
#values返回值列表,itervalues返回迭代器

#打印多个表达式,多表达式之间会存在空格
print 'age',41,'name','asd'	#age 41 name asd
#多个变量
print a,b,c,'kakakka'
print a+',',b
#打印到单行,加个逗号,只在脚本中有效,交互式会话中每条语句都单独执行
print 'a',
print 'b'
pprint()	#智能换行,打印长文档

#导入
import somemodule
from somemodule import somefunction
from somemodule import a,b,c
from somemodule import *

#若多个模块都有open()函数,使用import somemodule方式,引用时
import somemodule
module1.open(...)
module2.open(...)
#或者使用as
import math as foobar
foobar.sqrt(4)
from math import sqrt as foobar
foobar(4)

#赋值技巧(序列解包),左右数量要一致,否则报错
x,y,z=1,2,3
print x,y,z
x,y=y,x
print x,y
v=1,2,3
x,y,z=v
print x
#字典
scoundrel1={'a':1,'b':2}
key,value=scoundrel1.popitem()
print key,value
#序列
a,b,rest*=[1,2,3,4]	#a为1,b为2,rest为[3,4]
#链式赋值,a和b指向同一个对象
a=b=somefun()
#增量赋值
a+=1
a*=2

#boolean 以下均解析为false
False None 0 '' () [] {}
#bool()可将其他值转换为Boolean,基本不需要
a=bool('asd')
print a

#基本语句
if ...:
	...
	...
elif ...:
	...
	...
else:
	...
	
while ...:
	...
	...
	
if not ...:
	...
	
name=''
while not name or name.isspace():
	name=raw_input('enter your name:')
print 'Hello %s'% name

#range(1,101)相当于[1,2...100],数量大时推荐用xrange().range(0,101,5)等于[0,5,10......100]
for number in range(1,101):
	print number
	
d={'a':1,'b':2,'c':3}
for key in d:
	print key,':',d[key]
	
for key,value in d.items():
	print key,':',value

#比较运算符:==	>=	<=	>	<	!=	is	is not	in	not in
#比较运算符可以连接使用
0<age<100

#断言
assert a<b '条件不满足,程序终止'

#迭代工具zip
names=['a','b','c','d']
ages[1,2,3,4]
zip(names,ages)	#值为[('a',1),('b',2),('c',3),('d',4)]
#names和ages可以不等长,当短的序列用完就会停止
for name,age in zip(names,ages)
	print name+',',age
#enumerate ,迭代索引-值对
for index,string in enumerate(string):
	if 'xxx' in string:
		string[index]='[censored]'
#sorted和reversed返回结果,不修改对象
sorted([4,3,6,8,3])
[3,3,4,6,8]
sorted('dbac')
['a','b','c','d']
list(reversed('dbac'))
['c','a','b','d']
''.join(list(reversed('dbac')))
'cabd'

#else子句
from math import sqrt
for n in range(99,81,-1):
	root=sqrt(n)
	if root==int(root):
		print n
		break
else:	#else子句仅在没有调用break时执行
	print "Didn`t find it!"
	
#列表推导式
[x*x for x in range(10)]
[x*x for x in range(10) if x%3==0]
[(x,y) for x in range(3) for y in range(3)]

girls=['alice','bernice','clarice']
boys=['chris','arnold','bob']
[b+'+'+g for b in boys for g in girls if b[0]==g[0]]	#列出首字母相同的boy和girl
#pass 占位符,什么也不做,为满足语法格式而生,可以使用文档字符串代替
#del
x=1
y=x
del x 	#只是删除变量,不会删除对象,对象会被python自动回收
y
1
#exec	执行字符串语句
exec "print 'aa'"
aa
exec "sqrt=1" in scope	#指定命名空间
#eval会计算表达式的值
eval(raw_input('Enter:'))
Enter:6+8*2
42
#作用域
scope={}
scope['x']=2
scope['y']=3
eval('x*y',scope)
6

scope={}
exec 'x=2' in scope
eval('x*x',scope)
4