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

Python中的星號(hào)*還能這么用你知道嗎

 更新時(shí)間:2023年06月20日 15:52:22   作者:咸魚(yú)Linux運(yùn)維  
這篇文章主要為大家詳細(xì)介紹了Python中的星號(hào)*用法的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下

哈嘍大家好,我是咸魚(yú)

今天跟大家介紹一下 python 當(dāng)中星號(hào)(*)的一些用法

首先大家最常見(jiàn)的就是在 python 中 * 是乘法運(yùn)算符,實(shí)現(xiàn)乘法

sum = 5 * 5 # 25

除此之外,還有一種常見(jiàn)的用法就是 * 號(hào)操作符在函數(shù)中的用法

1.單星號(hào)(*)在函數(shù)中用法

舉個(gè)例子,你有一個(gè)函數(shù),用來(lái)實(shí)現(xiàn)兩個(gè)數(shù)求和

def add(num1, num2):
    return num1 + num2

print(add(1,2)) # 3

上面這個(gè)函數(shù)只能接收固定個(gè)數(shù)(兩個(gè))的參數(shù),那如果我想要求任意數(shù)量的值的和該怎么辦?

可以在形參部分加一個(gè) * 號(hào)

def add(*num):
	sum = 0
	for i in num:
        sum += num
   	return sum

在函數(shù)定義的時(shí)候形參前面加一個(gè) * 號(hào),就可以用任意數(shù)量的參數(shù)來(lái)調(diào)用函數(shù),如果檢查數(shù)據(jù)類(lèi)型,會(huì)發(fā)現(xiàn) num 是一個(gè)元組(tuple)

即將所有傳入函數(shù)的位置參數(shù)打包成一個(gè)元組

#使用任意數(shù)量的參數(shù)來(lái)調(diào)用函數(shù)
add(1, 2, 3, 4) # 10

那如果函數(shù)在定義的時(shí)候就已經(jīng)固定了形參的個(gè)數(shù)

def add(num1, num2, num3):
    return num1 + num2 + num3

我們想要傳遞一個(gè)列表參數(shù)(假設(shè)這個(gè)列表有三個(gè)元素),可以這么調(diào)用函數(shù)

my_list = [1, 2, 3]
add(my_list[0], my_list[1], my_list[2])

這樣子調(diào)用要多敲幾個(gè)鍵盤(pán),多麻煩。我們用 * 號(hào)來(lái)實(shí)現(xiàn),前面我們看到 * 可以用在函數(shù)定義的時(shí)候的用法

在函數(shù)調(diào)用的時(shí)候加一個(gè) * 號(hào)可以將一個(gè)列表或元組解構(gòu)成多個(gè)變量

my_list = [1, 2, 3]
add(*my_list)

2.雙星號(hào)(**)在函數(shù)中的用法

上面我們介紹了 * 操作符在函數(shù)定義的時(shí)候可以用來(lái)接收多個(gè)參數(shù),并且將參數(shù)打包成一個(gè)元組,在函數(shù)調(diào)用的時(shí)候可以對(duì)列表或者元組中的元素進(jìn)行解構(gòu)

那如果對(duì)象是字典,我們可以使用雙星號(hào)操作符(**

舉個(gè)例子,假設(shè)有下面的函數(shù)

def user_info(username, email, phone, date_of_birth):
    user = get_user(username)
    user.email = email
    user.phone = phone
    ...

如果我們用關(guān)鍵字參數(shù)(keyword arguments,kwargs)調(diào)用它,就是下面的效果

user_info('kanye', email='blog@example.com', phone='88888', date_of_birth='2000.08.15')

那如果我需要增加傳參個(gè)數(shù),我就不得不去函數(shù)定義那里添加形參,這么做太麻煩了

我們可以這么做,我們?cè)?nbsp;kwargs 形參前面加了雙星號(hào),用于接收任意數(shù)量的關(guān)鍵字參數(shù)

def user_info(username, **kwargs):
    user = get_user(username)
    user.email = kwargs['email']
    user.phone = kwargs['phone']
    ...

在形參中,**kwargs 的關(guān)鍵是雙星號(hào),你完全可以使用其他名字例如 **usr(還是建議用 kwargs)

