我试图简单地使函数接收的参数可用于文件中的所有其他函数,或者将其设置为全局变量,而不必将其作为所有其他函数的参数传递。到目前为止,我已经尝试将其设置为全局变量,但是显然不能将参数也设置为全局变量。
这里是我想要的简单例子:
def add(a,b, verbose):
global verbose
return a + b
result = add(2,3, False)
print(verbose)
在我的情况下,被调用函数在另一个文件上,因此无法预先将详细设置为全局。任何帮助将不胜感激!
答案 0 :(得分:2)
如果要分配给函数内部的全局verbose
变量,可以执行以下操作:
def add(a,b, verbose_value):
global verbose
verbose = verbose_value
return a + b
result = add(2,3, False)
print(verbose)
答案 1 :(得分:1)
首先,一般来说,全局变量是邪恶的-更确切地说,应尽可能避免从函数内部更改或更糟地重新绑定全局变量。
第二点:在Python中,“全局”实际上意味着“模块级”-没有“进程级”全局(请注意,这是基于上面第一点的设计选择)
第三点:对于一般的用例(应用程序设置),“较少危害”的方法是使所有模块都使用设置系统,而不是“将参数传递给将其设置为全局功能的函数”不需要传递”,您的模块只需导入设置并从那里读取参数值(例如django设置)。
缺点是1 /只有您自己的代码才能使用这些设置,而2 /使您的代码依赖于这些设置(有时可以是PITA)。
最后,给定“冗长”的名称,我假设您要配置程序调试/错误输出的详细程度。以标准的,可移植的和良好分离的方式(将解决上述两个缺点,解决此功能)的正确方法是使用use the stdlib's logging package。此软件包旨在将记录器的使用(在“库”代码中,使用logger.log(level, msg, ...)
或其快捷方式之一)与日志记录配置(特定于应用程序/安装)分开。首先需要进行一些学习,但是根据经验,它要花很多时间,实际上节省时间很快。