это, может быть очень наивный вопрос и, возможно, лучше всего спросил пример:динамическое добавление функции к существующему импортирован модуль
module1.py
import module2
def new_func():
print(var_string)
module2.new_func = new_func
module2.func()
module2.new_func()
module2.py
var_string = "i'm the global string!"
def func():
print(var_string)
> python module1.py
i'm the global string!
Traceback (most recent call last):
File "module1.py", line 8, in <module>
module2.new_func()
File "module1.py", line 4, in new_func
print(var_string)
NameError: name 'var_string' is not defined
Так что мой вопрос заключается в следующем: Можно ли вставить функцию в модуль и иметь это глобальное обновление имен соответственно?
Связанный: global variable defined in main script can't be accessed by a function defined in a different module Обратите внимание, что я знаю, что совместное использование глобальных переменных является плохой идеей, и я также знаю, что модуль конфигурации будет хороший компромисс в том, что, но обратите внимание, что это не то, что я пытаюсь достигать.
Их не нужно делать это Когда-либо. Вы можете просто использовать операторы if, чтобы определить, какой метод вызывать, или какие аргументы передаются в метод. и т. д. – FirebladeDan
Я не согласен. Я думаю, это было бы очень полезно. Аналогия динамически добавляет метод к существующему классу, который использует другие атрибуты и методы класса. Я также хочу, чтобы эта вставленная функция вызывалась другими модулями. По сути, я динамически расширяю модуль без физического редактирования исходного кода модуля. –
Вам нужно изменить печать (var_string) для печати (module2.var_string) –