字典
>>> aa={} >>> aa['wo']=[1,2,3,4] >>> aa['ni']=[5,6,7,8] >>> aa['zhang']=[20,'it','jp'] >>> aa['wu']=[30,'hr','cn'] >>> aa {'wo': [1, 2, 3, 4], 'ni': [5, 6, 7, 8], 'wu': [30, 'hr', 'cn'], 'zhang': [20, 'it', 'jp']}
遍历字典,将字典中的一个元素的key-value对分别打出 >>> for name,info in aa.items(): ... print name,info ... wo [1, 2, 3, 4] ni [5, 6, 7, 8] wu [30, 'hr', 'cn'] zhang [20, 'it', 'jp']
打出值(是一个列表)的第一个字段 >>> for name,info in aa.items(): ... print name,info[0] ... wo 1 ni 5 wu 30 zhang 20
遍历字典
>>> name
{'r': 12, 'b': 23}
>>> for k,v in name.items():
... print k,v
...
r 12
b 23
函数
这是第一个函数
[root@kvm1 python]# python fun1.py hello,wudealex,how are you? [root@kvm1 python]# cat fun1.py def sayHi(name): print "hello,%s,how are you?" %name n="wudealex" sayHi(n)
这是第二个函数 [root@kvm1 python]# cat fun2.py def sayHi(age): if age >20: print 'you are too old' else: print 'you are a young man' n=int(raw_input('please input your age!!! ')) sayHi(n) 正常情况 [root@kvm1 python]# python fun2.py please input your age!!! 23 you are too old [root@kvm1 python]# python fun2.py please input your age!!! 12 you are a young man 满足了基本功能 但却有三个主要问题 其一输入字符会报错并退出 其二不输入会报错并退出 其三不能循环等待用户输入,一次就退出 [root@kvm1 python]# python fun2.py please input your age!!! f Traceback (most recent call last): File "fun.py", line 7, in <module> n=int(raw_input('please input your age!!! ')) ValueError: invalid literal for int() with base 10: 'f' [root@kvm1 python]# python fun2.py please input your age!!! Traceback (most recent call last): File "fun.py", line 7, in <module> n=int(raw_input('please input your age!!! ')) ValueError: invalid literal for int() with base 10: ''
这是对第二个函数的改进版,解决了存留的bug [root@kvm1 python]# cat fun3.py def sayHi():
while True:
try:
age=int(raw_input('please input your 33[42;31m age 33[0m!!! '))
break
except ValueError:
print 'please input a 33[46;33m number 33[0m,not string.'
if age >20:
print 'you are a 33[41;32m old 33[0m man '
else:
print 'you are a 33[43;34m young 33[0m man'
sayHi()
[root@kvm1 python]# python fun3.py please input your age!!! please input a number,not string. please input your age!!! e please input a number,not string. please input your age!!! w please input a number,not string. please input your age!!! - please input a number,not string. please input your age!!! 12 you are a young man [root@kvm1 python]# python fun1.py please input your age!!! 34 you are too old
函数的默认参数, 即c=0 或空c='' import os def sshcmd(a,b,c): sh= 'ssh %s@%s %s' %(a,b,c) # print sh os.system(sh) user='root' host='192.168.10.103' cmd='hostname' sshcmd(user,host,cmd)
pickle模块
pickle序列化,不像文件,plk文件不需要转来转去,如果用文件来中转的话,需要遍历字典,还要输出到文件中,读的时候也较麻烦 所以pickle模块提供了一种中间物,方便共享数据。原样存,原样取。便于移植 定义 >>> import tab >>> import pickle >>> acc={} >>> acc['0987']=['a',15,14] >>> acc['0432']=['b',30,40] >>> acc {'0987': ['a', 15, 14], '0432': ['b', 30, 40]} >>> f =file('acc.pkl','wb') >>> pickle.dump(acc,f) >>> f.close() 假如pickle.dump后,又需要修改某个值, acc['0432'][0]='c' 这个时候如果再一次的 pickle.dump(acc,f),那么acc.pkl文件会有两组字典,所以会对load时产生混乱, 所以最好dump一次就close一次,再修改,再打开 取用 >>> pkl_file=open('acc.pkl','rb') >>> acc_info=pickle.load(pkl_file) >>> acc_info {'0987': ['a', 15, 14], '0432': ['b', 30, 40]}
re模块
>>> m=re.match(r'ni','ni hao') >>> print m.group() ni >>> m=re.match(r'ii','ni hao') >>> print m.group() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'NoneType' object has no attribute 'group' >>> p=re.compile(r'd+') >>> print p.split('one1two2three3four4') ['one', 'two', 'three', 'four', ''] >>> p=re.compile(r'D+') >>> print p.split('one1two2three3four4') ['', '1', '2', '3', '4']