python:是否可以要求函数的参数都是关键字?
为了避免明显的错误,我想防止在某些函数中使用位置参数。有什么办法可以实现这一点吗?
To avoid the obvious bugs, I'd like to prevent the use of positional arguments with some functions. Is there any way to achieve that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只有 Python 3 可以正确执行此操作(并且您使用了 python3 标记,因此没问题):
使用
**kwargs
将允许用户输入任何参数,除非您稍后检查。此外,它还会隐藏真实的参数名称以防止自省。**kwargs
不是这个问题的答案。测试程序:
Only Python 3 can do it properly (and you used the python3 tag, so it's fine):
using
**kwargs
will let the user input any argument unless you check later. Also, it will hide the real arguments names from introspection.**kwargs
is not the answer for this problem.Testing the program:
您可以定义一个装饰器,如果它装饰的函数使用任何位置参数,则使用内省会导致错误。这允许您防止在某些函数中使用位置参数,同时允许您根据需要定义这些函数。
举个例子:
要使用它:
您不能这样使用它(类型错误):
您可以这样使用它:
更强大的解决方案将使用
decorator
模块。免责声明:不保证深夜答案!
You could define a decorator that, using introspection, causes an error if the function that it decorates uses any positional arguments. This allows you to prevent the use of positional arguments with some functions, while allowing you to define those functions as you wish.
As an example:
To use it:
You cannot use it thus (type error):
You can use it thus:
A more robust solution would use the
decorator
module.Disclaimer: late night answers are not guaranteed!
是的,只需使用
**kwargs
构造并仅从那里读取您的参数。Yes, just use the
**kwargs
construct and only read your parameters from there.