python函數(shù)學(xué)習(xí)

要調(diào)用一個(gè)函數(shù),需要知道函數(shù)的名稱(chēng)和參數(shù)筝蚕,比如求絕對(duì)值的函數(shù)abs锄列,只有一個(gè)參數(shù)∥锱纾可以直接從Python的官方網(wǎng)站查看文檔:

http://docs.python.org/3/library/functions.html#abs

函數(shù)名其實(shí)就是指向一個(gè)函數(shù)對(duì)象的引用卤材,完全可以把函數(shù)名賦給一個(gè)變量,相當(dāng)于給這個(gè)函數(shù)起了一個(gè)“別名”

a = abs#變量a指向了abs函數(shù)
print(a(-3))

十六進(jìn)制轉(zhuǎn)換

n1 = 255
print(hex(n1))

在Python中峦失,定義一個(gè)函數(shù)要使用def語(yǔ)句扇丛,依次寫(xiě)出函數(shù)名、括號(hào)尉辑、括號(hào)中的參數(shù)和冒號(hào):帆精,然后,在縮進(jìn)塊中編寫(xiě)函數(shù)體隧魄,函數(shù)的返回值用return語(yǔ)句返回卓练。

def my_abs(x):
    if x >=0:
        return x
    else:
        return -x
print(my_abs(6))

空函數(shù)

如果想定義一個(gè)什么事也不做的空函數(shù),可以用pass語(yǔ)句:

def nop():
pass

pass語(yǔ)句什么都不做购啄,那有什么用襟企?實(shí)際上pass可以用來(lái)作為占位符,比如現(xiàn)在還沒(méi)想好怎么寫(xiě)函數(shù)的代碼闸溃,就可以先放一個(gè)pass整吆,讓代碼能運(yùn)行起來(lái)。

pass還可以用在其他語(yǔ)句里辉川,比如:

if age >= 18:
pass

缺少了pass表蝙,代碼運(yùn)行就會(huì)有語(yǔ)法錯(cuò)誤

函數(shù)返回多個(gè)值:

import math#導(dǎo)入math包
def move(x,y,step,angele = 0):
    nx = x + step * math.cos(angele)
    ny = y - step * math.sin(angele)
    return nx , ny

print(move(25,26,45))
定義函數(shù)時(shí),需要確定函數(shù)名和參數(shù)個(gè)數(shù)乓旗;

如果有必要府蛇,可以先對(duì)參數(shù)的數(shù)據(jù)類(lèi)型做檢查;

函數(shù)體內(nèi)部可以用return隨時(shí)返回函數(shù)結(jié)果屿愚;

函數(shù)執(zhí)行完畢也沒(méi)有return語(yǔ)句時(shí)汇跨,自動(dòng)return None务荆。

函數(shù)可以同時(shí)返回多個(gè)值,但其實(shí)就是一個(gè)tuple

設(shè)置默認(rèn)參數(shù)時(shí)穷遂,有幾點(diǎn)要注意:

一是必選參數(shù)在前函匕,默認(rèn)參數(shù)在后,否則Python的解釋器會(huì)報(bào)錯(cuò)(思考一下為什么默認(rèn)參數(shù)不能放在必選參數(shù)前面)蚪黑;
二是如何設(shè)置默認(rèn)參數(shù)盅惜。
當(dāng)函數(shù)有多個(gè)參數(shù)時(shí),把變化大的參數(shù)放前面忌穿,變化小的參數(shù)放后面抒寂。變化小的參數(shù)就可以作為默認(rèn)參數(shù)。
使用默認(rèn)參數(shù)有什么好處掠剑?最大的好處是能降低調(diào)用函數(shù)的難度屈芜。

默認(rèn)函數(shù)參數(shù)的使用

def setInfo(name,sex,age = '9',city = '濟(jì)南'):
print('name:',name)
print('sex:',sex)
print('age:',age)
print('city:',city)

print(setInfo('java','好'))
print(setInfo('ptyhon','見(jiàn)'))

關(guān)鍵字參數(shù)

可變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple朴译。而關(guān)鍵字參數(shù)允許你傳入0個(gè)或任意個(gè)含參數(shù)名的參數(shù)井佑,這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict。請(qǐng)看示例

def person(name,age,**er):
print('name',name,'age',age,'other',er)

print(person('java',16,city = '濟(jì)南',sex = 'nan'))

命名關(guān)鍵字參數(shù)

和關(guān)鍵字參數(shù)kw不同动分,命名關(guān)鍵字參數(shù)需要一個(gè)特殊分隔符毅糟,后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。

如果函數(shù)定義中已經(jīng)有了一個(gè)可變參數(shù)澜公,后面跟著的命名關(guān)鍵字參數(shù)就不再需要一個(gè)特殊分隔符*了:

