Python-函数

定义函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
    1
    2
    3
    4
    def functionname( parameters ):
    "函数_文档字符串"
    function_suite
    return [expression]

函数参数

  • 必备参数
    必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
  • 默认参数
    设置默认参数时,有几点要注意: 1. 必选参数在前,默认参数在后,否则Python的解释器会报错; 2. 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
  • 可变参数
    加了星号()的变量名会存放所有未命名的变量参数。args是可变参数,args接收的是一个tuple;

    1
    2
    3
    4
    def functionname([formal_args,] *args ):
    "函数_文档字符串"
    function_suite
    return [expression
    1
    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
    2
    return 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
8
def funcF(a, **b):
print a
for x in b:
print x + ": " + str(b[x])
调用funcF(100, c='你好', b=200),执行结果
100
c: 你好
b: 200

递归函数

跟其他语言的没二样,不做说明。

唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!