第八章 函數python
定義函數函數
關鍵字def測試
def get_name():ui
print("測試函數代碼")spa
調用函數orm
get_name()ci
向函數傳遞信息------在函數的括號內添加須要傳遞的信息get
實參和形參input
在函數定義時,函數括號內的參數是形參;it
在調用函數時,函數括號內的參數是實參;
傳遞參數----還可使用列表和字典
位置實參:實參的順序和形參的順序相同---------順序很重要,若是順序錯誤,則實際結果會跟預期結果差異
關鍵字實參:每一個實參由變量名和值組成;
位置實參:
def test1(abc, bcd):
print(abc + " " + bcd)
test("1111","222") >>>1111 2222
關鍵字實參:
def test2(abc, bcd):
print(abc + " " + bcd)
test2(abc = "1111",bcd = "222") >>>1111 2222
默認值:
編寫函數時,能夠給每一個形參指定默認值,調用函數時,若是提供了實參,則使用指定的參數,不然將使用形參的默認值。
def test3(abc="00000"):
print(abc)
test3() >>>00000
test3("789") >>>789
當有多個形參,而實參個數少與形參個數時,根據實參順序和形參順序進行匹配。
可混合使用位置實參、關鍵字實參和默認值,
避免實參錯誤:
調用函數時,未指定任何實參
出現traceback 錯誤時,請確保函數調用和函數定義匹配。
返回值:函數返回的值稱爲返回值
調用有返回值的函數時,須要提供一個變量,用戶存儲返回的值。
讓實參變爲可選的--------在定義函數時,給形參添加使用默認值。
返回字典:
def build_person(first_name, last_name):
"""返回一個字典, 其中包含有關一我的的信息"""
person = {'first': first_name, 'last': last_name}
return person
musician = build_person('jimi', 'hendrix')
print(musician)
結合使用函數和while 循環 :
def get_formatted_name(first_name, last_name):
"""返回整潔的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
# 這是一個無限循環!
while True:
print("\nPlease tell me your name:")
f_name = input("First name: ")
l_name = input("Last name: ")
formatted_name = get_formatted_name(f_name, l_name)
print("\nHello, " + formatted_name + "!")
=========================
增長循環退出條件
def get_formatted_name(first_name, last_name):
"""返回整潔的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
while True:
print("\nPlease tell me your name:")
print("(enter 'q' at any time to quit)")
f_name = input("First name: ")
if f_name == 'q':
break
l_name = input("Last name: ")
if l_name == 'q':
break
formatted_name = get_formatted_name(f_name, l_name)
print("\nHello, " + formatted_name + "!")
=========================
傳遞列表
def greet_users(names):
"""向列表中的每位用戶都發出簡單的問候"""
for name in names:
msg = "Hello, " + name.title() + "!"
print(msg)
usernames = ['hannah', 'ty', 'margot']
greet_users(usernames)
在函數中修改列表:
將列表傳遞給函數後, 函數就可對其進行修改。 在函數中對這個列表所作的任何修改都是永久性的, 這讓你可以高效地處理大量的數據。
禁止函數修改列表 :向函數傳遞列表的副本而不是原件; 這樣函數所作的任何修改都隻影響副本, 而絲絕不影響原件
要將列表的副本傳遞給函數, 能夠像下面這樣作 :function_name(list_name[:]) ----------切片表示法[:] 建立列表的副本。
傳遞任意數量的實參 --預先不知道函數須要接受多少個實參,python函數容許函數從調用語句中收集任意數量的實參。
def make_pizza(*toppings):
"""打印顧客點的全部配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
解釋:形參名*toppings 中的星號讓Python建立一個名爲toppings 的空元組, 並將收到的全部值都封裝到這個元組中。
結合使用位置參數實參和任意實參:
若是要讓函數接受不一樣類型的實參, 必須在函數定義中將接納任意數量實參的形參放在最後。
使用任意數量的關鍵字實參
將函數存儲在模塊中
導入整個模塊 import module_name
調用模塊的函數:module_name.function()
模塊 是擴展名爲.py的文件 。
導入特定的函數 from module_name import function_name001, function002
調用函數:直接函數名調用,不須要使用模塊名.函數名的方式調用
使用as 給函數指定別名 -----函數名太長或者函數名衝突時,方便使用
from module_name import function_name as f_n
使用as 給模塊指定別名 ---import module_name as m_n
導入模塊的全部函數---from module_name import *
函數編寫指南
一、給函數指定描述性名稱,只使用小寫字母和下劃線
二、每一個函數應該包含簡要闡述其功能的註釋,註釋位置應該是定義函數的後面
三、給形參指定默認值時,等號兩邊不要有空格
四、函數調用時,關鍵字實參的等號兩邊不要有空格
五、形參列表比函數體多縮進一層
六、使用4個空格縮進