python中斜杠t是什么意思_Python:help()输出中的斜杠是什么意思?

Parameters in function definition prior Foraward slash (/) are positional only and parameters followed by slash(/) can be of any kind as per syntax. Where arguments are mapped to positional only parameters solely based on their position upon calling a function. Passing positional-only parameters by keywords(name) is invalid.

举个例子def foo(a, b, / , x, y):

print("positional ", a, b)

print("positional or keyword", x, y)

在上面的函数定义中,参数a和b只是位置参数,而x或y可以是位置参数或关键字。

以下函数调用有效foo(40, 20, 99, 39)

foo(40, 3.14, "hello", y="world")

foo(1.45, 3.14, x="hello", y="world")

但是,以下函数调用无效,这将引发异常类型错误,因为a、b不是作为位置参数传递的,而是作为关键字传递的foo(a=1.45, b=3.14, x=1, y=4)TypeError: foo() got some positional-only arguments passed as keyword

arguments: 'a, b'

python中的许多内置函数只接受按关键字传递参数没有意义的位置参数。例如,内置函数len只接受一个位置(only)参数,其中将len调用为len(obj=“hello world”)会降低可读性,请检查帮助(len)。>>> help(len)

Help on built-in function len in module builtins:

len(obj, /)

Return the number of items in a container.

仅位置参数使底层c/库函数易于维护。它允许在将来更改仅位置参数的参数名,而不会破坏使用API的客户端代码

最后但并非最不重要的一点是,仅位置参数允许我们在变长关键字参数中使用它们的名称。检查以下示例>>> def f(a, b, /, **kwargs):

... print(a, b, kwargs)

...

>>> f(10, 20, a=1, b=2, c=3) # a and b are used in two ways

10 20 {'a': 1, 'b': 2, 'c': 3}

你可能感兴趣的:(python中斜杠t是什么意思)