定義
函數(shù)使用 def
定義
def func():
'''a funciton'''
pass
- 函數(shù)內(nèi)包含的第一段字符串稱為
docstring
鲤看,用于說(shuō)明函數(shù)的作用违柏。 - 在函數(shù)內(nèi)朝卒,可以直接引用(讀戎ぢ摺)函數(shù)外(全局變量)的值,但如果要對(duì)全局變量進(jìn)行賦值操作抗斤,需要先使用
global
聲明 - 對(duì)于傳到函數(shù)的參數(shù)囚企,如果時(shí)不可變類(lèi)型,傳遞的時(shí)變量的值瑞眼;對(duì)于可變類(lèi)型(數(shù)值)或 對(duì)象 傳遞的時(shí)引用(傳遞數(shù)值的變量名可以在函數(shù)內(nèi)直接修改數(shù)組的值)龙宏;
- 返回值:
- 如果
return
后面沒(méi)有表達(dá)式,則返回None
- 如果沒(méi)有
return
語(yǔ)句 伤疙,則返回None
- 否則银酗,返回
return
的計(jì)算結(jié)果
- 如果
方法和函數(shù)的區(qū)別:方法是屬于某中類(lèi)型的函數(shù)
在定義函數(shù)時(shí)的默認(rèn)值
# 設(shè)置默認(rèn)值 'hello'
def func(greeting='hello'):
pass
- 若默認(rèn)值是一個(gè)變量,則以函數(shù)定義是的值為準(zhǔn)
i = 5
def f(arg=i):
print(arg)
i = 6
f() # 函數(shù)arg的值依然為 5
- 對(duì)于可變類(lèi)型要注意徒像,默認(rèn)值只計(jì)算一次
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
# [1]
# [1, 2]
# [1, 2, 3]
調(diào)用函數(shù)時(shí)的 keyword argument
func(greeting='Hi')
位置參數(shù)要位于關(guān)鍵字參數(shù)之間
定義接受任意數(shù)量參數(shù)的函數(shù)
-
*
可以接受任意數(shù)量的參數(shù)(使用時(shí)相當(dāng)于元組) -
**
可以接受任意數(shù)量的關(guān)鍵字參數(shù)(使用時(shí)相當(dāng)于字典)
>>> 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
調(diào)用函數(shù)時(shí)的解包(unpacking)
-
*
在調(diào)用函數(shù)時(shí)可以用于解包元組或列表 -
**
在調(diào)用函數(shù)可以用于解包字典
>>> list(range(3, 6))
[3, 4, 5]
>>> args = [3, 6]
>>> list(range(*args)) # 把列表args的元素提取出來(lái)黍特,作為位置參數(shù)
[3, 4, 5]
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d) # 把字典d的鍵值對(duì)提取出來(lái),作為關(guān)鍵字參數(shù)
匿名函數(shù) lambda
格式:lambda 參數(shù):返回的表達(dá)式
>>> square = lambda x: x ** 2
>>> square(5)
25
>>>
DocString
DocString 的第一行用于簡(jiǎn)要地總結(jié)函數(shù)的作用(首字母大寫(xiě)锯蛀,結(jié)尾插入句號(hào))灭衷,然后空一行,接下來(lái)的可選描述如何調(diào)用函數(shù)旁涤,效果等待
DocString 可以通過(guò) functionName.__doc__
獲得