将大量参数传递给 Python 函数的方法

Posted

技术标签:

【中文标题】将大量参数传递给 Python 函数的方法【英文标题】:Methods for passing large numbers of arguments to a Python function 【发布时间】:2014-03-08 01:37:13 【问题描述】:

我在一个项目中遇到了一个问题,在 Python 中,能够将大量(数十个,而不是数百个)参数传递给单个“一次编写,多次使用”函数可能很有用.问题是,我不确定最好的方法是处理这样的一大块函数 - 只需将它们作为单个字典传递并在函数中解压缩该字典,或者是否有更高效/pythonic达到相同效果的方法。

【问题讨论】:

查看***.com/questions/1769403/…,可用于此目的。类似于解包字典,但每个函数只是解包它正在寻找的参数 请把你的代码贴出来好吗? @kkuilla 不,因为这是“在编写代码之前决定方法”的情况。 我可以想象这可能是题外话(主要基于意见)。无论如何,我认为@JLLagrange 的链接和该帖子中的链接会带你走很远...... 【参考方案1】:

根据您的具体操作,您可以通过两种标准方式之一将任意参数传递给 Python 函数。第一种是将它们作为元组传递(即基于函数调用中的位置)。第二种是将它们作为键值对传递,存储在函数定义中的映射中。如果您希望能够使用键区分参数,您可以使用key=value 形式的参数调用函数,并从函数定义中的映射参数(以** 前缀声明)中检索它们。按照惯例,此参数通常称为kwargs。传递任意数量参数的另一种方法是将它们作为元组传递。如果您使用 * 前缀声明参数,Python 会自动将参数包装在一个元组中。此参数通常按约定称为args。您当然可以根据需要将这两者与其他命名参数结合使用。

【讨论】:

以上是关于将大量参数传递给 Python 函数的方法的主要内容,如果未能解决你的问题,请参考以下文章

怎么将可变参数的函数的参数传递给另一个可变参数的函数

如何将附加参数传递给自定义 python 排序函数

将一个函数的所有参数传递给另一个函数

如何将参数传递给 Python 模块中的主函数?

将带参数的函数传递给Python中的另一个函数?

当我们将对象作为参数传递给方法时,为啥会调用复制构造函数?