在Python中排序参数的约定是什么?

时间:2016-03-23 16:49:37

标签: python parameters naming-conventions

Python中排序参数的约定是什么?例如,

short

PEP 0008 -- Style Guide for Python Code | Python.org

中没有讨论

摘自Conventions for order of parameters in a function的回答,

  

如果某种语言允许将散列/映射/关联数组作为单个参数传递,请尝试选择传递该参数。这对于具有> = 3参数的方法特别有用,特别是当这些相同参数将传递给嵌套函数调用时。

将每个参数转换为键值对是否极端,例如def plot_graph(G, filename, ...) # OR def plot_graph(filename, G, ...)

2 个答案:

答案 0 :(得分:2)

除了限制位置非默认参数必须在带有默认值的参数之前,然后只有关键字参数,即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)之外,才排序function parameters。{/ p} >

通常,您可以根据函数的含义逻辑定义参数顺序,例如:如果你定义一个做减法的函数,它是合乎逻辑的,那个minuend应该是第一个参数,而subtrahend应该是第二个。在这种情况下,反向顺序是可能的,但它不合逻辑。

此外,如果您认为您的功能可能会被partially使用,则可能会影响您对参数排序的决定。

您需要了解的有关函数参数的大部分内容都在official tutorial

P.S。关于具有图形功能的特定示例...考虑到您的函数名称,它用于显示图形,因此必须提供graph作为参数,否则无法显示任何内容,因此制作{{ 1}}默认情况下并没有多大意义。

答案 1 :(得分:1)

仅使用关键字参数并不是极端的。我在许多代码库中都看到了这一点。这允许您扩展功能(通过向函数添加新的关键字参数)而不会破坏以前的代码。使用它可能稍微繁琐,但肯定更容易维护和扩展。

另请查看PEP 3102 -- Keyword-Only Arguments,这是一种强制在python 3中使用关键字参数的方法。