修改函数参数是错误的做法吗?

时间:2019-06-18 12:08:11

标签: python function methods containers

修改函数参数是否不好?

_list = [1,2,3]
def modify_list(list):
    list.append(4)

print(_list)
modify_list(_list)
print(_list)

1 个答案:

答案 0 :(得分:1)

起初它应该是注释,但是需要更多的格式和空间来解释该示例。 ;)

如果您:

  • 知道你在做什么
  • 可以证明其用途
  • 不要使用可变的默认参数(它们的行为方式过于混乱,我无法想象使用它们的理由 永远是合理的)
  • 不要在该事物附近的任何地方使用全局可变变量(修改可变全局变量的内容并修改可变参数的内容?)
  • 最重要的是,记录下这件事,

这件事不应该造成很大的伤害(但是,如果您仅认为知道自己在做什么,仍然可能会咬你,但实际上你不会),可能会有用!


示例:

我使用过使用可变参数的脚本(由其他程序员制作)。在这种情况下:词典。

该脚本应该与线程一起运行,但也允许单线程运行。使用字典而不是返回值消除了在单线程和多线程运行中获得结果的区别:

通常,线程返回的值是封装的,但无论如何我们仅使用.join之后的值,并且不关心被异常杀死的线程(单线程运行主要用于调试/本地运行)。 / p>

这样,词典(单个函数中有多个词典)用于在每次运行中附加新结果,而无需手动收集返回值并对其进行过滤(被调用函数知道将结果放入哪个字典中) ,使用锁来确保线程安全)。


这是一种“好”还是“错”的做事方式?

我认为这是一种 pythonic 的处理方式:

  • 两种形式都易于阅读-在单线程和多线程中处理结果都是相同的
  • 数据是“自动”的格式,相对于解封装线程结果,手动收集和解析数据而言,
  • 并且非常容易理解-上面我的列表中的第一和最后一点;)