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

一文搞懂Python的函數(shù)傳參機(jī)制

 更新時(shí)間:2022年07月12日 08:29:03   作者:尤而小屋  
最近寫(xiě)了Python函數(shù)的功能,犯了一些錯(cuò)誤。所以本文主要和大家一起梳理下Python函數(shù)的傳參機(jī)制,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

大家好,我是Peter~

最近寫(xiě)了Python函數(shù)的功能,犯了一些錯(cuò)誤。本文主要是梳理下Python函數(shù)的傳參機(jī)制,主要內(nèi)容包含:

一、最簡(jiǎn)單的函數(shù)(無(wú)返回值、參數(shù))

def hello_python():
    print("hello python!")
hello_python()  # 直接調(diào)用

輸出:

hello python!

二、最簡(jiǎn)單的函數(shù)(帶返回值、無(wú)參數(shù))

def hello_python():
    data = "hello python!"
    return data  # data就是返回值
hello_python()

輸出:

'hello python!'

三、帶一個(gè)參數(shù)(無(wú)默認(rèn)值)

def hello(data):
    result = "hello " + data 
    return result
hello("python")

輸出:

'hello python'

傳入另一個(gè)值:

hello("java")

輸出:

'hello java'

還可以在內(nèi)部修改參數(shù)的信息:

def hello_name(name):
    result = "Hello " + name.title() + "!"
    return result
hello_name("tom")

'Hello Tom!'

hello_name("jack")

'Hello Jack!'

四、帶有多個(gè)參數(shù)(無(wú)默認(rèn)值)

def information(name, age):
    data = "我叫" + name.title() + ", 今年" + str(age) + "歲"
    return data
information("tom", 23)

'我叫Tom, 今年23歲'

information("JACK", 18)

'我叫Jack, 今年18歲'

五、參數(shù)設(shè)置默認(rèn)值(一個(gè)參數(shù))

def hello_name(name="Peter"):
    result = "Hello " + name
    return result

如果不給參數(shù)具體的值,就使用默認(rèn)值

hello_name()  

'Hello Peter'

給參數(shù)一個(gè)實(shí)際的值,比如下面的例子中Tom就是實(shí)際的值;這就是常說(shuō)的實(shí)參

hello_name(name="Tom")  

'Hello Tom'

六、參數(shù)設(shè)置默認(rèn)值(多個(gè)參數(shù))

def information(name="Peter", age=20):
    data = "我是" + name + ", 今年" + str(age) + "歲"
    return data

1、全部使用默認(rèn)值:

information()

'我是Peter, 今年20歲'

2、全部傳入實(shí)際的值:

information(name="Tom", age=27)

'我是Tom, 今年27歲'

3、只傳入部分參數(shù)的實(shí)際值;未傳入的使用默認(rèn)值:

information(name="Tom")

'我是Tom, 今年20歲'

information(age=18)

'我是Peter, 今年18歲'

七、部分參數(shù)使用默認(rèn)值

默認(rèn)值的參數(shù)一定要放在最后面;具有默認(rèn)值的參數(shù)一定要放在最后面

def information(name, age=20):
    data = "我是" + name + ", 今年" + str(age) + "歲"
    return data
information("Peter")  # age默認(rèn)使用20

'我是Peter, 今年20歲'

information(name="Peter")

'我是Peter, 今年20歲'

information("Peter", age=18)

'我是Peter, 今年18歲'

下面的方式直接報(bào)錯(cuò):

information(age=18, "Peter")  
  File "<ipython-input-26-2d03cd04a05a>", line 1
    information(age=18, "Peter")
                       ^
SyntaxError: positional argument follows keyword argument

information(age=18, name="Peter")  # age默認(rèn)使用20

'我是Peter, 今年18歲'

重點(diǎn):在函數(shù)必須先列出沒(méi)有默認(rèn)值的形參,再列出有默認(rèn)值的形參:

def information(age=20, name):
    data = "我是" + name + ", 今年" + str(age) + "歲"
    return data

  File "<ipython-input-28-d36363c3194c>", line 1
    def information(age=20, name):
                   ^
SyntaxError: non-default argument follows default argument

如何理解有默認(rèn)值的參數(shù)一定要放在最后面?

