Python筆記4(函數(shù))

  • Tip

Tip1: 設(shè)置循環(huán)的最大循環(huán)次數(shù)

sys.setrecursionlimit(1000)

Tip2: 函數(shù)返回多個值,返回的類型為一個元組督惰,包含返回的多個值,接收返回值的時候醉锄,可以定義多個變量來接收元組中的值州既,避免使用元組的下標(biāo)來取返回值。

  • 序列解包:元素的個數(shù)要相等
a = 1, 3, 4
print(type(a))
# <class 'tuple'>

a1, a2, a3 = a

函數(shù)的參數(shù)

  • 必須參數(shù):
  1. 必須傳入的參數(shù)
  • 默認參數(shù):
  1. 變化小的參數(shù)可以設(shè)置為默認參數(shù)羔巢,給定默認值望忆,調(diào)用時可以不用傳入默認參數(shù),使用默認值
  2. 必選參數(shù)在前竿秆,默認參數(shù)在后
  3. 調(diào)用時启摄,如果不按順序提供默認值的時候,需要把參數(shù)名寫上
enroll('Adam', 'M', city='Tianjin')
  1. ==默認參數(shù)必須指向不變對象幽钢!==
def add_end(L=[]):
    L.append('END')
    return L

>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END']

Python函數(shù)在定義的時候歉备,默認參數(shù)L的值就被計算出來了,即[]匪燕,因為默認參數(shù)L也是一個變量蕾羊,它指向?qū)ο骩],
每次調(diào)用該函數(shù)帽驯,如果改變了L的內(nèi)容龟再,則下次調(diào)用時,默認參數(shù)的內(nèi)容就變了尼变,不再是函數(shù)定義時的[]了利凑。
  • 可變參數(shù):==允許傳入0個或多個參數(shù),自動組裝為一個tuple==
  1. 如果不用可變參數(shù)嫌术,需要將參數(shù)設(shè)置為一個list或者tuple:
def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

>>> calc([1, 2, 3])
14
>>> calc((1, 3, 5, 7))
84

可以簡化成這樣:
>>> calc(1, 2, 3)
14
>>> calc(1, 3, 5, 7)
84
  1. ==使用可變參數(shù)哀澈,在可變參數(shù)前加*,就成為了可變參數(shù)度气,調(diào)用時也可以簡化傳入==
def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

>>> calc(1, 2)
5
>>> calc()
0

如果已經(jīng)有一個list或者tuple日丹,在list或tuple前面加一個*號,把list或tuple的元素變成可變參數(shù)傳進去:

>>> nums = [1, 2, 3]
>>> calc(*nums)
14
  • 關(guān)鍵字參數(shù):==傳入0個或任意個含參數(shù)名的參數(shù)蚯嫌,函數(shù)內(nèi)部自動組裝為一個dict==
  1. **kw
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
  1. 先組裝出一個dict哲虾,然后丙躏,把該dict轉(zhuǎn)換為關(guān)鍵字參數(shù)傳進去:
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

**extra表示把extra這個dict的所有key-value用關(guān)鍵字參數(shù)傳入到函數(shù)的**kw參數(shù),kw將獲得一個dict束凑,
注意kw獲得的dict是extra的一份拷貝晒旅,對kw的改動不會影響到函數(shù)外的extra。

  • 命名關(guān)鍵字參數(shù):
  1. 為了限制關(guān)鍵字參數(shù)只能傳入哪幾個關(guān)鍵字參數(shù)汪诉,用命名關(guān)鍵字參數(shù)废恋。
  2. 命名關(guān)鍵字參數(shù)需要一個特殊分隔符后面的參數(shù)被視為命名關(guān)鍵字參數(shù)扒寄。
def person(name, age, *, city, job):
    print(name, age, city, job)
    
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer
  1. 如果中間有可變參數(shù)鱼鼓,則不需要用*來分割了。
  2. 命名關(guān)鍵字參數(shù)可以給出默認值
