亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Python中的函數參數(位置參數、默認參數、可變參數)

Python中的函數參數(位置參數、默認參數、可變參數)

熱門標簽:佛山防封外呼系統收費 哈爾濱外呼系統代理商 鄭州智能外呼系統運營商 湛江電銷防封卡 不錯的400電話辦理 南昌辦理400電話怎么安裝 徐州天音防封電銷卡 獲客智能電銷機器人 電話機器人適用業務

函數的參數:Python中函數定義非常簡單,由于函數參數的存在,使函數變得非常靈活應用廣泛;不但使得函數能夠處理復雜多變的參數,還能簡化函數的調用。

Python中的函數參數有如下幾種:位置參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數

一、位置參數

位置參數(positional arguments)就是其他語言的參數,其他語言沒有分參數的種類是因為只有這一種參數, 所有參數都遵循按位置一一對應的原則

計算x^2 的函數:

def power(x):
    return x * x
power(2)


對于power(x) 函數,參數x就是一個 位置參數 ,也叫做 必選參數 。當我們調用power函數時,必須傳入有且僅有的一個參數x。

現在,如果我們要計算 x^3 怎么辦?可以再定義一個power3 函數,但是如果要計算 x^4 、 x^5 ……怎么辦?我們不可能定義無限多個函數。

你也許想到了,可以把power(x) 修改為power(x, n) ,用來計算 x^n ,說干就干:

def power(x,n):
    s = 1
    while n > 0:
        s = s*x
        n = n-1
    return s

對于這個修改后的power(x, n) 函數,可以計算任意n次方

print(power(2,10))
print(power(1,10))


輸出:

1024

1

修改后的power(x, n) 函數有兩個參數:x和n,這兩個參數都是位置參數,調用函數時,傳入的兩個值 按照位置順序 依次賦給參數x 和n 。

二、默認參數

由于我們經常計算 x^2 ,所以,完全可以把第二個參數n 的默認值設定為2,這個時候,默認參數就派上用場了。

def power(x,n=2):
s = 1
while n > 0:
s = s*x
n = n-1
return s
print(power(4))
print(power(3,n=3))
print(power(2,4))


輸出:

16

27

16

這樣,當我們調用power(4) 時,相當于調用power(4, 2) :而對于n > 2 的其他情況,就必須明確地傳入n ,比如power(2, 4) 。

從上面的例子可以看出, 默認參數可以簡化函數的調用

設置默認參數時,有幾點要注意:

1、必選參數(位置參數)在前,默認參數在后,否則Python的解釋器會報錯

2、當函數有多個參數時,把變化大的參數放前面,變化小的參數放后面。變化小的參數就可以作為默認參數

使用默認參數有什么好處

舉個例子,我們寫個一年級小學生注冊的函數,需要傳入name 、gender 、age、city四個參數:

由于大多數學生注冊時年齡和城市基本一樣,就可以把年齡和城市設置為默認參數,這樣,大多數學生注冊時不需要提供年齡和城市,只提供必須的兩個參數,只有與默認參數不符的學生才需要提供額外的信息。

#學籍輸入
def enroll(name,gender,age=6,city='BJ'):
print('name is: ',name)
print('gender is: ',gender)
print('age is: ',age)
print('city is: ',city,'\n')
enroll('Tom','M')
enroll('Lisa','f')
enroll('Bob','M',7)
enroll('Lucy','F',7,'TJ')
enroll('Jerry','M',city='SH')


輸出:

name is: Tom

gender is: M

age is: 6

city is: BJ

name is: Lisa

gender is: f

age is: 6

city is: BJ

name is: Bob

gender is: M

age is: 7

city is: BJ

name is: Lucy

gender is: F

age is: 7

city is: TJ

name is: Jerry

gender is: M

age is: 6

city is: SH

可見,默認參數降低了函數調用的難度,而一旦需要更復雜的調用時,又可以傳遞更多的參數來實現。無論是簡單調用還是復雜調用,函數只需要定義一個。

注意:默認參數有個最大的坑,演示如下:

先定義一個函數,傳入一個list,添加一個end 再返回:

def add_end(list=[]):
list.append('end')
return list


