Python,我是否需要返回作为参数传入的对象?

时间:2017-07-23 23:15:33

标签: python pep8 pep

当编写一个接受可更改对象的函数时,是否需要将此对象返回给调用者?

必要时我的意思是......

  1. 是否有针对此的特定PEP指南?
  2. 如果没有,那么Python编程领域最常见的是什么?
  3. 一点代码:

    def foo(args):
        args['a'] = 'new-value'
        args['b'] = args['b'] + 1
    
        # is there a need for a 'return args' ?
    
    args = {'a': 'old-value', 'b': 99}
    foo(args) # is there a need for args = foo(args)
    print(args['a'], args['b']) # outputs new-value 100
    

    “明确比隐含更好。”让我觉得我应该让args的潜力在主体中非常明确地变化,这样就不必查看函数来查看args是否可能被更改......

2 个答案:

答案 0 :(得分:2)

任何PEP都没有涵盖这一点,这完全取决于作者的风格。通常在API设计中,改变参数的方法不会返回任何内容,所以你不要忘记你是在改变事物。对这种设计要非常小心。

答案 1 :(得分:0)

就python中更常见的东西而言,有一些例子表明传递的对象被改变了。这些往往是要修改的对象的方法(例如list.append,其中list是一个类型),但是大多数函数倾向于获取传递的对象的副本并返回一个新的(例如string.strip,其中string是模块string)。

这当然也会调出str.strip,它也是一个返回新对象的str类型对象的方法。

相关问题