def person(name, age, *, city='Beijing', job):
    print(name, age, city, job)
參數(shù)定義的順序

==必選參數(shù)==该编、==默認參數(shù)==迄本、==可變參數(shù)==、==命名關(guān)鍵字參數(shù)==课竣、==關(guān)鍵字參數(shù)==

對于任意函數(shù)嘉赎,都可以通過類似func(*args, **kw)的形式調(diào)用它

def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
    
>>> args = (1, 2, 3, 4)
>>> kw = {'d': 99, 'x': '#'}
>>> f1(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
>>> args = (1, 2, 3)
>>> kw = {'d': 88, 'x': '#'}
>>> f2(*args, **kw)
a = 1 b = 2 c = 3 d = 88 kw = {'x': '#'}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市于樟,隨后出現(xiàn)的幾起案子公条,更是在濱河造成了極大的恐慌,老刑警劉巖迂曲,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靶橱,死亡現(xiàn)場離奇詭異,居然都是意外死亡路捧,警方通過查閱死者的電腦和手機抓韩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鬓长,“玉大人谒拴,你說我怎么就攤上這事∩娌ǎ” “怎么了英上?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啤覆。 經(jīng)常有香客問我苍日,道長,這世上最難降的妖魔是什么窗声? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任相恃,我火速辦了婚禮,結(jié)果婚禮上笨觅,老公的妹妹穿的比我還像新娘拦耐。我一直安慰自己耕腾,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布扫俺。 她就那樣靜靜地躺著,像睡著了一般固翰。 火紅的嫁衣襯著肌膚如雪狼纬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天骂际,我揣著相機與錄音疗琉,去河邊找鬼。 笑死歉铝,一個胖子當(dāng)著我的面吹牛盈简,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播犯戏,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼送火,長吁一口氣:“原來是場噩夢啊……” “哼拳话!你這毒婦竟也來了先匪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弃衍,失蹤者是張志新(化名)和其女友劉穎呀非,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镜盯,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡岸裙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了速缆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片降允。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖艺糜,靈堂內(nèi)的尸體忽然破棺而出剧董,到底是詐尸還是另有隱情,我是刑警寧澤破停,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布翅楼,位于F島的核電站,受9級特大地震影響真慢,放射性物質(zhì)發(fā)生泄漏毅臊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一黑界、第九天 我趴在偏房一處隱蔽的房頂上張望管嬉。 院中可真熱鬧皂林,春花似錦、人聲如沸宠蚂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽求厕。三九已至著隆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呀癣,已是汗流浹背美浦。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留项栏,地道東北人浦辨。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像沼沈,于是被迫代替她去往敵國和親流酬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第5章 函數(shù)和函數(shù)式編程 5.1 引言函數(shù)是組織好的列另,可重復(fù)使用的芽腾,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段页衙。函數(shù)...
    VIVAFT閱讀 959評論 0 5
  • Python 是一種相當(dāng)高級的語言摊滔,通過 Python 解釋器把符合語法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機器碼...
    Python程序媛閱讀 1,906評論 0 3
  • python函數(shù)的參數(shù)是目前見過最復(fù)雜的參數(shù)了。 C語言里用的最多的可變參數(shù)函數(shù)就是scanf和printf了店乐,j...
    米耳閱讀 355評論 0 0
  • 記得小時候玩過年的時候眨八,村里經(jīng)常會有在外面工作的人回家過年腺兴,然后就會被議論,說看張三家的小張廉侧,一看就知道是見過世面...
    A低調(diào)閱讀 331評論 3 2
  • 文/呂桑榆 今何在的《悟空傳》翻拍的消息一放出页响,便飽受爭議。網(wǎng)評兩極分化伏穆,一些網(wǎng)友表示:“電影拍不出那種氣勢拘泞,希望...
    呂桑榆閱讀 803評論 0 7