1. 程式人生 > >python入門學習:7.函式

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