问题标签 [pep570]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在python的用户定义函数中实现“仅位置参数”?
如何为用户在 python 中定义的函数实现“仅位置参数”?
python - 如何创建一个只接受位置参数而没有关键字参数的python函数?
python 中的许多内置函数不采用关键字参数。比如chr
函数。
尝试将值传递给chr
使用关键字参数是行不通的。
我知道函数/
帮助文本中的字符chr
意味着它不会接受关键字参数。
如何定义不带关键字参数的函数?当然,我想定义一个接受参数的函数,但只接受位置参数。
这可能会被标记为重复,但至少这样我会得到答案。我找不到这个问题的 StackOverflow 答案。
我学到的另一个类似功能是创建一个不接受位置参数的函数。
这个问题与我的类似,但它实际上并没有回答我的问题。我仍然不知道如何定义一个不接受关键字参数的函数,比如几个内置函数。
python - 使用正斜杠定义仅位置参数时出现语法错误
我在这里关注 python 教程。
我正在尝试使用仅位置参数定义一个函数,但我得到一个无效的语法错误
我已经尝试了命令行解释器并将定义放入文件中
我的定义看起来像这样
我得到通常的语法错误
使用*
仅定义关键字参数的函数就可以了。
python - Python 3.8 中仅位置参数有什么作用?
python代码下面做什么?
python - 为什么在 python 3.8 中只使用位置参数?
3.8 中引入了新的“仅位置参数”语法。
从文档中的仅位置参数:
有新的语法 (
/
) 表示必须在位置上指定某些函数参数(即,不能用作关键字参数)。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)
是无效的。
我的问题是,为什么要使用这种语法?
为什么对代码的用户更好?
在我看来,这让用户更难指定他们的论点的实际含义,如果他们愿意的话。
为什么要让用户更难?
我显然错过了一些东西。
python - Python 3.8 中仅位置参数的极端情况?
我正在摆弄PEP 570中指定并随Python 3.8引入的仅位置参数,我只是想知道一个特定的极端情况。
假设我定义了一个函数如下(无论这是好的设计还是有任何意义):
所以有一个必需参数 ( p1
),后跟两个可选参数 (p2
和p3
)。我可以用 just p1
, p1
and p2
or p1
and p2
and来调用函数p3
:
但是我无法在保持默认 for 的同时使用p1
和参数调用它,因为我无法提供关键字参数:p3
p2
这当然会引发TypeError
:
我找不到关于这种情况的任何讨论或示例,因为PEP 570中的所有示例仅包含一个可选参数作为仅位置参数的一部分:
所以我的问题是:这是预期的行为,让调用者从左到右提供多个可选参数,以强制顺序覆盖它们吗?这实际上是仅位置参数的一个特征吗?
python - 如何在给定参数字典的情况下调用仅位置参数的函数?
以前我曾经Signature.bind(argument_dict)
将参数字典转换为BoundArguments
具有.args
并且.kwargs
可以传递给函数的对象。
但是当函数只有位置参数时,这似乎是不可能的。
在这种情况下,如何以编程方式调用该函数?
BoundArguments
这些是从参数字典构造的本机方式吗?
python - 仅位置参数与 python 3.7 的兼容性
我想使用 PEP570 中定义的新的仅位置参数语法,但我也想保持与 python 3.7 的兼容性(直接运行脚本def f(a, /, b):
会直接导致语法错误)。有没有办法做到这一点?
如果没有,对于包维护者,他们是否必须避免使用新功能,直到放弃对 python 3.7 的支持?