Python 中的参数排序约定是什么?
What are the conventions for ordering parameters in Python?
Python 中参数的排序约定是什么?例如,
def plot_graph(G, filename, ...)
# OR
def plot_graph(filename, G, ...)
PEP 0008 -- Style Guide for Python Code | Python.org
没有讨论
摘自Conventions for order of parameters in a function,
的回答
If a language allows passing a hash/map/associative array as a single parameter, try to opt for passing that. This is especially useful for methods with >=3 parameters, ESPECIALLY when those same parameters will be passed to nested function calls.
像def plot_graph(graph=None, filename=None, ...)
一样把每个参数都转成键值对是不是很极端?
只使用关键字参数并不极端。我在许多代码库中都看到过这一点。这允许您扩展功能(通过向您的函数添加新的关键字参数)而不会破坏您以前的代码。它使用起来可能会稍微乏味一些,但绝对更容易维护和扩展。
另请参阅 PEP 3102 -- Keyword-Only Arguments,这是一种在 python 3.
中强制使用关键字参数的方法
确实没有排序约定 function parameters,除了一个限制,即位置非默认参数必须在默认参数之前,然后才是关键字参数,即 def func(pos_1, pos_n, pos_1_w_default='default_val', pos_n_w_default='default_val', *args, kw_1, kw_n, kw_1_w_default='default_val', kw_n_w_default='default_val', **kwargs)
.
通常您会根据参数对函数的含义来逻辑地定义参数顺序,例如如果你定义一个做减法的函数,这是合乎逻辑的,被减数应该是第一个参数,减数应该是第二个。在这种情况下,倒序是可能的,但这不合逻辑。
此外,如果您认为您的函数可能会被使用 partially,那可能会影响您对参数排序的决定。
您需要了解的关于函数参数的大部分内容都在 official tutorial。
P.S。关于您使用图形函数的特定示例...考虑到您的函数名称,它用于显示图形,因此必须提供 graph
作为参数,否则没有任何内容可显示,因此 graph=None
通过默认值没有多大意义。
Python 中参数的排序约定是什么?例如,
def plot_graph(G, filename, ...)
# OR
def plot_graph(filename, G, ...)
PEP 0008 -- Style Guide for Python Code | Python.org
没有讨论摘自Conventions for order of parameters in a function,
的回答If a language allows passing a hash/map/associative array as a single parameter, try to opt for passing that. This is especially useful for methods with >=3 parameters, ESPECIALLY when those same parameters will be passed to nested function calls.
像def plot_graph(graph=None, filename=None, ...)
一样把每个参数都转成键值对是不是很极端?
只使用关键字参数并不极端。我在许多代码库中都看到过这一点。这允许您扩展功能(通过向您的函数添加新的关键字参数)而不会破坏您以前的代码。它使用起来可能会稍微乏味一些,但绝对更容易维护和扩展。
另请参阅 PEP 3102 -- Keyword-Only Arguments,这是一种在 python 3.
中强制使用关键字参数的方法确实没有排序约定 function parameters,除了一个限制,即位置非默认参数必须在默认参数之前,然后才是关键字参数,即 def func(pos_1, pos_n, pos_1_w_default='default_val', pos_n_w_default='default_val', *args, kw_1, kw_n, kw_1_w_default='default_val', kw_n_w_default='default_val', **kwargs)
.
通常您会根据参数对函数的含义来逻辑地定义参数顺序,例如如果你定义一个做减法的函数,这是合乎逻辑的,被减数应该是第一个参数,减数应该是第二个。在这种情况下,倒序是可能的,但这不合逻辑。
此外,如果您认为您的函数可能会被使用 partially,那可能会影响您对参数排序的决定。
您需要了解的关于函数参数的大部分内容都在 official tutorial。
P.S。关于您使用图形函数的特定示例...考虑到您的函数名称,它用于显示图形,因此必须提供 graph
作为参数,否则没有任何内容可显示,因此 graph=None
通过默认值没有多大意义。