函数深入
- 所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。
# -*- coding: utf-8 -*-
def fun(data):
data.append(1)
if __name__ == '__main__':
a = [0, ]
fun(a)
print a
结果:
[0, 1]
- 如果传入的参数不确定,用加了(*)的变量参数
# -*- coding: utf-8 -*-
def fun(*st):
print st
if __name__ == '__main__':
fun(0)
fun(0, 1, 2)
结果:
(0,)
(0, 1, 2)
匿名函数 lambda
python 使用 lambda 来创建匿名函数。
● lambda只是一个表达式,函数体比def简单很多。
● lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
● lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
● 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
结果:
相加后的值为 : 30
网友评论