使用命名關(guān)鍵字參數(shù)時(shí)姆另,要特別注意,如果沒(méi)有可變參數(shù)坟乾,就必須加一個(gè)作為特殊分隔符迹辐。如果缺少,Python解釋器將無(wú)法識(shí)別位置參數(shù)和命名關(guān)鍵字參數(shù):

參數(shù)組合

在Python中定義函數(shù)甚侣,可以用必選參數(shù)明吩、默認(rèn)參數(shù)、可變參數(shù)殷费、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù)印荔,這5種參數(shù)都可以組合使用。但是請(qǐng)注意详羡,參數(shù)定義的順序必須是:必選參數(shù)仍律、默認(rèn)參數(shù)、可變參數(shù)实柠、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)水泉。

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

在函數(shù)內(nèi)部,可以調(diào)用其他函數(shù)。如果一個(gè)函數(shù)在內(nèi)部調(diào)用自身本身草则,這個(gè)函數(shù)就是遞歸函數(shù)钢拧。

#計(jì)算1*2*3*4*....*n的值
def fact(n):
    if n == 1:
        return 1
    return n * fact(n-1)

print(fact(100))

使用遞歸函數(shù)的優(yōu)點(diǎn)是邏輯簡(jiǎn)單清晰,缺點(diǎn)是過(guò)深的調(diào)用會(huì)導(dǎo)致棧溢出炕横。針對(duì)尾遞歸優(yōu)化的語(yǔ)言可以通過(guò)尾遞歸防止棧溢出源内。尾遞歸事實(shí)上和循環(huán)是等價(jià)的,沒(méi)有循環(huán)語(yǔ)句的編程語(yǔ)言只能通過(guò)尾遞歸實(shí)現(xiàn)循環(huán)份殿。Python標(biāo)準(zhǔn)的解釋器沒(méi)有針對(duì)尾遞歸做優(yōu)化姿锭,任何遞歸函數(shù)都存在棧溢出的問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伯铣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轮纫,更是在濱河造成了極大的恐慌腔寡,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掌唾,死亡現(xiàn)場(chǎng)離奇詭異放前,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)糯彬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)凭语,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人撩扒,你說(shuō)我怎么就攤上這事似扔。” “怎么了搓谆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵炒辉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我泉手,道長(zhǎng)黔寇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任斩萌,我火速辦了婚禮缝裤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颊郎。我一直安慰自己憋飞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布袭艺。 她就那樣靜靜地躺著搀崭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘤睹,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天升敲,我揣著相機(jī)與錄音,去河邊找鬼轰传。 笑死驴党,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的获茬。 我是一名探鬼主播港庄,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恕曲!你這毒婦竟也來(lái)了鹏氧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤佩谣,失蹤者是張志新(化名)和其女友劉穎把还,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體茸俭,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吊履,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了调鬓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艇炎。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腾窝,靈堂內(nèi)的尸體忽然破棺而出缀踪,到底是詐尸還是另有隱情,我是刑警寧澤虹脯,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布辜贵,位于F島的核電站,受9級(jí)特大地震影響归形,放射性物質(zhì)發(fā)生泄漏托慨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一暇榴、第九天 我趴在偏房一處隱蔽的房頂上張望厚棵。 院中可真熱鬧,春花似錦蔼紧、人聲如沸婆硬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彬犯。三九已至向楼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谐区,已是汗流浹背湖蜕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宋列,地道東北人昭抒。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像炼杖,于是被迫代替她去往敵國(guó)和親灭返。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • Python 是一種相當(dāng)高級(jí)的語(yǔ)言坤邪,通過(guò) Python 解釋器把符合語(yǔ)法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機(jī)器碼...
    Python程序媛閱讀 1,892評(píng)論 0 3
  • http://python.jobbole.com/85231/ 關(guān)于專(zhuān)業(yè)技能寫(xiě)完項(xiàng)目接著寫(xiě)寫(xiě)一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,557評(píng)論 1 118
  • 函數(shù)名其實(shí)就是指向一個(gè)函數(shù)對(duì)象的引用熙含,完全可以把函數(shù)名賦給一個(gè)變量,相當(dāng)于給這個(gè)函數(shù)起了一個(gè)“別名”:a = ab...
    bjchenli閱讀 612評(píng)論 0 0
  • 中午吃太飽了艇纺,想著隨便畫(huà)幾下再去休息婆芦,結(jié)果一畫(huà)就停不下來(lái)了,一站就站了三個(gè)小時(shí)三個(gè)小時(shí)拔辜ⅰ!因?yàn)樘栂胫疽幌鲁辏?..
    清淡如水12閱讀 242評(píng)論 3 5