Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动替换模块中每个函数的默认值_Python_Python 3.x - Fatal编程技术网

Python 自动替换模块中每个函数的默认值

Python 自动替换模块中每个函数的默认值,python,python-3.x,Python,Python 3.x,我一直在玩弄easygui,我想知道如果每个方法都有这样一个参数,是否有任何方法可以自动覆盖title的参数默认值 例如,我现在可以做: import easygui oldf = easygui.boolbox def newf(title='mytitle', *args): oldf(title=title, *args) easygui.boolbox = newf 有没有一种更复杂、更快速的方法可以做到这一点?以下是您可以做到的方法: import easygui impo

我一直在玩弄
easygui
,我想知道如果每个方法都有这样一个参数,是否有任何方法可以自动覆盖
title
的参数默认值

例如,我现在可以做:

import easygui

oldf = easygui.boolbox
def newf(title='mytitle', *args):
    oldf(title=title, *args)
easygui.boolbox = newf

有没有一种更复杂、更快速的方法可以做到这一点?

以下是您可以做到的方法:

import easygui
import inspect
import functools

funcs = [f for f in easygui.__dict__.values() if callable(f)]
for func in funcs:
    sig = inspect.signature(func)
    if 'title' in sig.parameters:
        newf = functools.partial(func, title='mytitle')
        setattr(easygui, func.__name__, newf)