Как использовать значения из переменных, импортированных из другого файла Python - PullRequest
0 голосов
/ 04 октября 2018

так что я знаю, что раньше об этом спрашивали в нескольких формах, но я не могу относиться ни к одному из них, либо у меня есть что-то другое, либо я просто не понимаю их.

Проблема в том, что у меня есть сценарий A и сценарий B, а в сценарии AI вычисляются и содержатся все переменные, которые я хочу использовать в сценарии B.

В сценарии A есть различные функции, скажем, дляТеперь я просто хочу передать простое число из переменной в сценарии A в сценарий B, давайте назовем переменную value.

Я использовал from script_A import value.

Теперь у меня есть value инициализируется в script_A с 0 справа вверху, чтобы сказать об этом, но script_A обрабатывает value и получает результат, явно отличный от 0, но когда я отлаживаю, я получаю в script_B value == 0, а не value == calculated_value_that_should_be_there.

Я не знал, что делать, поэтому я жестко разбираюсь в области действия, поэтому я поместил его в return функции, я попытался сделать переменную value Глобальной переменной.Кажется, ничто не работает так, как я не передаю вычисленное «значение», но я передаю script_B эту инициализацию 0.

PS Последнее, что я попробовал, и что я увидел в этой теме, это импорт script_A, как было сказано, без пространств имен.Это сработало.Когда я пишу script_A.value, оно вычисляется как_value_that_should_be_there.Но я не знаю, почему что-то еще, что я описал, не работало.

script_A


from definitions import *
variable_1 = 0
variable_2 = 0
variable_3 = 0
variable_4 = 0 

total = 0
respected = 0

time_diff = {}
seconds_all_writes = "write"

class Detect():
    def __init__(self, data_manager, component_name, bus_name_list=None):

 def __Function_A(self):
       """
        global time_diff
        global seconds_all_writes

        process

script_B:
from script_A import respected
from script_A import total


import script_A

        print aln_mon_detector.total
        print aln_mon_detector.respected

Я также хочу словарь

table_content.append (script_A.time_diff [file [script_A.seconds_all_writes]))

Я получаю

KeyError: 'пишет'

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

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

ModuleA - определение переменной

# create the variable
someVariable = 1.

# apply modifications to the variable when called
def someFunc(var):
    return var + 2

# ask for changes
someVariable = someFunc(someVariable)

ModuleB - с использованием переменной

import moduleA

# retrieve variable
var = moduleA.someVariable

print(var) # returns 3
0 голосов
/ 04 октября 2018

Если у вас есть script A, например:

# imports

value = 0
...  # some calculations

Реорганизовать script A как:

# imports

def main():
    value = 0
    ...  # some calculations
    return value

Теперь вы можете импортировать script A в script B изапустите calculations из script B:

import script_A

value = script_A.main()

Именно так вы должны организовать кусочки кода в Python.

0 голосов
/ 04 октября 2018

Это, вероятно, связано с неизменностью.Зависит от того, что value.Если value является списком (то есть изменяемым объектом), и вы добавляете его, изменение должно быть видимым.Однако, если вы напишите

from module import x
x = 5

, вы не измените фактическое значение, поэтому другие ссылки на x по-прежнему будут показывать исходный объект.

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