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

python禁止位置傳參函數(shù)詳解

 更新時(shí)間:2024年11月20日 08:39:03   作者:Covirtue  
文章介紹了Python3.x中的關(guān)鍵字參數(shù)特性,說(shuō)明了如何在函數(shù)定義中使用*符號(hào)來(lái)限制參數(shù)只能通過(guò)關(guān)鍵字傳遞,而不是位置,這種特性在處理參數(shù)較多或順序可能導(dǎo)致混淆的函數(shù)時(shí)特別有用,提高了代碼的可讀性和健壯性

python禁止位置傳參函數(shù)

這種函數(shù)定義方式使用了 Python 3.x 中的關(guān)鍵字參數(shù)(keyword-only arguments)的特性,通過(guò)在參數(shù)列表中使用 * 符號(hào)作為分隔符,來(lái)明確指示該函數(shù)之后的參數(shù)必須使用關(guān)鍵字(即參數(shù)名)來(lái)傳遞,而不能通過(guò)位置(即按順序)來(lái)傳遞。

在函數(shù)定義中:

def init(
    *,
    args: List[str] | None = None,
    context: Context = None,
    domain_id: int | None = None,
    signal_handler_options: SignalHandlerOptions | None = None
) -> None

所有的參數(shù)(args, context, domain_id, signal_handler_options)都是關(guān)鍵字參數(shù),這意味著在調(diào)用這個(gè)函數(shù)時(shí),必須顯式地使用參數(shù)名來(lái)指定每個(gè)參數(shù)的值,而不能僅僅通過(guò)位置來(lái)傳遞它們。

例如:

# 正確的調(diào)用方式
init(args=["some", "args"], context=some_context, domain_id=123, signal_handler_options=options)

# 錯(cuò)誤的調(diào)用方式(會(huì)引發(fā)TypeError)
init(["some", "args"], some_context, 123, options)

在第二種調(diào)用方式中,因?yàn)闆](méi)有使用參數(shù)名,Python 解釋器無(wú)法將提供的值正確地映射到函數(shù)的參數(shù)上,因此會(huì)拋出一個(gè) TypeError。

這種設(shè)計(jì)在函數(shù)需要很多參數(shù),或者參數(shù)的順序可能會(huì)讓調(diào)用者混淆時(shí)特別有用。

它增加了代碼的可讀性和健壯性,因?yàn)檎{(diào)用者必須清楚地指明每個(gè)參數(shù)的值。

python傳參時(shí)避免參數(shù)改變

import os
import collections
import math
import sys

# 我們知道,用python寫遞歸,在進(jìn)行傳參時(shí),不像C++,參數(shù)的傳遞是值傳遞的時(shí)候,并不改變參數(shù)實(shí)際的值;只有使用引用傳遞時(shí),才會(huì)改變參數(shù),
# 但是在Python中,參數(shù)的傳遞是分為可變類型和不可變類型的,比如list就是可變類型,tuple就是不可變類型,下面就介紹一下兩種方法來(lái)避免參數(shù)的改變。
# 第一種就是使用如下面v[:]來(lái)對(duì)list進(jìn)行操作
"""
def main(v, cnt):
    if cnt == 5:
        v.append(cnt)
        print(v)
        return
    v.append(cnt)
    main(v[:], cnt+1)
    print(v)
    return
"""

"""
v = [1, 2, 3]
main(v[:], 4)
"""

# 第二種就是傳參數(shù)的時(shí)候使用tuple,在函數(shù)里面,把tuple變?yōu)閘ist,可進(jìn)行修改。
"""def main(v, cnt):
    if cnt == 5:
        tmp = list(v)
        tmp.append(cnt)
        print(tmp)
        return
    tmp=list(v)
    tmp.append(cnt)
    main(tuple(tmp), cnt+1)
    print(tmp)
    return

v=[1,2,3]
main(tuple(v),4)"""


總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

洛南县| 桐乡市| 富源县| 平利县| 静乐县| 阳江市| 门头沟区| 高要市| 洱源县| 苏州市| 南充市| 阜新| 汤原县| 天台县| 旌德县| 栾川县| 土默特右旗| 嘉善县| 九江市| 临颍县| 绥化市| 泗阳县| 通化县| 图木舒克市| 治多县| 洛浦县| 丹凤县| 新安县| 无极县| 宜州市| 孟津县| 张家港市| 迁安市| 盈江县| 正蓝旗| 绵竹市| 象山县| 陆河县| 五家渠市| 崇阳县| 息烽县|