1. 簡單函數(shù)聲明
def greet_user():
'''顯示簡單的問候語'''
print("Hello!")
greet_user()
2. 形參和實參
- 參數(shù)傳遞有2種,關(guān)鍵字傳遞和位置傳遞,注意,2者不能混合使用,否則會提示
Positional argument cannot appear after keyword arguments
- 關(guān)鍵字實參是傳遞給函數(shù)的名稱—值對。你直接在實參中將名稱和值關(guān)聯(lián)起來了,
def greet_user(username):
'''顯示簡單的問候語'''
print(f"Hello, {username.title()}")
greet_user(username="Hang")
3. 參數(shù)默認(rèn)值
- 編寫函數(shù)時,可給每個形參指定默認(rèn)值。在調(diào)用函數(shù)中給形參提供了實參時,Python將使用指定的實參值;否則,將使用形參的默認(rèn)值。
- 注意,當(dāng)使用位置傳遞參數(shù)的時候,一定要注意默認(rèn)值參數(shù)也是占用位置的。不要以為沒有傳遞參數(shù),所以這個位置可以放空。所以一般默認(rèn)值參數(shù)都在最后面。
def describe_pet(pet_name, animal_type='dog'):
4. 傳遞任意數(shù)量的參數(shù)
- Python將實參封裝到一個元組中,即便函數(shù)只收到一個值也如此。在函數(shù)內(nèi)部的,可以通過toppings數(shù)組來訪問傳遞的參數(shù)。
def make_pizza(*toppings):
'''打印顧客點(diǎn)的所有配料'''
print(toppings)
make_pizza('peperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
- 函數(shù)定義中將接納任意數(shù)量實參的形參放在最后。Python先匹配位置實參和關(guān)鍵字實參,再將余下的實參都收集到最后一個形參中。
- 注意,只能通過位置傳遞參數(shù)
def make_pizza(size, *toppings):
'''打印顧客點(diǎn)的所有配料'''
print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")
for topping in toppings:
print("- " + topping)
make_pizza(6, 'peperoni')
make_pizza(7, 'mushrooms', 'green peppers', 'extra cheese')
- 有時候,需要接受任意數(shù)量的實參,但預(yù)先不知道傳遞給函數(shù)的會是什么樣的信息。在這種情況下,可將函數(shù)編寫成能夠接受任意數(shù)量的鍵—值對——調(diào)用語句提供了多少就接受多少。
- 一個這樣的示例是創(chuàng)建用戶簡介:你知道你將收到有關(guān)用戶的信息,但不確定會是什么樣的信息
def build_profile(first, last, **user_info):
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile(first='albert', last='einstein', location='princeton', field='physics')
print(user_profile)
5. 導(dǎo)入
- Python讀取文件時,代碼行import pizza讓Python打開文件pizza.py,并將其中的所有函數(shù)都復(fù)制到這個程序中。你看不到復(fù)制的代碼,因為這個程序運(yùn)行時,Python在幕后復(fù)制這些代碼
- module_name.function_name() 來使用任意一個函數(shù)。
5.1 導(dǎo)入整個模塊
- 如果要導(dǎo)入的py文件和主文件在同一個目錄,可以直接使用
import pizza導(dǎo)入
import pizza
5.2 導(dǎo)入特定的函數(shù)
- 還可以導(dǎo)入模塊中的特定函數(shù),這種導(dǎo)入方法的語法如下
- 通過用逗號分隔函數(shù)名,可根據(jù)需要從模塊中導(dǎo)入任意數(shù)量的函數(shù)
- 若使用這種語法,調(diào)用函數(shù)時就無需使用模塊名.函數(shù)名。由于我們在import語句中顯式地導(dǎo)入了函數(shù)make_pizza(),因此調(diào)用它時只需指定其名稱。
from module_name import function_name
from module_name import function_0, function_1, function_2
make_pizza(16, 'pepperoni')
5.3 使用 as 給函數(shù)指定別名
from module_name import function_name as fn
import pizza as p
5.4 導(dǎo)入模塊中的所有函數(shù)
- import語句中的星號讓Python將模塊pizza中的每個函數(shù)都復(fù)制到這個程序文件中。由于導(dǎo)入了每個函數(shù),可通過名稱來調(diào)用每個函數(shù),而無需使用句點(diǎn)表示法。
- 然而,使用并非自己編寫的大型模塊時,最好不要采用這種導(dǎo)入方法:如果模塊中有函數(shù)的名稱與你的項目中使用的名稱相同,可能導(dǎo)致意想不到的結(jié)果:Python可能遇到多個名稱相同的函數(shù)或變量,進(jìn)而覆蓋函數(shù).
- 最佳的做法是,要么只導(dǎo)入你需要使用的函數(shù),要么導(dǎo)入整個模塊并使用句點(diǎn)表示法。這能讓代碼更清晰,更容易閱讀和理解。
from pizza import *
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。