python的def语句_【零基础学Python】def语句,参数和None值
像之前的print()、input()和len()功能,Python提供了一些類(lèi)似的內(nèi)置函數(shù),另外也可以自己編寫(xiě)自定義函數(shù)。
示例:
def hello():
print('Howdy!')
print('Howdy!!!')
print('Hello there.')
hello()
第一行是def語(yǔ)句,它定義了一個(gè)名為hello()的函數(shù)。def語(yǔ)句之后的代碼塊是函數(shù)的主體。該代碼是在調(diào)用函數(shù)時(shí)執(zhí)行,而不是在首次定義函數(shù)時(shí)執(zhí)行。
最后的hello()功能是函數(shù)調(diào)用。在代碼中,函數(shù)調(diào)用只是函數(shù)的名稱(chēng),后跟括號(hào),括號(hào)里面可能帶有一些參數(shù)。當(dāng)程序運(yùn)行到這些調(diào)用時(shí),它將跳到函數(shù)的第一行并在那里開(kāi)始執(zhí)行代碼。當(dāng)運(yùn)行到函數(shù)末尾時(shí),程序運(yùn)行將返回到調(diào)用函數(shù)的那一行,并像之前一樣繼續(xù)遍歷運(yùn)行代碼。
當(dāng)運(yùn)行該段程序時(shí),輸出如下:
Howdy!
Howdy!!!
Hello there.
帶有參數(shù)的DEF語(yǔ)句
調(diào)用print()或len()函數(shù)時(shí),可以通過(guò)在括號(hào)之間鍵入值來(lái)傳遞在此上下文中稱(chēng)為參數(shù)的值。還可以定義自己的接收參數(shù)的函數(shù)。
示例:
def hello(name):
print('Hello ' + name)
hello('Alice')
hello('Bob')
當(dāng)運(yùn)行該程序時(shí),輸出如下:
Hello Alice
Hello Bob
該hello()程序中函數(shù)的定義具有一個(gè)稱(chēng)為parameter的參數(shù)name。參數(shù)時(shí)一個(gè)變量,它被存儲(chǔ)在一個(gè)函數(shù)里被調(diào)用。第一次調(diào)用hello()函數(shù)時(shí),帶有參數(shù)’Alice'。程序運(yùn)行進(jìn)入函數(shù),變量name自動(dòng)設(shè)置為'Alice',然后通過(guò)print()輸出。
關(guān)于參數(shù)需要特別注意一點(diǎn),函數(shù)返回時(shí)會(huì)忘記存儲(chǔ)在參數(shù)中的值。舉個(gè)例子,如果在hello('Bob')之后加print(name),程序?qū)?huì)報(bào)錯(cuò),因?yàn)閚ame沒(méi)有被命名,而這個(gè)定義已經(jīng)在hello('Bob')被調(diào)用返回后被回收了。
返回值和返回語(yǔ)句
當(dāng)調(diào)用len()函數(shù)并將參數(shù)傳遞給'Hello',函數(shù)調(diào)用的結(jié)果為整數(shù)值5,即傳遞的字符串的長(zhǎng)度。通常,函數(shù)調(diào)用求值的值稱(chēng)為函數(shù)的返回值。
使用def語(yǔ)句創(chuàng)建函數(shù)時(shí),可以使用語(yǔ)句指定返回值return。一個(gè)return語(yǔ)句由以下部分組成:return關(guān)鍵字
函數(shù)應(yīng)返回的值或表達(dá)式
當(dāng)表達(dá)式與return語(yǔ)句一起使用時(shí),返回值就是該表達(dá)式的計(jì)算結(jié)果。例如,以下程序定義了一個(gè)函數(shù),該函數(shù)根據(jù)作為參數(shù)傳遞的數(shù)字返回一個(gè)不同的字符串。
import random
def getAnswer(answerNumber):
if answerNumber == 1:
return 'It is certain'
elif answerNumber == 2:
return 'It is decidedly so'
elif answerNumber == 3:
return 'Yes'
elif answerNumber == 4:
return 'Reply hazy try again'
elif answerNumber == 5:
return 'Ask again later'
elif answerNumber == 6:
return 'Concentrate and ask again'
elif answerNumber == 7:
return 'My reply is no'
elif answerNumber == 8:
return 'Outlook not so good'
elif answerNumber == 9:
return 'Very doubtful'
r = random.randint(1, 9)
fortune = getAnswer(r)
print(fortune)
該程序啟動(dòng)時(shí),Python首先導(dǎo)入random模塊。然后getAnswer()定義函數(shù),由于函數(shù)是已經(jīng)定義的,因此執(zhí)行將跳過(guò)其中的代碼。接下來(lái),random.randint(1, 9)函數(shù)調(diào)用有兩個(gè)參數(shù),1和9。它的計(jì)算結(jié)果是1和9之間(包括1和9本身)的隨機(jī)整數(shù),并且此值存儲(chǔ)在變量r中。
將該r作為參數(shù)的getAnswer()函數(shù)調(diào)用,程序運(yùn)行值getAnswer()函數(shù)的頭部,該值r存儲(chǔ)在參數(shù)answerNumber。然后,根據(jù)answerNumber判斷返回對(duì)應(yīng)的字符串值。程序運(yùn)行返回到程序最底部fortune = getAnswer(r),返回的字符串被賦值給了變量fortune,然后傳遞給print()調(diào)用,輸出。
請(qǐng)注意,由于可以將返回值作為參數(shù)傳遞給另一個(gè)函數(shù)調(diào)用,因此可以縮短以下三行:
r = random.randint(1,9)
fortune = getAnswer(r)
print(fortune)
等效于
print(getAnswer(random.randint(1,9)))
None值
在python中,有一個(gè)名為None的值,表示沒(méi)有值。None是NoneType數(shù)據(jù)類(lèi)型的唯一值。(其他編程語(yǔ)言則為null,nil或underfined)就像True和False,None的首字母必須大寫(xiě)
當(dāng)需要將不會(huì)與真實(shí)值混淆的內(nèi)容存儲(chǔ)在變量中時(shí),None會(huì)很有用。
比如:
>>> spam = print('Hello!')
Hello!
>>> None == spam
True
在Python中,在沒(méi)有return聲明的情況下將return None添加到任何函數(shù)定義的末尾。這類(lèi)似于while 或 for循環(huán)以continue語(yǔ)句隱式結(jié)束的方式。另外,如果使用return不帶值的情況,也會(huì)返回None。
關(guān)鍵字參數(shù)和PRINT()
大多數(shù)參數(shù)由他們?cè)诤瘮?shù)調(diào)用中的位置標(biāo)識(shí)。例如,random.randint(1, 10)與random.randint(10, 1)不同。函數(shù)調(diào)用random.randint(1, 10)將返回1和10之間的隨機(jī)整數(shù),因?yàn)榈谝粋€(gè)參數(shù)是范圍的低端,第二個(gè)參數(shù)是高端(而random.randint(10, 1)會(huì)導(dǎo)致錯(cuò)誤)
然而,關(guān)鍵字參數(shù)在函數(shù)調(diào)用中會(huì)被他們之前的關(guān)鍵字標(biāo)識(shí)。關(guān)鍵字參數(shù)也通常用于可選參數(shù)。
例如:
print('Hello',end ='')
print('World')
輸出:
HelloWorld
輸出被打印在一行上,因?yàn)樵谥蟛辉俅蛴⌒滦小疕ello',而是打印空白字符串,如果需要禁用每個(gè)print()函數(shù)調(diào)用末尾的換行符,這將很有用。
同樣,可以將多個(gè)字符串值傳遞給print(),該函數(shù)將自動(dòng)用空格分隔他們。
>>> print('cats', 'dogs', 'mice')
cats dogs mice
當(dāng)然,也可以通過(guò)傳遞關(guān)鍵字參數(shù)sep來(lái)替換默認(rèn)的分隔字符串。如:
>>> print('cats', 'dogs', 'mice', sep=',')
cats,dogs,mice
當(dāng)然你也可以在自定義函數(shù)中添加關(guān)鍵字參數(shù)。后面的文章將會(huì)涉及。
文檔:【零基礎(chǔ)學(xué)Python】def語(yǔ)句,參數(shù)和None值 - 掘金?juejin.im
總結(jié)
以上是生活随笔為你收集整理的python的def语句_【零基础学Python】def语句,参数和None值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java多线程并行执行命令_深入理解Ja
- 下一篇: python如何画出多个独立的图片_py