python入門學習:7.函式
python入門學習:7.函式
關鍵點:函式
7.1 定義函式7.2 傳遞實參7.3 返回值7.4 傳遞列表7.5 傳遞任意數量的實參7.6 將函式儲存在模組中
7.1 定義函式
使用關鍵字def告訴python要定義一個函式,緊接著跟著函式名,冒號。後面的縮排構成函式體.例如:
1def func_name():
2 函式體
3
4def greet_user():
5 """顯示簡單問候語"""
6 print("hello!" )
7
8greet_user() #函式呼叫
7.1.1 向函式傳遞資訊
在定義函式市可以給函式傳遞一個引數
1def func_name(param):
2 函式體
3
4def greet_user(username):
5 """顯示簡單問候語"""
6 print("hello!"+ username.title()+"!")
7greet_user('jessue')
7.1.2 實參和形參
在函式greet_user()的定義中,變數username是一個形參--函式完成工作所需的一項資訊。在程式碼greet_user('jessue')中,值'jessue'是一個實參。實參是呼叫函式時傳遞給函式的資訊,我們呼叫函式時,實際上將實參'jessue'傳遞給了函式greet_user()的形參username中,然後進行操作。
7.2 傳遞實參
7.2.1 位置實參
呼叫函式時,python必須將函式呼叫中的每個實參都關聯到函式定義中的一個形參。為此,最簡單的方式是基於實參的順序。這種關聯方式被稱為位置實參。
1def describe_pet(animal_type,pet_name):
2 print("\nI have a " + animal_type + ".")
3 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
4
5describe_pet('hamster','harry')
6#注意:位置實參的順序很重要,如果順序錯誤可能結果出乎意料
7.2.2 關鍵字實參
關鍵字實參是傳遞給函式的名稱-值對。你直接在實參中將名稱和值關聯起來了,因此向函式傳遞實參時不會混淆。關鍵字實參讓你無需考慮函式呼叫中的實參順序,還清楚地指出了函式呼叫中各個值的用途。
1def describe_pet(animal_type,pet_name):
2 print("\nI have a " + animal_type + ".")
3 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
4
5#describe_pet(animal_type='hamster',pet_name='harry')
6describe_pet(pet_name='harry',animal_type='hamster')
7#關鍵字實參於順序無關
7.2.3 預設值
編寫函式時,可給每個形參指定預設值。在呼叫函式中給形參提供了實參時,python將使用指定的實參值;否則將使用形參預設值。因此,給形參指定預設值後,可在函式呼叫中省略相應的實參
1def describe_pet(pet_name,animal_type='dog'):
2 print("\nI have a " + animal_type + ".")
3 print("My " + animal_type + "'s name is " + pet_name.title() + ".")
4
5#describe_pet(pet_name='wille')
6describe_pet(pet_name='wille',animal_type='cat')
注意:在這個函式中修改了形參的順序。由於animal_type指定了預設值,無需要通過實參來指定動物型別,因此函式呼叫中只包含了一個實參--寵物的名字。然而python依然將這個實參視為位置實參,因此函式呼叫中只包含寵物的名字,這個實參將關聯到函式定義的第一個形參。
使用預設值時,在形參列表中必須先列出沒有預設值的形參,在列出有預設值的形參,這讓python依然能夠正確地解讀位置實參。
7.3 返回值
函式並非總是直接顯示輸出,相反,它可以處理一些資料,並返回一個或一組值。函式返回的值被稱為返回值。
7.3.1 返回簡單值
如下返回一個字串
1def get_formatted_name(first_name,last_name):
2 full_name = first_name + ' ' + last_name
3 return full_name.title() #返回值
4
5musician = get_formatted_name('jimi','hendrix')
6print(musician)
7.3.2 讓實參變成可選擇的
有時候,需要讓實參變成可選擇的,這樣使用函式的人就只用在必要時才提供額外資訊。可使用預設值來讓實參變成可選擇的。
1def get_formatted_name(first_name,last_name,middle_name=''):
2 if middle_name:
3 full_name = first_name + ' ' + middle_name + ' ' + last_name
4 else:
5 full_name = first_name + ' ' + last_name
6 return full_name.title()
7
8musician = get_formatted_name('jimi','hendrix')
9print(musician)
10
11musician = get_formatted_name('jimi','hendrix','lee')
12print(musician)
7.3.3 返回字典
函式可返回任何型別的值,包括列表和字典等較複雜的資料結構。下面定義一個函式,返回一個字典
1def build_person(frist_name,last_name):
2 person = {'frist':frist_name,'last':last_name}
3 return person #返回一個字典
4musician = build_person('jimi','hendrix')
5print(musician)
7.3.4 結合使用函式和while迴圈
1def get_formatted_name(first_name,last_name):
2 full_name = first_name + ' ' + last_name
3 return full_name.title()
4
5while True:
6 print("\nPlease tell mme your name:")
7 print("(enter 'q' at any time to quit)")
8 f_name = input("Frist name: ")
9 if f_name == 'q':
10 break
11 l_name = input("Last name: ")
12 if l_name == 'q':
13 break
14
15 formatted_name = get_formatted_name(f_name,l_name)
16 print("\nHello, "+ formatted_name+"!")
7.4 傳遞列表
向函式傳遞一個列表
1def greet_users(names):
2 for name in names:
3 msg = "Hello, " + name.title()+"!"
4 print(msg)
5
6user_names = ['hannah','ty','margot']
7greet_users(user_names)
7.4.1 在函式中修改列表
將列表傳遞給函式後,可對列表進行修改
1def print_models(unprinted_designs,completed_models):
2 while unprinted_designs:
3 current_design = unprinted_designs.pop()
4
5 print("Printing model: "+ current_design)
6 completed_models.append(current_design)
7
8def show_complete_models(completed_models):
9 print("\nThe following models have been printed:")
10 for completed_model in completed_models:
11 print(completed_model)
12
13unprinted_designs = ['iphone case','robot pendant','dodecadron']
14completed_models = []
15print_models(unprinted_designs,completed_models)
16show_complete_models(completed_models)
7.4.2 禁止函式修改列表
有時候需要禁止函式修改列表,可以向函式傳遞一個列表的副本而不是原件,這樣就可以避免列表被修改。
1fuc_name(list_name[:])
2print(unprinted_designs[:],completed_models)
7.5 傳遞任意數量的實參
有時候,你預先不知道函式要接受多少個實參,不過python支援傳遞任意數量的實參。
1def make_pizaa(*topping)
2 print(topping)
3make_pizaa('pepperoni')
4make_pizaa('mushroom','green pepers','extra chesse')
5
6('pepperoni',)
7('mushroom', 'green pepers', 'extra chesse')
7.5.1 結合使用位置實參和任意數量實參
如果讓函式接受不同型別的實參,必須在函式定義中將接納任意數量實參的形參放在最後。python先匹配位置實參和關鍵字實參,再將餘下的實參都收集到最後一個形參中。
1def make_pizaa(size,*toppings): #*toppings 傳遞一系列字串
2 print("\nMaking a "+str(size) + "-inch pizza with the following toppings:")
3
4 for topping in toppings:
5 print("- " + topping)
6make_pizaa(16,'pepperoni')
7make_pizaa(12,'mushroom','green pepers','extra chesse')
8
9Making a 16-inch pizza
相關推薦
python入門學習:7.函式
python入門學習:7.函式
關鍵點:函式
7.1 定義函式7.2 傳遞實參7.3 返回值7.4 傳遞列表7.5 傳遞任意數量的實參7.6 將函式儲存在模組中
7.1 定義函式
使用關鍵字def告訴python要定義一個函式,緊接著跟著函式名,冒號。後面的縮排構成函式
Python機器學習:7.2 結合不同的分類算法進行投票
機器學習 div blog 我們 mac .com nts sep section 這一節學習使用sklearn進行投票分類,看一個具體的例子,數據集采用Iris數據集,只使用sepal width和petal length兩個維度特征,類別我們也只是用兩類:Iris-Ve
Python機器學習:7.1 集成學習
src 概率 森林 技術分享 ali 集成學習 tag 相關 目錄 集成學習背後的思想是將不同的分類器進行組合得到一個元分類器,這個元分類器相對於單個分類器擁有更好的泛化性能。比如,假設我們從10位專家那裏分別得到了對於某個事件的預測結果,集成學習能夠對這10個預測結果進行
Python入門學習:1.變數和簡單的資料型別
python入門學習:1.變數和簡單的資料型別
關鍵點:變數、字串、數字
1.1 變數的命名和使用1.2 字串1.3 數字1.4 註釋
1.1 變數的命名和使用
變數,顧名思義是一個可變的量,每個變數都儲存一個值--與變數關聯的資訊。
1message =
Python入門學習:1.變量和簡單的數據類型
import word python使用 com 其中 小數位 小數 ring 很多
python入門學習:1.變量和簡單的數據類型
關鍵點:變量、字符串、數字
1.1 變量的命名和使用1.2 字符串1.3 數字1.4 註釋
1.1 變量的命名和使用
??變量,顧名思
python入門學習:2.列表簡介
python入門學習:2.列表簡介
關鍵點:列表
2.1 列表是什麼2.2 修改、新增和刪除元素2.3 組織列表
2.1 列表是什麼
列表,是由一系列按特定順序排列的元素組成。你可以建立包含字母表中所有字母、數字0~9或所有家庭成員姓名的列表;也可以將任何東西加入列表中
python入門學習:3.操作列表
python入門學習:3.操作列表
關鍵點:列表
3.1 遍歷整個列表3.2 建立數值列表3.3 使用列表3.4 元組
3.1 遍歷整個列表
迴圈這種概念很重要,因為它是計算機自動完成重複工作的常見方式之一。下面使用for迴圈來遍歷。 注意for迴圈的迴圈體可以包含多
python入門學習:5.字典
python入門學習:5.字典
關鍵點:字典
5.1 使用字典5.2 遍歷字典5.3 巢狀
5.1 使用字典
在python中字典是一系列鍵-值對。每個鍵都和一個值關聯,你可以使用鍵來訪問與之相關聯的值。與鍵相關聯的值可以是數字、字串、列表乃至字典。在python中,字
python入門學習:8.類
python入門學習:8.類
關鍵點:類
8.1 建立和使用類8.2 使用類和例項8.3 繼承8.4 匯入類
8.1 建立和使用類
面向物件程式設計是最有效的軟體編寫方法之一。在面向物件程式設計中,你編寫表示現實世界中的事物和情景的類,並基於這些類來建立物件。根據類來建
python入門學習:9.檔案和異常
python入門學習:9.檔案和異常
關鍵點:檔案、異常
9.1 從檔案中讀取資料9.2 寫入檔案9.3 異常9.4 儲存資料
9.1 從檔案中讀取資料
9.1.1 讀取整個檔案 首先建立一個pi_digits.txt檔案,內容任意填寫,儲存在當前目錄下。
1with
Python學習:7.文件操作
TP 功能 str bytes python解釋器 odin 調用 示例 過程 文件操作
我們曾將聽過一個問題,將大象放入冰箱分為三步:1、打開冰箱門,2、將大象放進去,3、關上冰箱門。今天我們要講的Python文件操作的步驟就像將大象放入冰箱的步驟一樣。
使用Python
python系統學習:第三週之函式
# 函式:如果某個程式中部分程式碼重複使用率較高,可以將其封裝起來,用到的時候就可以去呼叫這個包,這就叫函式# ----------------------第一部分-------------------------# 定義def sayhi(): print("hello word!")# 呼叫sayh
Python入門學習筆記————12(繼承,建構函式)
受保護的封裝 protected
受保護的封裝是將物件成員進行一定級別的封裝,然後在類中或者子類中都可以訪問,但外部不可以
封裝方法: 在成員名稱前新增一個下劃線即可 公開的,公共的 public
公共的封裝實際對成員沒有任何操作,任何地方都可以訪問
繼承
Python入門學習筆記————08(list函式,元組)
#傳值與傳地址的區別
#對於簡單的數值,採用傳值的操作,即在函式內的操作不影響外面的變數
#對複雜的變數,採用傳遞地址的操作,此時進行的操作即是對函式本身的操作
def a(n):
n[2]=300
print(n)
return None
Python入門學習筆記————07(函式,list相關問題)
漢諾塔問題
規則: 1. 每次移動一個盤子
2. 任何時候大盤子在下面,小盤子在上面
方法: 1. n=1: 直接把A上的一個盒子移動到C上面,A->c
2. n=2:
1.把小盤子從A放到B上,A->B
2.把大盤子從A放到C上,A-
Python入門學習筆記————06(函式,列)
變數的作用域
變數由作用範圍限制
分類:按作用域分類
全域性(global):在函式外部定義
區域性(local):在函式內部定義
變數的作用範圍:
全域性變數:在整個全域性範圍都有效
全域性變數在區域性可以使用
Python入門學習筆記————05(函式)
關鍵字引數
語法 def func_key(p1=v1,p2=v2,p3=v3,...):
func_body
呼叫函式:
func_key(p1=value1,p2=value2,...)
比較麻煩但有好處: - 不容易混淆,一般引數需要形參與實參一一對
Python入門學習筆記————04(while迴圈,函式)
while 迴圈
一個迴圈語句
某條件成立時迴圈
不確定具體的迴圈次數,但能夠知道就具體的迴圈條件就用while
語法 while 條件表示式:
語句塊
while ... ellse...
wh
Python入門學習筆記————13(繼承,多型,類相關函式)
#父類
class A ():
pass
class B (A):
pass
print(A.__mro__)
print(B.__mro__)
(<class '__main__.A'>, <class 'object'>)
(&
Python入門學習D3-函式、全域性與區域性變數、高階函式、
本節內容1. 函式基本語法及特性2. 引數與區域性變數3. 返回值巢狀函式4.遞迴5.匿名函式6.函數語言程式設計介紹7.高階函式8.內建函式溫故知新1. 集合主要作用: 去重關係測試, 交集\差集\並集\反向(對稱)差集123456789101112131415161718