1

在编写一个接受可变对象的函数时,该对象可能会被更改,是否有必要将此对象返回给调用者?

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

  1. 是否有特定的 PEP 指南?
  2. 如果不是,那么 Python 编程世界中最常见的是什么?

一点代码:

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可能会改变......

4

2 回答 2

2

这不是任何 PEP 所涵盖的,这完全取决于作者的风格。不过,通常在 API 设计中,改变参数的方法不会返回任何东西,所以你不会忘记你正在改变东西。这种设计要非常小心。

于 2017-07-23T23:30:46.480 回答
0

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

这当然也提出了str.strip它也是str返回新对象的类型对象的方法。

于 2017-07-23T23:31:56.823 回答