修改函数参数的默认值

时间:2020-04-16 19:32:54

标签: python

我有以下模块:

cat.py:

DEFAULT_SOUND='meow'

def make_sound(sound=DEFAULT_SOUND):
    print(sound)

animal.py

import cat

def sound():
    cat.make_sound()

我需要打电话给animal.sound,但我希望猫发出不同的声音。我尝试过:

import animal

# Change the sound
import cat
cat.DEFAULT_SOUND='nyan'

animal.sound()

,但是不起作用(输出为meow)。回顾一下,如果默认值是在Python处理cat.py时从DEFAULT_SOUND的值设置的,这并不奇怪。

猫有办法发出不同的声音吗? animal.pycat.py都不能被我编辑,尽管我可以要求他们的维护者进行更改。 animal.sound实际上是几个嵌套的调用,并且无法更改所有嵌套的调用以传递声音。

1 个答案:

答案 0 :(得分:3)

您可以从partial模块使用functools函数。
Here是文档。

返回一个新的部分对象,该对象在被调用时的行为类似于func 用位置参数args和关键字参数调用 关键字。

from functools import partial

import animal
import cat

cat.make_sound = partial(cat.make_sound, sound='nyan')

animal.sound()
nyan
相关问题