几个月前开始担任新角色之前,距离我使用 Python 编程已经非常很长一段时间了。
顺便说一句,在过去的几年里,我一直在从事涉及全栈 Javascript 或主要是 Javascript 并带有一点其他语言(最近是 Go)的角色。
因此,使用不同的语言来伸展我的肌肉是很有趣的,尤其是像 Python 这样易于访问的语言。
我现在喜欢的语言的一个功能是使用 @dataclass 装饰器中可访问的 kw_only 属性对函数强制执行关键字参数。
它生成的代码如下所示:
from dataclasses import dataclass @dataclass(kw_only=True) class Person: name: str age: int city: str person1 = Person("Alice", 30, "New York")
引发错误,因为使用 kw_only 预计会看到类似以下内容:
from dataclasses import dataclass @dataclass(kw_only=True) class Person: name: str age: int city: str = "Unknown" person1 = Person(name="Alice", age=30, city="New York")
虽然引发了错误:
TypeError Traceback (most recent call last) Cell In[8], line 10 7 city: str = "Unknown" ---> 10 person1 = Person("Alice", 30, "New York") TypeError: Person.__init__() takes 1 positional argument but 4 were given
是“明确的”,因为它会向您表明提供了太多的位置参数,如果您不熟悉 kw_only ,它可能会有点令人费解,因为它看起来您正在正确调用该函数。
如果你像我一样有 Javascript/Typescript 的背景,或者以前有使用 Go 或 Rust 等语言的经验,这些语言使用结构之类的东西来强制执行此操作,在结构中你可以按照你喜欢的任何顺序提供参数,只要由于属性遵循对象/结构的形状,因此这会让人感觉很熟悉,并且可能是您的 Python 代码中受欢迎的补充。
如果您正在使用大量参数(其中一些参数可能是可选的),这尤其有用。
以上是Python 中函数关键字参数的强制执行的详细内容。更多信息请关注PHP中文网其他相关文章!