相关疑难解决方法(0)

2149
推荐指数
17
解决办法
65万
查看次数

星号*在Python中意味着什么?

*在C中具有特殊含义,就像在C中一样吗?我在Python Cookbook中看到了这样的函数:

def get(self, *a, **kw)
Run Code Online (Sandbox Code Playgroud)

您能否向我解释或指出我能在哪里找到答案(Google将*解释为外卡字符,因此我找不到满意的答案).

非常感谢你.

python

295
推荐指数
5
解决办法
17万
查看次数

在Python中强制命名参数

在Python中,您可能有一个函数定义:

def info(object, spacing=10, collapse=1)
Run Code Online (Sandbox Code Playgroud)

可以通过以下任何一种方式调用:

info(odbchelper)                    
info(odbchelper, 12)                
info(odbchelper, collapse=0)        
info(spacing=15, object=odbchelper)
Run Code Online (Sandbox Code Playgroud)

感谢Python允许任意顺序参数,只要它们被命名.

我们遇到的问题是我们的一些较大的功能增长,人们可能会之间添加参数spacingcollapse,这意味着错误的值可以将未命名的参数.此外,有时候我们并不总是清楚需要注意什么.我们正在采用一种方法强迫人们命名某些参数 - 不仅仅是编码标准,而且理想情况下是标志或pydev插件?

所以在上面的4个例子中,只有最后一个会通过检查,因为所有参数都被命名.

赔率是我们只会为某些功能打开它,但任何关于如何实现这一点的建议 - 或者如果它甚至可能会被赞赏.

python coding-style function parameter-passing

94
推荐指数
5
解决办法
2万
查看次数

*(单星)和/(斜线)作为独立参数有什么作用?

在下面的函数定义中,*/代表什么?

def func(self, param1, param2, /, param3, *, param4, param5):
     print(param1, param2, param3, param4, param5)
Run Code Online (Sandbox Code Playgroud)

注意:不要误认为 *args | 中的单|双星号 **kwargs(在这里解决

python function parameter-passing function-parameter python-3.x

47
推荐指数
2
解决办法
3551
查看次数

在Python方法签名中正斜杠"/"的含义是什么,如help(foo)所示?

在以交互方式返回的签名中help(foo),是什么意思/

In [37]: help(object.__eq__)

Help on wrapper_descriptor:

__eq__(self, value, /)
    Return self==value.

In [55]: help(object.__init__)

Help on wrapper_descriptor:

__init__(self, /, *args, **kwargs)
    Initialize self.  See help(type(self)) for accurate signature.
Run Code Online (Sandbox Code Playgroud)

我认为它可能与仅关键字参数有关,但事实并非如此.当我使用仅关键字参数创建自己的函数时,位置和仅关键字参数由*(按预期)分隔,而不是由/.什么/意思?

python inspection python-interactive

26
推荐指数
1
解决办法
4381
查看次数

没有标识符的单个*在Python3函数中意味着什么?

没有标识符的单个*在Python函数参数中意味着什么?这是一个适用于Python3.2的示例:

class Shape:
    def __init__(self, *, shapename, **kwds):
        self.shapename = shapename
        super().__init__(**kwds)
Run Code Online (Sandbox Code Playgroud)

对我来说,自我之后的明星很奇怪.

我在这里找到了它(从第46行开始):http: //code.activestate.com/recipes/577720-how-to-use-super-effectively/

python function python-3.x

22
推荐指数
1
解决办法
1121
查看次数

函数参数中裸星号的目的是什么?

我已经看到了这个问题(这不是重复的):Python在函数参数中显示星号

在python-3.x中你可以*为函数参数添加一个裸,这意味着(引自docs):

"*"或"*identifier"之后的参数是仅关键字参数,并且只能传递使用的关键字参数.

好的,我已经定义了一个函数:

>>> def f(a, b, *, c=1, d=2, e=3):
...     print('Hello, world!')
... 
Run Code Online (Sandbox Code Playgroud)

我可以通过c,de变量值只能通过指定关键字:

>>> f(1, 2, 10, 20, 30)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: f() takes 2 positional arguments but 5 were given
>>> f(1, 2, c=10, d=20, e=30)
Hello, world!
Run Code Online (Sandbox Code Playgroud)

问题是:

  • 这种限制/语法糖的动机是什么?
  • 它涵盖了哪些用例?
  • 它真的用在切换到python3的第三方库中吗?

一些"真实世界"的例子会有很大帮助.提前致谢.

python arguments function keyword-argument python-3.x

19
推荐指数
1
解决办法
1735
查看次数

* 作为python中的参数是什么意思?

我正在浏览这个代码文件,然后我找到了这个类:

class StreamPlaylistEntry(BasePlaylistEntry):
def __init__(self, playlist, url, title, *, destination=None, **meta):
    super().__init__()
Run Code Online (Sandbox Code Playgroud)

我知道参数前面的星号表示它是任意数量参数的列表,但星号本身是什么意思?

python parameters arguments

8
推荐指数
1
解决办法
3587
查看次数

明星*在函数声明中的含义是什么?

*以下代码(在pprint库中找到)的含义是什么?

def pformat(object, indent=1, width=80, depth=None, *, compact=False):
    """Format a Python object into a pretty-printed representation."""
    return PrettyPrinter(indent=indent, width=width, depth=depth,
                         compact=compact).pformat(object)
Run Code Online (Sandbox Code Playgroud)

如果是*args那么它将是任意数量的位置参数.参数值将在名为的元组中args.前4个参数可以按名称或按位置compact分配,参数只能按名称分配...

好吧,不!因为它不符合文档:

在函数调用中,关键字参数必须遵循位置参数.

那么,明星在其他命名参数之前和之后做了什么?那是怎么用的?或者为什么不使用它?

python syntax parameter-passing

7
推荐指数
1
解决办法
354
查看次数

Python函数定义中的正斜杠?

Python 3.8 Programming FAQ 中,我看到了以下函数定义:

class callByRef:
    def __init__(self, /, **args):
        for key, value in args.items():
            setattr(self, key, value)
Run Code Online (Sandbox Code Playgroud)

这在Python 3.7 版本中缺失:

class callByRef:
    def __init__(self, **args):
        for (key, value) in args.items():
            setattr(self, key, value)
Run Code Online (Sandbox Code Playgroud)

这是什么新/语法?

它与/出现在help()输出中有什么关系?


注意:thisthis question 是关于help() annotation,而 this question 是关于新语法和help()注释的任何差异。

python arguments parameter-passing

7
推荐指数
1
解决办法
1289
查看次数