前面發過一篇文章介紹了單獨一個星號或斜線作為函數參數的含義,請查看: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)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态