gpt4 book ai didi

python - 从另一个文件覆盖函数中的变量

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:34 25 4
gpt4 key购买 nike

1。总结

我没有找到如何从另一个文件覆盖函数中的变量。


2。例子

2.1。配置

我使用 logbookpyfancy模块。

我有 2 个文件 — config.pyfirst.py:

config.py:

import logbook
import sys

from pyfancy.pyfancy import pyfancy

log = logbook.Logger("config")


logbook.StreamHandler(sys.stdout,
level=logbook.DEBUG).push_application()


def green_foreground(coloredtext):
log.debug(pyfancy().green().bold(coloredtext))

first.py:

import logbook

from config import green_foreground

log = logbook.Logger("first")

green_foreground("Sasha Champion!")

3。重现步骤

我在控制台中运行:

python first.py

4。预期行为

我想要那个 log 变量:

  • log = logbook.Logger("first") — 在 first.py 中,
  • log = logbook.Logger("second") — 在 second.py 中等等。
D:\PyfancyRefactoring>python first.py
[2018-01-25 16:54:25.469005] DEBUG: first: Sasha Champion!

5。实际行为

config.py 文件中 log 变量的值。

D:\PyfancyRefactoring>python first.py
[2018-01-25 16:54:25.469005] DEBUG: config: Sasha Champion!

6。没有帮助

比如我在config.py中添加:

if __name__ == 'config':
log = logbook.Logger("config")
else:
log = logbook.Logger("first")

我得到的是实际行为,而不是预期的行为。


7.不提供

  1. 我知道我可以在每个文件中定义 green_foreground 函数,但是会有很多重复代码,我认为这不是一个好的做法。

最佳答案

配置文件创建一个名为 config 的记录器,函数 green_foreground 记录到该记录器。它是硬编码的——在任何时候你都不会告诉 green_foreground 函数在其他任何地方记录,它不知道在 first.py 中创建的日志。

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

更改 config.py 以改为记录此内容:

log = logbook.Logger(__name__)

关于python - 从另一个文件覆盖函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48448410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com