函数
def func(参数):
““”func的描述“”“
print(func) #函数体
return #函数内执行到return代表结束,可有返回值,也可以没有返回值,是函数执行的结果
print(‘func’) #永远看不到这一行
”“”以上只是函数的定义“”“
func() # 代表调用函数,返回函数的执行结果
func #代表函数对象,是引用函数
在函数内return的返回值可以进行赋值操作
定义函数是在内存中开辟一块空间来存放代码,函数名指向这块内存空间,但是没有执行,加上()后执行该代码,
return的内容为函数的执行的结果,没有return,结果为None,函数执行结果和print没有关系,print 只代表打印。
def func(first,second):
return first+second
a1 = func(4,5)
print a1
a2 = func
print func
print a2
print a2(3,4)
执行结果:
9
<function func at 0x7f38bca44c80>
<function func at 0x7f38bca44c80>
7
可变量参数
参数可以有多个,也可以没有
def func(arg1,*args,**kw): #参数名称前加*,代表元组;加**代表字典
print('arg1:%s' % arg1)
print args
print kw
func('A','B','C',D=1,E=2)
结果:
arg1:A
('B', 'C')
{'E': 2, 'D': 1}
def func(name,age=10): #参数的默认值
pass
匿名函数
Lambda是一个匿名函数,没有函数名,可以使代码更精简,但是具有局限性。
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边是返回值。
Reduce
Reduce为逐次操作列表的每一项,接受的参数为两个,最后返回一个结果。
闭包closures
函数套函数
import time
def hl(func):
def wrap():
begin = int(time.time())
print begin
func()
end = int(time.time())
print end
print "cost:",end - begin
return end - begin
return wrap
def t():
time.sleep(1)
hl(t)()
装饰器
函数执行前扩展一些函数、执行后扩展一些函数
import time
def hl(func):
def wrap():
begin = int(time.time())
print begin
func()
end = int(time.time())
print end
print "cost:",end - begin
return end - begin
return wrap
@hl
def t():
time.sleep(1)
t()
##############################
def mb(func):
def wrap():
return '<b>' + func() + '</b>'
return wrap
def mi(func):
def wrap():
return '<i>' + func() + '</i>'
return wrap
@mb
@mi
def hello():
return('hello')
print(hello())