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

Python中参数排序的约定是什么?,python,parameters,naming-conventions,Python,Parameters,Naming Conventions,Python中参数排序的约定是什么?比如说, def plot_graph(G, filename, ...) # OR def plot_graph(filename, G, ...) 本节没有讨论 摘自: 如果语言允许将哈希/映射/关联数组作为单个参数传递,请尝试选择传递该参数。这对于参数大于等于3的方法特别有用,尤其是当这些参数将传递给嵌套函数调用时 将每个参数转换为键值对是否极端,如def plot\u graph(graph=None,filename=None,…)?仅使用关键

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

def plot_graph(G, filename, ...)

# OR

def plot_graph(filename, G, ...)
本节没有讨论

摘自:

如果语言允许将哈希/映射/关联数组作为单个参数传递,请尝试选择传递该参数。这对于参数大于等于3的方法特别有用,尤其是当这些参数将传递给嵌套函数调用时


将每个参数转换为键值对是否极端,如
def plot\u graph(graph=None,filename=None,…)

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


另请看一看,这是一种在python 3中强制使用关键字参数的方法。

除了位置非默认参数必须在具有默认值的参数之前,并且只有关键字参数之后,即
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)

通常,您根据参数对函数的含义来逻辑地定义参数顺序,例如,如果您定义一个进行减法运算的函数,那么minuted应该是第一个参数,subtrahand应该是第二个参数,这是合乎逻辑的。在这种情况下,可以颠倒顺序,但这不是合乎逻辑的

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

关于函数参数,您需要了解的大部分内容都在中


另外,关于graph函数的特定示例……考虑到函数名,它用于显示图形,因此必须提供
graph
作为参数,否则就没有什么可显示的,因此默认设置
graph=None
没有多大意义。

这取决于是否要提供默认值值或某些参数是可选的,等等。如果所有参数都是必需的,并且你给出默认值,那么检查每个参数就会很混乱,如果args1为无,如果args2为无..这会很快变得丑陋,正如其他人提到的,没有约定和限制,除非你有默认值,但我会使函数gnature读起来是一个完整的句子,比如“plat一个图形G和文件名foo的函数”。