當你正常調用時,結果似乎不錯:

print(add_end([1,2,3]))
print(add_end(['x','y']))


輸出:

[1, 2, 3, 'end']

['x', 'y', 'end']

#當你使用默認參數調用時,一開始結果也是對的:
print(add_end())
#但是,再次調用add_end() 時,結果就不對了:
print(add_end())
print(add_end())


輸出:

['end']

['end', 'end']

['end', 'end', 'end']

很多初學者很疑惑,默認參數是[] ,但是函數似乎每次都“記住了”上次添加了'end' 后的list。原因解釋如下:

Python函數在定義的時候,默認參數list的值就被計算出來了,即[] ,因為默認參數list也是一個變量,它指向對象[] ,每次調用該函數,如果改變了list的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了。

定義默認參數要牢記一點:默認參數必須指向不變對象!

因此定義默認參數時一定要使用不可變對象(int、float、str、tuple)。使用可變對象語法上沒錯,但在邏輯上是不安全的,代碼量非常大時,容易產生很難查找的bug。

要修改上面的例子,我們可以用None 這個不變對象來實現:

def add_end(list=None):
if list == None:
list = []
list.append('end')
return list
print(add_end([1,2,3]))
print(add_end(['x','y']))
print(add_end())
print(add_end())
print(add_end())


輸出:

[1, 2, 3, 'end']

['x', 'y', 'end']

['end']

['end']

['end']

現在,無論調用多少次,都不會有問題。

為什么要設計str 、 None 這樣的不變對象呢?因為不變對象一旦創建,對象內部的數據就不能修改,這樣就減少了由于修改數據導致的錯誤。此外,由于對象不變,多任務環境下同時讀取對象不需要加鎖,同時讀一點問題都沒有。我們在編寫程序時,如果可以設計一個不變對象,那就盡量設計成不變對象。

三、可變參數

在Python函數中,還可以定義可變參數。顧名思義,可變參數就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。

我們以數學題為例子,給定一組數字a,b,c…… ,請計算a^2 + b^2 + c^2 +...

要定義出這個函數,我們必須確定輸入的參數。由于參數個數不確定,我們首先想到可以把a,b,c……作為一個list或tuple傳進來,這樣,函數可以定義如下:

