python常用函數大全,Python使用修飾器強制函數只接收關鍵參數

 2023-10-04 阅读 32 评论 0

摘要:前面發過一篇文章介紹了單獨一個星號或斜線作為函數參數的含義,請查看:Python函數中單獨一個星號或斜線作為形參的含義如果需要強制函數的所有參數都必須以關鍵參數形式進行傳值,可以在定義函數時把單獨一個星號*作為函數第一個參數。例如>>>

前面發過一篇文章介紹了單獨一個星號或斜線作為函數參數的含義,請查看:Python函數中單獨一個星號或斜線作為形參的含義

如果需要強制函數的所有參數都必須以關鍵參數形式進行傳值,可以在定義函數時把單獨一個星號*作為函數第一個參數。例如

>>> def demo(*, a, b):

print(a, b)

python常用函數大全,

>>> demo(a=1, b=2)

1 2

>>> demo(1, 2)

TypeError: demo() takes 0 positional arguments but 2 were given

python函數修改外部變量、也可以使用修飾器實現同樣的功能,下面的代碼首先定義了一個修飾器對函數的關鍵參數和位置參數進行檢查,如果發現有位置參數與關鍵參數同名則拋出異常。

def mustBeKeywords(func):

? ? import inspect

? ? positions = inspect.getargspec(func).args

? ? def wrapper(*args, **kwargs):

python菜鳥教程,? ? ? ? for pos in positions:

? ? ? ? ? ? if pos not in kwargs:

? ? ? ? ? ? ? ? raise Exception(pos+' must be keyword parameter')

? ? ? ? ? ? return func(*args, **kwargs)

? ? return wrapper

深入淺出Python、@mustBeKeywords

def demo(a, b, c):

? ? print(a, b, c)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/112792.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息