首页  >  文章  >  后端开发  >  Python 中函数关键字参数的强制执行

Python 中函数关键字参数的强制执行

Patricia Arquette
Patricia Arquette原创
2024-10-22 12:51:02727浏览

Enforcement of function keyword arguments in Python

几个月前开始担任新角色之前,距离我使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn