最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年06月20日 10:39:00   作者:認真對待世界的小白  
這篇文章主要介紹了Python 參數(shù)與變量的的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下

形參與實參以及位置參數(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 ** n

print(power(2,2))

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

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

在函數(shù)入?yún)⑻?,使用等號賦值默認參數(shù),

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

print(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 total

print(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 total

print(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

命名關(guān)鍵字參數(shù)

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

def person(name, age):
 print(name,age)

person("wiggin",29)

這種方式無需指定入?yún)⒌拿?,只要位置相對應,就可以?/p>

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

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

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

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

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

命名關(guān)鍵字用法

def person(name, age, *, pet):
 print(name,age,pet)

person("wiggin",29,pet="tomcat")

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

一旦使用命名關(guān)機字之后,如果調(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ù)進行設(shè)置

def person(name, age, *, pet="cat"):
 print(name,age,pet)

person("wiggin",29)

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

關(guān)鍵字參數(shù)

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

關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(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用關(guān)鍵字參數(shù)傳入到函數(shù)的**kw參數(shù),kw將獲得一個dict,注意kw獲得的dict是other_info的一份拷貝,對kw的改動不會影響到函數(shù)外的other_info。

混合使用參數(shù)

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

以上就是淺談Python 參數(shù)與變量的詳細內(nèi)容,更多關(guān)于Python 參數(shù)與變量的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • transform python環(huán)境快速配置方法

    transform python環(huán)境快速配置方法

    經(jīng)常在數(shù)據(jù)開發(fā)中需要搞udf,最近發(fā)現(xiàn)transform更加方便易用,但是經(jīng)常會涉及到集群python版本不一、包不全或者部分機器上沒有安裝python。這篇文章主要介紹了transform python環(huán)境快速配置方法,需要的朋友可以參考下
    2018-09-09
  • python庫安裝與使用示例詳解

    python庫安裝與使用示例詳解

    這篇文章主要介紹了Python中的生成器函數(shù)yield、openslide庫、ASAP庫、concurrent.futures.ThreadPoolExecutor、xml.etree.ElementTree庫、skimage庫和PIL.Image庫的相關(guān)知識,感興趣的朋友一起看看吧
    2025-02-02
  • python 通過SSHTunnelForwarder隧道連接redis的方法

    python 通過SSHTunnelForwarder隧道連接redis的方法

    今天小編就為大家分享一篇python 通過SSHTunnelForwarder隧道連接redis的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 如何使用pycharm連接Databricks的步驟詳解

    如何使用pycharm連接Databricks的步驟詳解

    這篇文章主要介紹了如何使用pycharm連接Databricks,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 用Python爬取某乎手機APP數(shù)據(jù)

    用Python爬取某乎手機APP數(shù)據(jù)

    最近爬取的數(shù)據(jù)都是網(wǎng)頁端,今天來教大家如何爬取手機端app數(shù)據(jù)(本文以ios蘋果手機為例,其實安卓跟ios差不多)! 本文將以『某乎』為實戰(zhàn)案例,手把手教你從配置到代碼一步一步的爬取App數(shù)據(jù),需要的朋友可以參考下
    2021-06-06
  • Python Web框架之Django框架Model基礎(chǔ)詳解

    Python Web框架之Django框架Model基礎(chǔ)詳解

    這篇文章主要介紹了Python Web框架之Django框架Model基礎(chǔ),結(jié)合實例形式分析了Django框架Model模型相關(guān)使用技巧與操作注意事項,需要的朋友可以參考下
    2019-08-08
  • Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)

    Python虛擬環(huán)境virtualenv安裝的詳細教程保姆級(Windows和linux)

    本文詳細介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應用和導出依賴文件,需要的朋友可以參考下
    2024-09-09
  • Pandas實現(xiàn)DataFrame的簡單運算、統(tǒng)計與排序

    Pandas實現(xiàn)DataFrame的簡單運算、統(tǒng)計與排序

    本文主要介紹了Pandas實現(xiàn)DataFrame的簡單運算、統(tǒng)計與排序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • python實現(xiàn)日歷效果

    python實現(xiàn)日歷效果

    這篇文章主要為大家詳細介紹了python實現(xiàn)日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python屬于哪種語言

    python屬于哪種語言

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python屬于哪種語言的一篇基礎(chǔ)內(nèi)容文章,有興趣的朋友們可以參考下。
    2020-08-08

最新評論

彩票| 万州区| 江门市| 沧源| 寿宁县| 高州市| 诏安县| 城固县| 大同县| 彩票| 大洼县| 长丰县| 阿勒泰市| 桂东县| 定远县| 宁乡县| 雷波县| 垦利县| 招远市| 元朗区| 西畴县| 锡林浩特市| 从化市| 河北省| 孝感市| 工布江达县| 灵川县| 桃园市| 闻喜县| 积石山| 江口县| 韶山市| 延安市| 鄂州市| 彰武县| 兴国县| 新干县| 长武县| 廉江市| 介休市| 增城市|