全國咨詢/投訴熱線:400-618-4000

足球即时指数即时欧赔:Python函數詳細教程,頂你看2天的視頻課!

踢球者即时指数比分 www.148329.live 更新時間:2020年01月13日16時25分 來源:傳智播客

本文目錄

1、什么是函數?
2、如何定義函數?
3、如何調用函數?
4、函數參數傳遞
5、函數默認參數
6、不定長參數
7、函數的返回值
8、函數的四種類型



傳智播客



在實際開發中,如果有若干段代碼的執行邏輯完全相同,那么可以考慮將這些代碼抽取成一個函數,這樣不僅可以提高代碼的重用性,而且條理會更加清晰,可靠性更高。
函數是指組織好的,可重復使用的,用來實現單一或相關聯功能的代碼段,它能夠提高應用的??榛痛氳鬧馗蠢寐?。
Python提供了很多內建函數,如print()。除此之外,我們還可以自己創建函數,也就是自定義函數。接下來,看一段代碼:
print("*")
print("**")
print("****")
上述代碼中,使用多個print()函數輸出了一個三角形。如果需要在一個程序的不同位置輸出這個圖形,那么每次都使用print()函數輸出的做法是不可取的。為了提高編寫的效率以及代碼的重用性,我們可以把具有獨立功能的代碼塊組織成一個小模塊,這就是函數。


在Python中,你可以定義一個自己想要功能的函數,自定義函數的語法格式如下所示
def 函數名(參數列表):

         “函數_文檔字符串”

         函數體

return 表達式

基于上述格式,下面對函數定義的規則進行說明:
(1)函數代碼塊以def開頭,后面緊跟的是函數名和圓括號()。
(2)函數名的命名規則跟變量的命名規則是一樣的,即只能是字母、數字和下劃線的任何組合,但是不能以數字開頭,并且不能跟關鍵字重名。
(3)函數的參數必須放在圓括號中。
(4)函數的第1行語句可以選擇性地使用文檔字符串來存放函數說明。
(5)函數內容以冒號起始,并且縮進。
(6) return表達式結束函數,選擇性地返回一個值給調用方。不帶表達式的retu相當于返回None。

定義了函數之后,就相當于有了一段具有特定功能的代碼,要想讓這些代碼能夠執行,需要調用函數。調用函數的方式很簡單,通過“函數名()”即可完成調用。
# 定義一個函數,能夠完成打印信息功能
def print_info():
    print("-"*20)
    print("人生苦短,我用python!")
    print("-"*20)
# 調用函數
print_info()
在介紹函數的參數之前,我們先來解決一個問題。現在要求定義一個函數,這個函數用于計
算兩個數的和,并把計算的結果打印出來。把上述要求轉換為代碼,示例代碼如下:
def add():
    c = 11 + 22
    print(c)
以上函數的功能是計算11和22的和。此時,無論調用這個函數多少次,得到的結果永遠都是一樣的,而且只能計算固定的兩個數字的和,使得這個函數的局限性很大。
為了能讓定義的函數更加通用,即計算任意兩個數字的和,可以在定義函數的時候添加兩個參數,讓兩個參數來接收傳遞給函數的值。接下來,通過一個案例來演示函數是如何傳遞參數的。
def add(a, b):
    c = a + b
    print(c)

上面案例中,定義了能接收兩個參數的函數。其中,a為第一個參數,用于接收函數傳遞的第1個數值;b為第二個參數,接收的是函數的第2個數值。這時,如果想調用add函數,則需要給函數的參數傳遞兩個數值,如下所示為完整代碼:
def add(a, b):
    c = a + b
    print(c)
# 調用帶有參數的函數時,需要在小括號中傳遞數據。
add(35, 25)

上面代碼運行結果為:
50
需要注意的是,如果函數定義了多個參數,那么在調用函數的時候,傳輸的數據要和定義的參數一一對應。上面的案例中a=35,b=25,c=50。

定義函數時,可以給函數的參數設置默認值,這個參數就被稱為默認參數。當調用參數的時候,由于貓人參數在定義時已經被賦值,所以可以直接忽略,而其它參數是必須要傳入值的。
如果默認參數沒有傳入值,則直接使用默認的值;如果默認參數傳入了值,則使用傳入的新值替代。
下面我們通過一個案例來介紹。
def print_info(name, age=35):
    # 打印任何傳入的字符串
    print("Name:", name)
    print("age:", age)
# 調用print_info(name="miki")
print_info(name="miki")
print_info(name="miki", age=9)
運行結果為:
Name: miki
age: 35
Name: miki
age: 9

在上面案例,第1~4行代碼定義了帶有兩個參數的print_info函數。其中,name參數沒有設置默認值,age作為默認參數已經設置了默認值。在第6行調用print_into函數時,由于只傳入了name參數的值,所以程序會使用age參數的默認值;在第7行調用print_info函數時,同時傳入了name和age兩個參數的值,所以程序會使用傳給age參數的新值。
需要注意的是,帶有默認值的參數一定要位于參數列表的最后面,否則程序會報錯。例如,給 print_info函數添加一個參數sex,放在參數列表的最后面,則報錯信息如下圖所示:

python報錯


通常在定義一個函數時,若希望函數能夠處理的參數個數比當初定義的參數個數多,此時可以在函數中使用不定長參數。其基本的語法格式如下:
def 函數名([forml_args,] *args, **kwargs):
    "函數_文檔字符串"
    函數體
return 表達式