下面自定義個(gè)get_name的函數(shù),傳入第一個(gè)、最后一個(gè)和中間的名字,但是并不是每個(gè)人都有中間名字:

def get_name(first_name, last_name, middle_name=''):
    if middle_name:  # 如果存在中間名字
        name = first_name + middle_name + last_name
    else:
        name = first_name + last_name
        
    return name
get_name(first_name="張", last_name="飛", middle_name='')

'張飛'

get_name(first_name="孫", last_name="空", middle_name='悟')

'孫悟空'

如果不傳遞middle_name的結(jié)果肯定不是我們想要的:

get_name(first_name="孫", last_name="空")

'孫空'

八、位置實(shí)參

def get_information(name, age):
    data = "我是" + name + ", 今年" + str(age) + "歲"
    return data
get_information("Tom", 20)

'我是Tom, 今年20歲'

get_information("20","Tom")  # 一定要按照原來(lái)形參的順序傳遞

'我是20, 今年Tom歲'

上面的結(jié)果肯定不是我們想要的

九、關(guān)鍵字實(shí)參

當(dāng)使用關(guān)鍵字傳遞實(shí)參的時(shí)候,和順序無(wú)關(guān):

get_information(name="Tom", age=20)

'我是Tom, 今年20歲'

get_information(age=20, name="Tom")

'我是Tom, 今年20歲'

十、位置實(shí)參和關(guān)鍵字實(shí)參混合使用

get_information("Tom", age=20)

'我是Tom, 今年20歲'

在使用的時(shí)候還是要按照原函數(shù)中的順序,否則報(bào)錯(cuò):

get_information(age=20,"Tom")

  File "<ipython-input-39-bc20bc544493>", line 1
    get_information(age=20,"Tom")
                          ^
SyntaxError: positional argument follows keyword argument

十一、進(jìn)階:*args使用

有時(shí)候我們實(shí)現(xiàn)并不知道函數(shù)需要接受多少個(gè)參數(shù),這個(gè)時(shí)候可以通過(guò)*args或者**kwargs的用法來(lái)收集任意數(shù)量的參數(shù)。

先介紹*args的使用。假設(shè)我們想把一個(gè)班級(jí)中每個(gè)同學(xué)的身高都變成以米為單位,即除以100:

def height(*args):
    data = args 
    return data
height()

默認(rèn)情況下函數(shù)收集到的是一個(gè)空元組:

()

height(178)

當(dāng)傳入數(shù)據(jù)的時(shí)候,以元組的形式表示:

(178,)

height(178,189)

(178, 189)

def height(*args):
    for data in args:  # 對(duì)args中的元素進(jìn)行循環(huán)操作
        print("身高是: {}m".format(data / 100))
height(189,180,167,172)  # 調(diào)用

身高是: 1.89m
身高是: 1.8m
身高是: 1.67m
身高是: 1.72m

十二、進(jìn)階:**kwargs使用

**kwargs允許將不定長(zhǎng)度的鍵值對(duì),作為參數(shù)傳遞給一個(gè)函數(shù)

def information(**kwargs):
    data = kwargs
    print(data)

默認(rèn)情況下收集的是字典:

 information(name="Peter")

{'name': 'Peter'}

information(name="Peter", age=23)

{'name': 'Peter', 'age': 23}

def information(**kwargs):
    for k, v in kwargs.items():
        print("{0} == {1}".format(k,v))
information(name="Peter")

name == Peter

information(name="Peter", age=23)

name == Peter
age == 23

information(name="Peter", age=23, height=175)

name == Peter
age == 23
height == 175

十三、進(jìn)階:*args 和形參連用

def fun(x, *args):
    print("x:", x)
    print("args:", args)
fun(1)

x: 1
args: ()

fun(1,2)

x: 1
args: (2,)

fun(1,2,3,4)

x: 1
args: (2, 3, 4)

fun(1,2,3,4,"Peter")

x: 1
args: (2, 3, 4, 'Peter')

十四、進(jìn)階:**kwargs 和形參連用

def fun(x, **kwargs):
    print("x:", x)
    print("kwargs:", kwargs)
fun(1)

x: 1
kwargs: {}

fun(1,name="Peter")

x: 1
kwargs: {'name': 'Peter'}