在函數(shù)定義中,**操作符會(huì)把傳進(jìn)來(lái)的參數(shù)打包成字典

當(dāng)然,我們可以像使用 Python 中的其他字典一樣使用 kwargs 字典,這樣會(huì)使代碼更簡(jiǎn)潔易懂

def user_info(username, **kwargs):
    user = get_user(username)
    for k,v in kwargs.items():
    	....

除此之外,** 操作符也可以用在函數(shù)調(diào)用的時(shí)候,用于將一個(gè)字典解構(gòu)成多個(gè)變量

dict = {
	'email':"blog@example.com"
	'phone':"88888"
    ...
}
user_info(username,**dict)

3.單星號(hào)接收非關(guān)鍵字參數(shù)

在函數(shù)定義的時(shí)候,單星號(hào)可以獨(dú)立使用,不需要變量(參數(shù))名稱,在Python中是一個(gè)完全有效的函數(shù)定義

def my_function(*, keyword_arg):
    ...

在上面的函數(shù)定義中,* 號(hào)參數(shù)會(huì)接收所有非關(guān)鍵字參數(shù)(位置參數(shù)),然后剩下的關(guān)鍵字參數(shù)傳給 keyword_arg

如果你在調(diào)用的時(shí)候只傳了位置參數(shù),就會(huì)報(bào)錯(cuò)

my_function(1)
"""
TypeError: my_function() takes 0 positional arguments but 1 was given
"""

在上面代碼中,函數(shù)my_function定義了一個(gè)命名關(guān)鍵字參數(shù)keyword_arg,但在函數(shù)調(diào)用時(shí)使用位置參數(shù) 1 來(lái)傳遞參數(shù),而不是使用關(guān)鍵字參數(shù)的方式,所以報(bào)錯(cuò)

函數(shù)定義中,使用*來(lái)標(biāo)識(shí)位置參數(shù)結(jié)束,之后的參數(shù)都被視為命名關(guān)鍵字參數(shù),這意味著在函數(shù)調(diào)用時(shí)必須傳遞關(guān)鍵字參數(shù)

那如果我們想強(qiáng)制只使用位置參數(shù),而不是上面案例中的只使用關(guān)鍵字參數(shù)該怎么辦

我們使用 / 號(hào)來(lái)實(shí)現(xiàn)

def only_positional_arguments(arg1, arg2, /):
    ...

如果你傳遞關(guān)鍵字參數(shù),會(huì)發(fā)生報(bào)錯(cuò),是不是很有意思

only_positional_arguments(arg1=1, arg2=2)

"""
TypeError: only_positional_arguments() got some positional-only arguments passed as keyword arguments: 'arg1, arg2'
"""

4.星號(hào)拓展用法

1、單星號(hào)構(gòu)建或解構(gòu)列表

比如說(shuō)有下面兩個(gè)列表

my_list_1 = [1, 2, 3]
my_list_2 = [10, 20, 30]

我們打算合并這兩個(gè)列表,可以用 + 操作符

merged_list = my_list_1 + my_list_2

但是單星號(hào)更靈活,比如說(shuō)我們?cè)诤喜⒌臅r(shí)候在中間加一個(gè)元素

num=42
merged_list = [*my_list_1, some_value, *my_list_2]

我們知道,解構(gòu)列表元素的時(shí)候可以這么干

my_list = [1, 2, 3]
a, b, c = my_list
# a -> 1
# b -> 2
# c -> 3

上面每個(gè)變量都存儲(chǔ)了列表中的元素,那假設(shè)我打算將列表中的第一個(gè)和最后一個(gè)元素放在指定變量中,中間的元素還是作為列表,我該怎么辦

可以使用單星號(hào)

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a, *b, c = my_list
# a -> 1
# b -> [2, 3, 4, 5, 6, 7, 8, 9]
# c -> 10

需要注意的是,單星號(hào)接收的對(duì)象是列表

my_list = [1, 2, 3]
a, *b, c = my_list
# a -> 1
# b -> [2]
# c -> 3

2、雙星號(hào)構(gòu)建字典