def calculator(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
print(calculator([2,3]))
print(calculator((3,5,6)))


輸出:

13

70

但是調用的時候,需要先組裝出一個list 或tuple,如果利用可變參數,調用函數的方式就可以簡化:

def calculator(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
print(calculator(2,3))
print(calculator(3,5,6))


輸出:

13

70

定義可變參數和定義一個list 或tuple 參數相比,僅僅在參數前面加了一個* 號。在函數內部,參數numbers接收到的是一個tuple(可變參數將以tuple形式傳遞),因此,函數代碼完全不變。但是,調用該函數時,可以傳入任意個參數,包括0個參數。

如果已經有一個list或者tuple,要調用一個可變參數怎么辦?可以這樣做:

nums = [2,3,4]
print(calculator(nums[0],nums[1],nums[2]))


輸出:

29

這種寫法當然是可行的,問題是太繁瑣,所以Python允許你* 在list或tuple前面加一個 號**,把list或tuple的元素變成可變參數傳進去:

nums = [2,3,4]
print(calculator(*nums))


輸出:

29

nums 表示把nums 這個list的所有元素作為可變參數傳進去。這種寫法相當有用,而且很常見。

四、關鍵字參數

python的可變參數以tuple形式傳遞,而關鍵字參數則是以dict形式傳遞。

即可變參數傳遞的是參數值,關鍵字參數傳遞的是參數名:參數值鍵值對。

形式: **kw 這是慣用寫法,建議使用,容易被理解

def stu_info(name,gender,**kw):
    print('name is:',name,' gender is:',gender,' other is :',kw)
stu_info('Bob','M',age=7,city='TJ')
stu_info('Lucy','F',city='BJ')


輸出:

name is: Bob gender is: M other is : {'age': 7, 'city': 'TJ'}

name is: Lucy gender is: F other is : {'city': 'BJ'}

可變參數和關鍵字參數都可以接受0個或者多個參數

五、命名關鍵字參數

Python的命名關鍵字參數對傳入的關鍵字參數做了進一步的限制。

格式:在關鍵字參數前增加一個”*”。

def stu_info(name,gender,*,age,city):
    print('name is:',name,' gender is:',gender,' age:',age,' city:',city)
stu_info('Bob','M',age=7,city='TJ')
stu_info('Lucy','F',city='BJ',age=10)


輸出:

name is: Bob gender is: M age: 7 city: TJ

name is: Lucy gender is: F age: 10 city: BJ

* 關鍵字參數和命名關鍵字參數的區別在于,前者可以傳遞任何名字的參數,而后者只能傳遞 后面名字的參數。* 如果函數定義中已經有了一個可變參數,后面跟著的命名關鍵字參數就不再需要一個特殊分隔符 了:

#args可以傳遞一個tuple 其后只能傳遞age和city參數
def stu_info(name,gender,*args,age,city):
print('name is:',name,' gender is:',gender,' age:',age,' city:',city)
for i in args:
print('args:',i)
stu_info('Bob','M',age=7,city='TJ')
stu_info('Lucy','F',(2,3),city='BJ',age=10)


輸出:

name is: Bob gender is: M age: 7 city: TJ

name is: Lucy gender is: F age: 10 city: BJ

args: (2, 3)

六、各種參數之間的組合

一次函數調用可以傳遞以上所述任何一種參數或者多種參數的組合,當然也可以沒有任何參數。正如默認參數必須在最右端一樣,使用多種參數時也對順序有嚴格要求,也是為了解釋器可以正確識別到每一個參數。

順序:位置參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。

def function(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)


可讀性是代碼的一個很重要的要求,所以盡量避免使用多種參數的組合。

到此這篇關于Python中的多個函數參數的文章就介紹到這了,更多相關Python中的函數參數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python實現包含min函數的棧
  • Python ord函數()案例詳解
  • python copy模塊中的函數實例用法
  • Python函數基礎
  • Python之基礎函數案例詳解
  • 關于Python中的 oct 函數與 min 函數

標簽:廣西 蘭州 吉安 呂梁 紹興 蕪湖 懷化 安康

巨人網絡通訊聲明:本文標題《Python中的函數參數(位置參數、默認參數、可變參數)》,本文關鍵詞  Python,中的,函數,參數,位置,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python中的函數參數(位置參數、默認參數、可變參數)》相關的同類信息!
  • 本頁收集關于Python中的函數參數(位置參數、默認參數、可變參數)的相關信息資訊供網民參考!
  • 推薦文章
    日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 尤物视频网站在线观看| 亚洲第一视频在线播放| 麻豆午夜视频| 青青久在线视频| 超级乱淫伦动漫| 国产一区免费观看| 一级毛片看真人在线视频| 国产一区二区精品| 国产成人精品综合久久久| 欧美另类videosbestsex| 精品国产一区二区三区国产馆| 精品国产三级a∨在线观看| 久久久久久久免费视频| 国产麻豆精品高清在线播放| 国产网站在线| 青青久久精品| 日韩中文字幕在线观看视频| 成人免费网站视频ww| 免费一级片网站| 久久久久久久免费视频| 黄视频网站免费| 国产不卡在线播放| 韩国三级视频在线观看| 免费一级片网站| 亚洲精品影院| 日韩avdvd| 国产一区二区精品久久| 亚欧成人毛片一区二区三区四区| 欧美1区| 国产高清在线精品一区a| 韩国三级视频在线观看| 国产视频一区二区在线观看| 国产伦久视频免费观看 视频 | 欧美激情一区二区三区视频 | 日本伦理网站| 毛片电影网| 精品国产香蕉在线播出| 一级毛片看真人在线视频| 国产高清视频免费观看| 国产极品白嫩美女在线观看看| 久久99欧美| 日韩av成人| 欧美日本二区| 欧美激情伊人| 四虎论坛| 高清一级片| 黄视频网站在线免费观看| 欧美一级视频免费观看| 国产一级生活片| 超级乱淫伦动漫| 999久久久免费精品国产牛牛| 人人干人人草| 99色视频在线| 国产91精品一区二区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 四虎论坛| 人人干人人草| 欧美另类videosbestsex高清| 欧美一级视频免费观看| 国产综合成人观看在线| 亚洲精品久久久中文字| 国产高清视频免费| a级黄色毛片免费播放视频| 午夜在线亚洲| 四虎影视库国产精品一区| 美国一区二区三区| 欧美另类videosbestsex视频| 青青久热| 色综合久久手机在线| 999久久久免费精品国产牛牛| 日本在线不卡免费视频一区| 成人免费观看视频| 亚洲 国产精品 日韩| 午夜在线亚洲| 成人影视在线播放| 色综合久久天天综合| 欧美大片aaaa一级毛片| 黄色福利| 成人免费观看的视频黄页| 成人免费观看视频| 日本在线不卡免费视频一区| 日本乱中文字幕系列| 久久成人亚洲| 国产视频在线免费观看| 亚洲 国产精品 日韩| 国产成人精品一区二区视频| 成人在激情在线视频| 一级片片| 青青青草视频在线观看| 亚洲 国产精品 日韩| 中文字幕一区二区三区 精品| 国产视频在线免费观看| 亚洲女人国产香蕉久久精品| 亚洲 激情| 国产91精品一区| 亚洲第一视频在线播放| 黄色短视频网站| 成人免费一级纶理片| 国产网站免费| 香蕉视频久久| 成人免费一级毛片在线播放视频| 免费一级片网站| 久久精品大片| 日韩av成人| 欧美激情中文字幕一区二区| 日日日夜夜操| 国产伦久视频免费观看 视频 | 夜夜操天天爽| 美女免费毛片| a级精品九九九大片免费看| 国产精品123| 午夜欧美福利| 国产视频久久久久| 免费毛片播放| 四虎影视精品永久免费网站| 国产不卡精品一区二区三区| 久久国产影视免费精品| 欧美大片aaaa一级毛片| 午夜欧美福利| 国产视频网站在线观看| 国产网站免费| 高清一级片| 精品国产香蕉在线播出| 久久福利影视| 欧美a级片视频| 麻豆系列 在线视频| 可以在线看黄的网站| 久久99欧美| 国产一区精品| 国产高清在线精品一区a| 国产成人精品综合在线| 免费国产在线视频| 欧美国产日韩在线| 精品国产一区二区三区国产馆| 欧美a级片视频| 国产伦久视频免费观看 视频 | 日本乱中文字幕系列| 欧美国产日韩久久久| 天天色色色| 免费的黄视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 色综合久久天天综合观看| 国产成+人+综合+亚洲不卡| 亚欧乱色一区二区三区| 欧美激情影院| 国产美女在线观看| 亚洲天堂一区二区三区四区| 欧美日本免费| 午夜精品国产自在现线拍| 亚洲 男人 天堂| 国产亚洲免费观看| 黄视频网站免费观看| 韩国毛片免费大片| 青青久久精品| 国产不卡在线看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 你懂的福利视频| 韩国毛片基地| 亚洲 欧美 91| 韩国三级香港三级日本三级la| 国产成人欧美一区二区三区的| 日日夜人人澡人人澡人人看免| 人人干人人草| 一本高清在线| 四虎影视精品永久免费网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品国产一区二区三区免费| 美女免费精品高清毛片在线视| 国产麻豆精品高清在线播放| 精品国产亚洲人成在线| 久久成人亚洲| 欧美日本韩国| 日日日夜夜操| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 九九精品久久久久久久久| 成人影视在线播放| 韩国毛片免费大片| 国产不卡高清在线观看视频| 久久99这里只有精品国产| 久久99中文字幕| 九九免费高清在线观看视频| 国产麻豆精品hdvideoss| 国产成人精品综合在线| 国产原创视频在线| 午夜精品国产自在现线拍| 日韩在线观看视频黄| 沈樵在线观看福利| 精品久久久久久影院免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 中文字幕Aⅴ资源网| 香蕉视频一级| 午夜在线影院| 91麻豆精品国产高清在线| 久久精品免视看国产明星| 深夜做爰性大片中文| 欧美日本免费| 欧美国产日韩一区二区三区| 成人免费网站视频ww| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 |