以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话
2013-7-21 22:00 学习笔记
1,def是Python中的一个可执行语句——函数并不存在,直到Python运行了def后才存在。def创建了一个对象,并将其赋值给一个变量名,这个变量名就是函数名。def可以出现在任一语句可以出现的地方——甚至是嵌套在其他语句中。例如:
def times(x,y): return x*y print times(2,3) print times('mathboy',3)结果为:
6 mathboymathboymathboy
3,Python变量可以分为本地(def内部,除非用global声明)、全局(模块内部)、内置(预定义的__builtin__模块)。全局声明global会将变量名映射到模块文件内部的作用域。变量名的引用将依次查找本地、全局、内置变量。例如:
X = 99 def add(Y): Z = X + Y return Z print add(1)结果为:
100
X = 88 def func(): global X X = 99 func() print X输出结果为:
99再例如:
y,z = 1,2 def func(): global x x = y + z func() print x,y,z结果为:
3 1 2
# first.py X = 99 # second.py import first first.X = 88而应该这样做:
# first.py X = 99 def setX(new): global X X = new # second.py import first first.setX(88)
def f1(): x = 88 def f2(): print x f2() f1()结果为:
88
def maker(M): def action(X): return X**M return action f = maker(3) print f(2)输出结果为:
8
def fun(a,b=3): return a+b print fun(1,2) print fun(2)结果为:
3 5
9,def中还可以使用lambda表达式。例如:
def func(): x = 4 action = (lambda n: x**n) return action f = func() print f(3)输出结果为:
64
def func(a,b): a = 1 b.append(1) x = 0 y = [0] func(x,y) print x,y结果为:
0 [0, 1]
def set(a,b): a = 3.14 b = [1,2,3] return a,b x = 6.28 y = [4,5,6] x,y = set(x,y) print x print y输出结果为:
3.14 [1, 2, 3]
def fun(a,b,c): print a,b,c fun(1,c=3,b=2) fun(c=3,a=1,b=2)输出结果为:
1 2 3 1 2 3
def fun(a,b=2,c=3): print a,b,c fun(1,c=4)输出结果为:
1 2 4
def func(a, *pargs, **kargs): print a print pargs print kargs func(1,2,3,x=1,y=2)输出结果为:
1 (2, 3) {'y': 2, 'x': 1}
def func(a,b,c,d): print a,b,c,d func(*(1,2,3,4)) func(1,*(2,3),**{'d':4}) func(1,c=3,*(2,),**{'d':4})输出结果为:
1 2 3 4 1 2 3 4 1 2 3 4