Skip to main content
 首页 » 编程设计

Python 实践 : arguments passed by "reference"

2025年05月04日10yyy_WW

考虑一个类的实例:

class Car(object): 
    def __init__(self): 
        self.engine = None 

以及修改该实例的函数:

def add_engine(car): 
    car.engine = 'V6' 

Python 没有指出参数将被修改的隐式技术。我能想到的最佳解决方案是返回修改后的对象(即使它与作为参数传递的对象相同):

def add_engine(car): 
    car.engine = 'V6' 
    return car 

您将如何解决这个设计问题?

--

各位,非常感谢您的回答。你的建议帮助清理了我脑海中的困惑 :)

请您参考如下方法:

FWIW,我注意到在 Python 世界中,具有副作用的函数/方法(例如您所询问的那个)总是返回 None。 (这是隐式完成的,通过使用不带参数的 return 语句,或者干脆完全省略 return。)

例如,比较 sorted 内置函数,它返回一个新列表(当然是排序的),而 list.sort 方法返回 无,因为在这种情况下列表是就地排序的。类似的情况适用于 reversed 内置函数和 list.reverse 方法。

因此,IMO,只要让你的函数(隐含地)返回 None 就足以提醒用户该函数有副作用(因为没有副作用,一个函数总是以传统的“Pythonic”方式返回的 None 基本上是一个空操作。