【问题标题】:Is there a specific convention when passing multiple arguments into a function?将多个参数传递给函数时是否有特定的约定?
【发布时间】:2019-01-12 11:51:56
【问题描述】:

我刚开始使用 Python 并在 python 中创建一个接收 4 个参数的主函数。然后在该函数中,调用另外两个需要相同 4 个参数的函数。

下面哪个更“Pythonic”?

一)

def function_main(arg1, arg2, arg3, arg4):
    innner_function(arg1, arg2, arg3, arg4)
    second_inner_function(arg1, arg2, arg3, arg4)

B)

def function_main(arg1, arg2, arg3, arg4):
    arg_list = [arg1, arg2, arg3, arg4]
    innner_function(arg_list)
    second_inner_function(arg_list)

第二个似乎更干燥,但我不确定如果有这样的事情是不是太干燥了。哪个被认为是最好用的?

【问题讨论】:

  • 请注意:A 和 B 不相同...您需要解压缩 arg_list 才能使它们如此 - 例如:inner_function(*arg_list)
  • 您应该能够在def function_main 和所有调用中使用*args

标签: python function arguments conventions


【解决方案1】:

我认为这是一个设计问题,而不是“样式”约定,我建议避免两者。此外,即使出于说明目的,请不要使用“function_*”或类似名称的“工作伪代码”。

根据问题,让我们缩小一点,以获得更广阔的视野。考虑一些方面(牢记 OOP 实践):

• 一个主要方法(或 Python 中的定义)基本上是为了结构目的和可读性而存在的

• 一个相同原语的数组很可能不应作为单独的元素传递,但是:

• 如果您需要将这些值分开,请将它们保留为嵌套功能
• 如果不这样做,请将它们在 a 之前分配给变量、对象、枚举或常量,甚至是(小心,考虑设计)
• 如果您的元素是完全不相关内容的不同数据类型,请将它们分开
• 如果它们不同,但出于上下文原因应该放在一起考虑创建一个类并使用一个对象
• 如果您的元素是更大数据保留的子集,请考虑使用适当的数据结构(如 XML、JSON 甚至数据库)并在适当的 OO 中进行设计

•(在设计中总会有一些你错过的东西,习惯它,永远不要停止反思)

我的建议是继续练习。这是一个只存在于初学者级别的问题,并且会随着您不断增长的设计经验而迅速消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2021-02-13
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多