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 *