在上述格式中,函數共有3個參數。其中,formal_args為形參(也就是前面所用的參數,如(a,b),*args和** kwargs為不定長參數。當調用函數的時候,函數傳入的參數個數會優先匹配formal_args參數的個數。如果傳入的參數個數和formal_args參數的個數相同,不定長參數會返回空的元組或字典;如果傳入參數的個數比formal_args參數的個數多,可以分為如下兩種情況:
(1)如果傳入的參數沒有指定名稱,那么*args會以元組的形式存放這些多余的參數
(2)如果傳入的參數指定了名稱,如m=1,那么* kwargs會以字典的形式存放這些被命名的參數,如{m:1}。
為了大家更好地理解,先通過一個簡單的案例進行演示,具體如下所示。
def test(a, b, *args):
    print(a)
    print(b)
    print(args)
test(11, 12)


運行結果如下:
11
12
()
在上面案例中,第1~4行代碼定義了帶有多個參數的test函數。其中,args為不定長參數。當在第5行中調用test函數時,由于只傳入11和122這兩個數,所以這兩個數會從左向右依次匹配test函數定義時的參數a和b,此時,args參數沒有接收到數據,所以為一個空元組。
如果在調用test函數時,傳入多個參數(這里指的是大于2個參數)情況又是什么樣的呢?
下面看一段實例代碼:
def test(a, b, *args):
    print(a)
    print(b)
    print(args)
test(11, 12, 13, 14, 15, 16, 17, 18)
運行結果如下:
11
12
(13, 14, 15, 16, 17, 18)
如果在參數列表的末尾使用* kwargs參數,示例代碼如下
def test(a, b, *args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)
test(11, 12, 13, 14, 15, 16, 17, 18)
運行結果:
11
12
(13, 14, 15, 16, 17, 18)
{}
從兩次運行的結果可以看出,如果在調用test函數時傳入多個數值,那么這些數值會從左向
右依次匹配函數test定義時的參數。如果跟formal_args參數的個數匹配完,還有多余的參數,則這些多余的參數會組成一個元組,和不定長參數args進行匹配。此時,kwargs參數沒有接受到數據,所以為一個空字典。
在調用函數時,什么情況下傳入的數據會匹配參數kwargs呢?看下面案例:
def test(a, b, *args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)
test(11, 12, 13, 14, 15, 16, 17, 18, m=22, n=33)
運行結果為:
11
12
(13, 14, 15, 16, 17, 18)
{'m': 22, 'n': 33}
從上述運行結果可以看出,如果參數是以鍵值對的形式傳入的,則使用** kwargs參數來接收。

所謂“返回值”,就是程序中的函數完成一件事情后,最后給調用者的結果。比如,定義一
個函數來獲取室內的溫度,一旦調用這個函數,函數就會把拿到的溫度值返回給調用者,這個溫暖值就是函數的返回值。在Python中,函數的返回值是使用 return語句來完成的。接下來,看一段示例代碼。
def add(a, b):
    c = a + b
    return c

或者
def add(a, b):
    return a + b
上面的代碼中,函數add中包含了return語句,意味著這有個函數的返回值,其返回值就是a和b相加的結果。


根據有沒有參數和返回值,函數大概可以分為以下四種類型:
(1)函數無參數,無返回值。
(2)函數無參數,有返回值。
(3)函數有參數,無返回值。
(4)函數有采參數,有返回值。
下面我們分別介紹。

1)無參數、無返回值的參數
無參數、無返回值的函數,既不能接受參數,也沒有返回值。
接下來,我們通過打印提示的函數來演示這類函數的使用。
def print_menu():
    print("-"*20)
    print("   xx涮鍋 點菜系統")
    print("    1. 羊肉涮鍋")
    print("    2. 牛肉涮鍋")
    print("    3. 豬肉涮鍋")
    print("-" * 20)
print_menu()

運行結果為:
無參數無返回值python函數


2)無參數、有返回值的函數
此類函數不能接收參數,但是可以返回某個數據,一般情況下,采集數據時會用此類函數。接下來,我們通過一個示例來演示,如下所示:
# 獲取溫度

def get_temperature():

    # 這里是溫度獲取的一些處理過程
    # 為了簡單起見,先模擬返回一個數據
    return 24
temperture = get_temperature()
print('當前的溫度為:', temperture)

運行結果為:
當前的溫度為: 24
3)有參數、無返回值的函數
在實際開發中,有參數、無返回值的函數用的極少,這是因為函數作為功能???,既然傳入了參數,絕大多數情況是希望使用返回值的。這里,大家對有參數、無返回值的函數有所了解即可,實例代碼如下:
def test(number_one, number_two):
    result = number_one + number_two
    print('計算結果為: %d'%result)
4)有參數、有返回值得函數
此類函數不能接收參數,但是可以返回某個數據,一般情況下,采集數據時會用此類函數。
接下來,我們通過一個示例來演示。
# 計算1~number的累積和
def calculate(nuber):
    result = 0
    i = 1
    while i <= nuber:
        result = result +i;
        i +=1
    return result
result = calculate(100)
print('1~100的累積和為:', result)
運行結果為: 
1~100的累積和為: 5050





猜你喜歡:
{ganrao} 网上如何让赚钱 彩票分分彩app 哈尔滨麻将手机版下 五码必出三 姚记棋牌客服电话 篮球场的围网 刮刮乐怎么辨别有奖 熊猫棋牌官网安卓 西甲球队有哪些 30选5今天开奖号168期 金陵棋牌游戏中心? 2020年欧冠夺冠热门 35选7基本走势图 至尊棋牌app官方 篮球网 免费公开的一肖二码