6.1 字典
字典就是一个关联数组(或者称为哈希表)。它是通过关键字索引的对象的集合。使用大括号{}来创建一个字典。
print "字典" dic={ "username":"beazley", "home":"/home/beazley", "uid":500 } print dic uu=dic["username"] dd=dic["home"] print uu print dd dic["username"]="pxl" dic["home"]="/home/pxl" dic["shell"]="/usr/bin/tcsh" print dic
输出结果:
字典 {'username': 'beazley', 'home': '/home/beazley', 'uid': 500} beazley /home/beazley {'username': 'pxl', 'home': '/home/pxl', 'shell': '/usr/bin/tcsh', 'uid': 500}
尽管字符串是最常见的关键字(key)类型,有些对象,例如列表和字典,不可以用来做字典的key,应为他们的内容是允许更改的。还可以利用使用has_key()方法来检验一个键/值对是否存在(或者in操作符)。
if dic.has_key("username"): username=dic["username"] print username else: username="unknown user" print username #上面的操作还可以用更简单的方法完成 username=dic.get("username","unknown user") k=dic.keys() #k=["username","home","uid","shell"] print k #del语句可以删除字典中的特定元素 del dic["username"] print dic运行结果:
pxl ['username', 'home', 'shell', 'uid']
6.2 函数
在Python中使用def语句来创建函数。
# 函数 def divide(a,b): q=a/b r=a-q*b return (q,r) m,n=divide(1456,33) print m,n # Function body #print quotient,remainder def add(a=1,b=2): return a+b a=1000 b=2000 sum = add(a,b) print "sum=" + str(sum) # 重载函数 print add() print add(2) print add(b=2) print add(3,4) #局部变量和全局变量 val =100 def fun(): print val print val def fun(): a=100 print a print a fun() print a #其它参数 def fun(x): print x # int fun(100) #string fun('python') fun("python") #元组 fun(('x',2,4,5)) #列表 fun([1,2,3]) #字典 fun({1:1,2:2,3:3}) ##tuple def fun(x,y): print "%s:%s" %(x,y) fun('zhejiang','gongshang') tu=('zhejiang','gongshang') fun(*tu) def fun(x,*args): print x print args fun(10) fun(10,12,13) # 字典 def fun(x,**args): print x print args fun(10) fun(x=10,y=12,z=15) #混合元组和字典 def fun(x,*args,**kwargs): print x print args print kwargs fun(1,2,3,4,y=10,z=12)运行结果:
>>> 44 4 sum=3000 3 4 3 7 100 1000 100 1000 100 python python ('x', 2, 4, 5) [1, 2, 3] {1: 1, 2: 2, 3: 3} zhejiang:gongshang zhejiang:gongshang 10 () 10 (12, 13) 10 {} 10 {'y': 12, 'z': 15} 1 (2, 3, 4) {'y': 10, 'z': 12}
6.3 类(class)
Python支持面向对象的编程,在面向对象的编程中,class语句用于定义新类型的对象。
#下面这个类定义了一个简单的栈 class Stack(object): def _init_(self): self.stack =[ ] def push(self,object): self.stack.append(object) def pop(self): return self.stack.pop() def length(self): return len(self.stack)
当你的程序变得越来越大,为了便于修改和维护,可以把分割成多个相关的文件。Python运行你把函数定义或者公共部分放入一个文件,然后在其他程序或者脚本中将该文件作为一个模块导入。要创建一个模块,把相应的语句和定义放入一个文件,这个文件名就是模块名。
# file: div.py def divide(a,b): q=a/b r=a-q*b return (q,r)
要在其它的程序中使用这个模块:要使用import语句:
import div a,b=div.divide(123,456)
import语句创建一个新的名字空间,该空间包含模块中所有定义对象的名称。要访问这个名字空间,把模块名作为一个前缀来使用这个模块内的对象。
但是如果你希望使用一个不同的模块名来访问这个模块,给import语句加上一个as模块名部分就可以啦。
import div as foo a,b=foo.divide(2305,29) print a print b
import div import *