本节书摘来自异步社区《Python参考手册(第4版•修订版)》一书中的第1章,第1.11节,作者David M. Beazley,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.11 函数
使用def语句可以创建函数,如下例所示:
def remainder(a,b):
q = a // b # //是截断除法运算符
r = a – q*b
return r
要调用函数,只要使用函数名加上用圆括号括起来的参数即可,如result = remainder(37, 15)。如果要让函数返回多个值,可以使用元组,如下所示:
def divide(a,b):
q = a // b # 如果a和b是整数,q就是整数
r = a – q*b
return (q,r)
使用元组返回多个值时,可以很容易地将结果解包到单独的变量中,例如:
quotient, remainder = divide(1456,33)
要给函数参数提供一个默认值,可使用以下赋值方式:
def connect(hostname,port,timeout=300):
# 函数体
在函数定义中给一个参数提供默认值以后,调用此函数时就可以省略该参数,此时该参数将使用默认值,如下所示:
connect('www.python.org', 80)
还可以使用关键字参数调用函数,此时可以按任意顺序提供参数,但这需要你知道函数定义中的参数名称,如下所示:
connect(port=80,hostname="www.python.org")
在函数中创建变量或给变量赋值时,该变量的作用域是局部的。也就是说,该变量只定义在函数体内部,而且当函数返回值后会立即销毁该变量。要在函数内部修改某个全局变量的值,可以使用global语句,如下所示:
count = 0
...
def foo():
global count
count += 1 # 更改全局变量count