亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

淺談Python 參數(shù)與變量

瀏覽:4日期:2022-07-20 10:34:56

形參與實參以及位置參數(shù)

什么是形參和實參

形參:即形式參數(shù),函數(shù)定義時指定的可以接受的參數(shù)即為形參,比如定義函數(shù)時的max(a,b)函數(shù)中的a和b就是形參 實參:即實際參數(shù),調(diào)用函數(shù)時傳遞給函數(shù)參數(shù)的實際值即為實參,比如調(diào)用上面函數(shù)用 max(1, 9)函數(shù)中的1和9就是實參;

什么是位置參數(shù)

我們定義函數(shù)max(a,b)后,在調(diào)用時,我們無需指定參數(shù)名,只需max(1,9),這個時候?qū)崊⑷雲(yún)⒌牡奈恢眠M行匹配,也就是在函數(shù)中,a=1,b=9。 當然,如果我們不想基于位置順序,也可以直接指定對應的參數(shù)名,比如max(b=9,a=1),這個時候調(diào)用后,不會按入?yún)㈨樞蛸x值,而是直接按指定的參數(shù)名賦值。

默認參數(shù)

編寫一個計算x的n次冪的函數(shù),要求x、n可以作為參數(shù)傳入

def power(x, n): return x ** nprint(power(2,2))

上面的函數(shù)雖然解決了問題,但是顯然不夠完美,假設在大部分的調(diào)用里,基本都只是求x的2次冪,但是這個時候我在調(diào)用的時候依舊每次都得傳n,這就顯得有點多余。有沒有什么方法可以讓我調(diào)用的時候少些一個入?yún)⒛兀?/p>

如果我們直接 print(power(2)),會發(fā)現(xiàn)這個時候行不通,有錯誤。

在函數(shù)入?yún)⑻帲褂玫忍栙x值默認參數(shù),

def power(x, n=2): return x ** nprint(power(2))

注意:必需要的參數(shù)在前,默認參數(shù)在后,否則會報錯

如果有多個默認參數(shù)呢?

def test(a=1, b=2, c=3): print('a=%d b=%d c=%d' % (a, b, c))test(c=2)

當有多個默認參數(shù)的時候,可以顯式指定傳入某個參數(shù)的值,在調(diào)用函數(shù)時,入?yún)⑹褂脜?shù)名=參數(shù)值的形式即可

如果默認參數(shù)是一個列表呢?

def test(L=[]): L.append('END') print(L)test([1, 1, 1])test([2, 2, 2])

上面的程序運行起來似乎看不出啥問題,但是,我們來看一個奇怪的現(xiàn)象:在調(diào)用test函數(shù)的時候不傳入任何參數(shù),此時,輸出的結(jié)果變得有點詭異

def test(L=[]): L.append('END') print(L)test()test()

輸出結(jié)果:

[’END’][’END’, ’END’]

函數(shù)在定義的時候,默認參數(shù)的值已確定,換句話說,L指向的地址是確定,之后如果還是對其內(nèi)容進行更改的話,默認參數(shù)的值也隨之改變了

注意:默認參數(shù)必須指向不可變對象

可變參數(shù)

什么是可變參數(shù)?

顧名思義就是調(diào)用函數(shù)時,傳遞參數(shù)的個數(shù)的可變的。

如果不使用可變參數(shù),目前有哪些方式可以實現(xiàn)傳入不確定個數(shù)的 list、dict、set等

def sum(numbers): total = 0 for i in numbers: total += i return totalprint(sum([1, 2, 3]))

上面這種寫法,雖然可以實現(xiàn)不確定個數(shù)的入?yún)ⅲ钦{(diào)用方并不清楚入?yún)⒃撌悄姆N類型,此時調(diào)用方還得看函數(shù)的具體實現(xiàn)方知入?yún)⒁强傻愋停詫φ{(diào)用方不友好

可變參數(shù)的基本格式

在定義函數(shù)的時候,入?yún)⑶凹?號,表示可變參數(shù),如

def sum(*numbers): total = 0 for i in numbers: total += i return totalprint(sum(1, 2, 3))

可變參數(shù),其實是將入?yún)⒎庋b成元組

def my_fun(*numbers): print(type(numbers)) total = 0 for i in numbers: total += i return total print(my_fun(1, 2, 3))輸出結(jié)果:<class ’tuple’>6

命名關鍵字參數(shù)

我們先來看看之前最普通的入?yún)⒎绞?-位置參數(shù)

def person(name, age): print(name,age)person('wiggin',29)

