Python函数如何确定是否(以及如何)显式传递了kwarg默认值?

假设垃圾邮件功能具有签名垃圾邮件(ham = None).以下三个调用都将导致垃圾邮件命名空间中的局部变量ham具有值None:

spam()
spam(None)
spam(ham=None)

垃圾邮件如何找出实际使用这三种替代方案中的哪一种?

最佳答案 它不能.
This question描述了一种使用装饰器来包装函数并将传递的参数设置为属性的方法.但是如果没有外界的帮助,就无法从垃圾邮件中找到答案.您必须使用接受** kwargs并使用它来存储信息的函数来拦截调用.

但是,你应该谨慎这样做.传递参数的不同方式应该是相同的.如果你做了一些让他们以不同方式工作的事情,那么你会混淆许多试图使用你的功能的人.

点赞