同理,雙星號(hào)可以用于構(gòu)建字典

dict1 = {
    'age': '22'
}
dict2 = {
    'email': 'blog@example.com'
}
user_dict = {'username': 'kanye', **dict1, **dict2}

到此這篇關(guān)于Python中的星號(hào)*還能這么用你知道嗎的文章就介紹到這了,更多相關(guān)Python星號(hào)*內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Python語(yǔ)言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些

    淺析Python語(yǔ)言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些

    Python已經(jīng)廣泛的應(yīng)用于數(shù)據(jù)分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等眾多科學(xué)計(jì)算領(lǐng)域,這篇文章主要介紹了Python語(yǔ)言自帶的數(shù)據(jù)結(jié)構(gòu)有哪些?需要的朋友可以參考下
    2019-08-08
  • 對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹

    對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹

    這篇文章主要介紹了對(duì)django 2.x版本中models.ForeignKey()外鍵說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Python中的flask框架詳解

    Python中的flask框架詳解

    flask是一個(gè)基于Python開(kāi)發(fā)并且依賴jinja2模板和Werkzeug?WSGI服務(wù)的一個(gè)微型框架,對(duì)于Werkzeug本質(zhì)是Socket服務(wù)端,其用于接收http請(qǐng)求并對(duì)請(qǐng)求進(jìn)行預(yù)處理,然后觸發(fā)Flask框架,本文給大家介紹Python中的flask框架,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • python實(shí)現(xiàn)郵件自動(dòng)發(fā)送

    python實(shí)現(xiàn)郵件自動(dòng)發(fā)送

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)郵件自動(dòng)發(fā)送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • PyQt5 窗口切換與自定義對(duì)話框的實(shí)例

    PyQt5 窗口切換與自定義對(duì)話框的實(shí)例

    今天小編就為大家分享一篇PyQt5 窗口切換與自定義對(duì)話框的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python return語(yǔ)句如何實(shí)現(xiàn)結(jié)果返回調(diào)用

    Python return語(yǔ)句如何實(shí)現(xiàn)結(jié)果返回調(diào)用

    這篇文章主要介紹了Python return語(yǔ)句如何實(shí)現(xiàn)結(jié)果返回調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python實(shí)現(xiàn)Word的讀寫(xiě)改操作

    Python實(shí)現(xiàn)Word的讀寫(xiě)改操作

    本文主要介紹了運(yùn)用docx模塊實(shí)現(xiàn)讀取Word,調(diào)整Word樣式以及Word 寫(xiě)入操作的示例代碼,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-11-11
  • python實(shí)現(xiàn)登錄密碼重置簡(jiǎn)易操作代碼

    python實(shí)現(xiàn)登錄密碼重置簡(jiǎn)易操作代碼

    這篇文章主要介紹了python實(shí)現(xiàn)登錄密碼重置簡(jiǎn)易操作,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-08-08
  • 對(duì)Tensorflow中的變量初始化函數(shù)詳解

    對(duì)Tensorflow中的變量初始化函數(shù)詳解

    今天小編就為大家分享一篇對(duì)Tensorflow中的變量初始化函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python實(shí)現(xiàn)PDF轉(zhuǎn)為Excel的示例講解

    Python實(shí)現(xiàn)PDF轉(zhuǎn)為Excel的示例講解

    這篇文章主要為大家詳細(xì)介紹了在Python中將PDF表格轉(zhuǎn)換為Excel文件的解決方案,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11

最新評(píng)論

长宁县| 葫芦岛市| 青铜峡市| 浑源县| 漳州市| 胶州市| 阜平县| 门头沟区| 黎城县| 太仓市| 浮山县| 航空| 武威市| 沧州市| 千阳县| 河东区| 黎平县| 泸西县| 衡山县| 万荣县| 论坛| 横峰县| 汉沽区| 海宁市| 玉龙| 堆龙德庆县| 来凤县| 瑞昌市| 乌鲁木齐县| 威海市| 茂名市| 中山市| 荔波县| 永德县| 迁西县| 达拉特旗| 赫章县| 乐业县| 潜江市| 浦江县| 桐城市|