以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