fun(1,name="Peter",age=23)

x: 1
kwargs: {'name': 'Peter', 'age': 23}

十五、進(jìn)階:形參+*args+**kwargs連用

def fun(x, *args, **kwargs):
    print("x:", x)
    print("args:", args)
    print("kwargs:", kwargs)
fun(1)

x: 1
args: ()
kwargs: {}

fun(1,2,3)

x: 1
args: (2, 3)
kwargs: {}

fun(1,name="Peter",age=23)

x: 1
args: ()
kwargs: {'name': 'Peter', 'age': 23}

fun(1,2,3,name="Peter",age=23)

x: 1
args: (2, 3)
kwargs: {'name': 'Peter', 'age': 23}
kwargs = {"name":"Peter","age":23}

fun(1,2,3,**kwargs)

x: 1
args: (2, 3)
kwargs: {'name': 'Peter', 'age': 23}

以上就是一文搞懂Python的函數(shù)傳參機(jī)制的詳細(xì)內(nèi)容,更多關(guān)于Python函數(shù)傳參機(jī)制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在Python中使用MongoEngine操作數(shù)據(jù)庫(kù)教程實(shí)例

    在Python中使用MongoEngine操作數(shù)據(jù)庫(kù)教程實(shí)例

    這篇文章主要介紹了在Python中使用MongoEngine操作數(shù)據(jù)庫(kù)教程實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python閉包之返回函數(shù)的函數(shù)用法示例

    Python閉包之返回函數(shù)的函數(shù)用法示例

    這篇文章主要介紹了 Python閉包之返回函數(shù)的函數(shù)用法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 一些Python中的二維數(shù)組的操作方法

    一些Python中的二維數(shù)組的操作方法

    這篇文章主要介紹了一些Python中的二維數(shù)組的操作方法,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 如何安裝2019Pycharm最新版本(詳細(xì)教程)

    如何安裝2019Pycharm最新版本(詳細(xì)教程)

    這篇文章主要介紹了如何安裝2019Pycharm最新版本(詳細(xì)教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python讀取與處理netcdf數(shù)據(jù)方式

    python讀取與處理netcdf數(shù)據(jù)方式

    今天小編就為大家分享一篇python讀取與處理netcdf數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • Python使用BeautifulSoup庫(kù)解析HTML基本使用教程

    Python使用BeautifulSoup庫(kù)解析HTML基本使用教程

    這篇文章主要介紹了Python使用BeautifulSoup庫(kù)解析HTML基本使用教程,文中主要對(duì)其適合于制作爬蟲(chóng)方面的特性進(jìn)行了解析,需要的朋友可以參考下
    2016-03-03
  • 詳解Django-restframework 之頻率源碼分析

    詳解Django-restframework 之頻率源碼分析

    這篇文章主要介紹了Django-restframework 之頻率源碼分析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python中的urllib模塊使用詳解

    Python中的urllib模塊使用詳解

    這篇文章主要介紹了Python中的urllib模塊使用詳解,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • Python爬蟲(chóng)爬取博客實(shí)現(xiàn)可視化過(guò)程解析

    Python爬蟲(chóng)爬取博客實(shí)現(xiàn)可視化過(guò)程解析

    這篇文章主要介紹了Python爬蟲(chóng)爬取博客實(shí)現(xiàn)可視化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python實(shí)現(xiàn)獲取亂序列表排序后的新下標(biāo)的示例

    Python實(shí)現(xiàn)獲取亂序列表排序后的新下標(biāo)的示例

    本文主要介紹了Python實(shí)現(xiàn)獲取亂序列表排序后的新下標(biāo)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

舟曲县| 新乡市| 临沧市| 新民市| 德阳市| 兴山县| 汾西县| 文昌市| 旺苍县| 木兰县| 股票| 雷山县| 江川县| 吉木萨尔县| 南澳县| 茂名市| 平湖市| 临安市| 康马县| 高阳县| 嫩江县| 安仁县| 长乐市| 台东县| 翁源县| 林甸县| 焦作市| 屯门区| 报价| 泾川县| 图木舒克市| 中阳县| 滁州市| 台前县| 黔南| 黔南| 三江| 海原县| 城固县| 黑水县| 乐亭县|