這種方式無需指定入?yún)⒌拿郑灰恢孟鄬涂梢浴?/p>

與位置參數(shù)相對的另一種方式,是每次調(diào)用的時候,都必需指定參數(shù)的名字,也就是命名關鍵字

什么是命名關鍵字參數(shù)

限制調(diào)用者不能按位置傳遞,需要放在形參的后面,并在前面使用星號*(獨占一個參數(shù)位)與普通形參分隔

為什么要有命名關鍵字參數(shù)

為了限制后面幾個參數(shù)只能按關鍵字傳遞,這往往是因為后面幾個形參名具有十分明顯的含義,顯式寫出有利于可讀性;或者后面幾個形參隨著版本更迭很可能發(fā)生變化,強制關鍵字形式有利于保證跨版本兼容性 與位置參數(shù)相對的另一種方式,是每次調(diào)用的時候,都必需指定參數(shù)的名字,也就是命名關鍵字

命名關鍵字用法

def person(name, age, *, pet): print(name,age,pet)person('wiggin',29,pet='tomcat')

命名關鍵字使用*做分隔,*之前的參數(shù),基于位置參數(shù),*后面的參數(shù),在調(diào)用的時候必需指定其參數(shù)名

一旦使用命名關機字之后,如果調(diào)用時,沒指定參數(shù)名,會報相應的錯誤

def person(name, age, *, pet): print(name,age,pet)person('wiggin',29,'tomcat')TypeError: person() takes 2 positional arguments but 3 were given

TypeError: person() takes 2 positional arguments but 3 were given

*后面的參數(shù),同樣也可以使用默認參數(shù)進行設置

def person(name, age, *, pet='cat'): print(name,age,pet)person('wiggin',29)

注意:如果函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關鍵字參數(shù)就不再需要一個特殊分隔符

關鍵字參數(shù)

什么是關鍵字參數(shù)?

關鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict。

def person(name, age, **kw): print(’name:’, name, ’age:’, age, ’other:’, kw)person('wiggin',29,city='廣州',pet='cat')

也可以使用下面的方式傳參

def person(name, age, **kw): print(’name:’, name, ’age:’, age, ’other:’, kw)other_info = {'pet': 'cat'}person('wiggin',29,city='廣州',**other_info)

other_info表示把other_info這個dict的所有key-value用關鍵字參數(shù)傳入到函數(shù)的**kw參數(shù),kw將獲得一個dict,注意kw獲得的dict是other_info的一份拷貝,對kw的改動不會影響到函數(shù)外的other_info。

混合使用參數(shù)

本章之前所學習的各種類型的參數(shù),可以在定義函數(shù)時混合使用,但是,有一個核心注意的點:混合使用時,參數(shù)定義的順序必須是:必選參數(shù)、默認參數(shù)、可變參數(shù)、命名關鍵字參數(shù)和關鍵字參數(shù)。

以上就是淺談Python 參數(shù)與變量的詳細內(nèi)容,更多關于Python 參數(shù)與變量的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产农村一一级特黄毛片 | 国产麻豆视频免费观看 | 日韩精品另类天天更新影院 | 亚洲日本高清成人aⅴ片 | 深夜爽爽福利gif在线观看 | 免费又黄又硬又大爽日本 | 日韩中文字幕在线不卡 | 国产91免费在线 | 亚洲欧美日韩国产精品 | 91精品久久久久含羞草 | 国产免费观看网站黄页 | 全黄一级裸片视频免费区 | 国产在线不卡视频 | 欧美成人tv在线观看免费 | 黄色资源在线观看 | 免费看欧美一级特黄α大片 | 日韩午夜大片 | 成人一区二区丝袜美腿 | 欧美一级毛片免费大全 | 免费黄网站在线看 | 风间由美理论片在线观看 | 亚洲精品一区二区不卡 | 国产欧美视频一区二区三区 | 欧美日韩一区二区三区四区 | 精品国产美女福到在线不卡f | miya亚洲私人影院在线 | 国产高清晰在线播放 | 国产乱人视频免费观看 | 国产精品玖玖玖在线观看 | 欧美一级毛片欧美一级 | 国产人做人爱免费视频 | 黄色一级影视 | 8888四色奇米在线观看不卡 | 久久久久久久国产免费看 | 欧洲做视频在线观看 | 国产一级真人毛爱做毛片 | 91日韩视频在线观看 | 青青久久精品国产免费看 | 国产精品久久久久久久久久久久 | 欧美一级毛片高清免费观看 | 日韩一卡2卡3卡四区别 |