Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 从另一个文件覆盖函数中的变量 1.总结_Python_Python 3.x - Fatal编程技术网

Python 从另一个文件覆盖函数中的变量 1.总结

Python 从另一个文件覆盖函数中的变量 1.总结,python,python-3.x,Python,Python 3.x,我不知道如何从另一个文件覆盖函数中的变量 2.例子 2.1. 配置 我使用和模块 我有两个文件-config.py和first.py: config.py: 导入日志 导入系统 从pyfancy.pyfancy导入pyfancy log=logbook.Logger(“配置”) 日志。StreamHandler(sys.stdout, level=logbook.DEBUG).push_应用程序() def绿色\前景(彩色文本): log.debug(pyfancy().green().bol

我不知道如何从另一个文件覆盖函数中的变量


2.例子 2.1. 配置 我使用和模块

我有两个文件-
config.py
first.py

config.py

导入日志
导入系统
从pyfancy.pyfancy导入pyfancy
log=logbook.Logger(“配置”)
日志。StreamHandler(sys.stdout,
level=logbook.DEBUG).push_应用程序()
def绿色\前景(彩色文本):
log.debug(pyfancy().green().bold(coloredtext))
first.py

导入日志
从配置导入绿色前景
log=logbook.Logger(“第一个”)
绿色前景(“萨沙冠军!”)

3.复制步骤 我在控制台中运行:

python first.py

4.预期行为 我想要,那个
log
变量:

  • log=logbook.Logger(“第一”)
    -在
    first.py
  • log=logbook.Logger(“第二个”)
    -in
    second.py
    ,依此类推
D:\PyfancyRefactoring>python first.py
调试:第一名:萨沙冠军!

5.实际行为
config.py
文件中
log
变量的值

D:\PyfancyRefactoring>python first.py
[2018-01-25 16:54:25.469005]调试:配置:萨沙冠军!

6.无济于事 例如,我将以下内容添加到
config.py

if\uuuuuu name\uuuuuu=='config':
log=logbook.Logger(“配置”)
其他:
log=logbook.Logger(“第一个”)
我得到的是实际的行为,而不是预期的行为


7.不提供
  • 我知道我可以在每个文件中定义
    green\u foreground
    函数,但这将是大量重复的代码,我认为这不是一个好的做法

  • 配置文件创建一个名为
    config
    的记录器,函数green\u前台将记录到该记录器。它是这样硬编码的-在任何时候你都不会告诉green_前台函数去记录其他任何地方,它对first.py中创建的日志一无所知

    运行first.py时,python会创建两个不同的
    log
    实例。您可以修改green_前台函数,将
    log
    实例作为参数接受,并默认为在
    config
    中创建的实例,或者:

    更改
    config.py
    以记录此操作:

    log = logbook.Logger(__name__)
    

    Danielle M:我添加了
    config.py
    log=logbook.Logger(\uuuu name\uuuu)
    而不是
    log=logbook.Logger(“config”)
    → 我首先在控制台
    python.py中运行→ 我仍然得到实际的行为,而不是预期的行为。谢谢。你明白为什么程序会这样做吗?您需要告诉green_前台函数使用first.py中定义的记录器。您可以怎么做?DanielleM.:
    您需要告诉green_前台函数使用first.py中定义的记录器。你会怎么做-这是我问的问题:-)。谢谢