定义函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
1
2
3
4def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
函数参数
- 必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 - 默认参数
设置默认参数时,有几点要注意: 1. 必选参数在前,默认参数在后,否则Python的解释器会报错; 2. 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。 可变参数
加了星号()的变量名会存放所有未命名的变量参数。args是可变参数,args接收的是一个tuple;1
2
3
4def functionname([formal_args,] *args ):
"函数_文档字符串"
function_suite
return [expression1
2
3
4
5
6
7
8
9
10
11
12# 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return;
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );
Return语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。
- 返回多个值
1
2return x, y, z
# 和 return (x, y, z) 一样
函数可以同时返回多个值,看似是返回了多个值,但其实就是一个tuple。
匿名函数
python 使用 lambda 来创建匿名函数。
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
1
2
3
4
5
6# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2;
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )
关键字lambda表示匿名函数,冒号前面的arg1, arg2表示函数参数。
关键字参数
允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。**kw是关键字参数,kw接收的是一个dict。1
2
3
4
5
6
7
8def funcF(a, **b):
print a
for x in b:
print x + ": " + str(b[x])
调用funcF(100, c='你好', b=200),执行结果
100
c: 你好
b: 200
递归函数
跟其他语言的没二样,不做说明。