3.8中引入了新的“仅位置参数”语法。
来自文档中的Positional-only parameters:
有新的语法(
/
)表示某些函数参数必须 位置指定(即,不能用作关键字参数)。 对于实现的功能,此符号与help()
所示的符号相同 用C语言编写(由Larry Hastings的Argument Clinic工具制作)。
来自http://northtexasroofing.net/article/10509084.shtml:
现在
pow(2, 10)
和pow(2, 10, 17)
是有效呼叫,但是pow(x=2, y=10)
和pow(2, 10, z=17)
无效。
我的问题是,为什么要使用这种语法?
为什么对代码的用户更好?
在我看来,如果用户愿意,这将使用户更难指定其参数的实际含义。
为什么要加重用户负担?
我显然错过了一些东西。
答案 0 :(得分:0)
为简要总结PEP 570中陈述的基本原理,PEP添加了仅位置参数:
dict
类型的构造函数)采用任意关键字参数。如果要尝试在python中定义具有此类行为的类,则必须编写def __init__(self, **kwds)
,...,除非您不能使用名为self
的关键字参数!仅位置参数可以避免此缺陷。int
构造函数。 int(x="3")
比int("3")
更具可读性。仅位置参数允许将没有固有含义的名称视为实现细节,而不是模块的公共API的一部分。PEP中还有更多细节,但是这三点总结了存在该功能的一般原因。