定义
函数使用 def
定义
def func():
'''a funciton'''
pass
- 函数内包含的第一段字符串称为
docstring
,用于说明函数的作用。 - 在函数内,可以直接引用(读取)函数外(全局变量)的值,但如果要对全局变量进行赋值操作,需要先使用
global
声明 - 对于传到函数的参数,如果时不可变类型,传递的时变量的值;对于可变类型(数值)或 对象 传递的时引用(传递数值的变量名可以在函数内直接修改数组的值);
- 返回值:
- 如果
return
后面没有表达式,则返回None
- 如果没有
return
语句 ,则返回None
- 否则,返回
return
的计算结果
- 如果
方法和函数的区别:方法是属于某中类型的函数
在定义函数时的默认值
# 设置默认值 'hello'
def func(greeting='hello'):
pass
- 若默认值是一个变量,则以函数定义是的值为准
i = 5
def f(arg=i):
print(arg)
i = 6
f() # 函数arg的值依然为 5
- 对于可变类型要注意,默认值只计算一次
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
# [1]
# [1, 2]
# [1, 2, 3]
调用函数时的 keyword argument
func(greeting='Hi')
位置参数要位于关键字参数之间
定义接受任意数量参数的函数
-
*
可以接受任意数量的参数(使用时相当于元组) -
**
可以接受任意数量的关键字参数(使用时相当于字典)
>>> def func(*args, **kwargs):
... print('args: ', end='')
... for arg in args:
... print(arg, end=' ')
... else:
... print()
... for k, v in kwargs.items():
... print(k, v)
...
>>> func('a', 'b', 'c', Tom=18, John=20)
args: a b c
Tom 18
John 20
调用函数时的解包(unpacking)
-
*
在调用函数时可以用于解包元组或列表 -
**
在调用函数可以用于解包字典
>>> list(range(3, 6))
[3, 4, 5]
>>> args = [3, 6]
>>> list(range(*args)) # 把列表args的元素提取出来,作为位置参数
[3, 4, 5]
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d) # 把字典d的键值对提取出来,作为关键字参数
匿名函数 lambda
格式:lambda 参数:返回的表达式
>>> square = lambda x: x ** 2
>>> square(5)
25
>>>
DocString
DocString 的第一行用于简要地总结函数的作用(首字母大写,结尾插入句号),然后空一行,接下来的可选描述如何调用函数,效果等待
DocString 可以通过 functionName.__doc__
获得