Невозможно получить доступ к переменной из одного файла в другой файл без выполнения кода в первом файле - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно, чтобы моя переменная передавалась из одного файла в другой файл без выполнения первого файла после импорта модуля.

Я пытался использовать глобальный, но все еще бесполезный.

test.py

import random

r1='test'
def main():
    global r1
    r1 = random.randint(0, 10000)
    print(r1)


if __name__=='__main__':
    main()
else:
    print(r1)

test1.py

import test

print(test.r1)

когда я выполняю test.py, я получаю 1012 в качестве вывода, и я ожидаю того же вывода, когда я запускаю его из test1.py. Это связующая программа, поэтому я хочу выполнить test.py, и переменная r1 должна быть каким-то образом передана test1.py без выполнения test.py из test1.py. В идеале test1.py должен использовать выходные данные, созданные test.py

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Если вы хотите, чтобы r1 был постоянным, ваше лучшее решение - сохранить его в файл, к которому вы можете обращаться из test1.py, когда вам это нужно. Если все, что вам нужно, это случайный тип int и вы должны получить его из другого скрипта Python, вы можете просто определить функцию внутри test.py и вызвать ее из test1.py. Это выглядело бы примерно так:

import random

def getRandInt():
    r1 = random.randint(0, 10000)
    return r1

def main():
    print(getRandInt())


if __name__== '__main__':
    main()

, и вы можете вызывать из другого скрипта:1012 * случайный int будет другим. Это связано с тем, что после выполнения сценария память, используемая для хранения переменных и т.п., освобождается ОС для чего-то другого.

0 голосов
/ 03 октября 2019

В Python модули структурированы аналогично классам, поэтому при импорте модуля код будет работать так, как вы можете видеть с классом в этом примере

class MyClass:
    a = print('exe')

Обратите внимание, что переменная класса aполучает назначение, и, следовательно, оператор print выполняется сразу после завершения определения класса. Я не вижу, как это было бы необходимо, но если вам нужно импортировать из первого файла то же значение random.random(), вы должны создать текстовый файл, который будет действовать как переменная, и, таким образом, вы сможете сохранять и читатьзначения из него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...