Передача данных из первой основной функции скриптов Python во вторую функцию скриптов

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

Конец первого сценария

def main():

  data = create_data()
  addresses = data['addresses']
  API_key = data['API_key']
  distance_matrix = create_distance_matrix(data)
  print(distance_matrix)
if __name__ == '__main__':
  main()

и программа выводит что-то вроде

[[0, 486348, 155151, 780965, 761151, 254349], [486474, 0, 594180, 422167, 590566, 262043], [155151, 594054, 0, 888671, 868857, 362056], [781506, 421262, 889213, 0, 295098, 495764], [761786, 590592, 869492, 295059, 0, 612583], [254304, 260708, 362011, 495807, 612769, 0]]

Я мог бы назвать эту программу "scriptA"

Во втором скрипте "scriptB" я хочу использовать

import scriptA

и измените функцию в скрипте B, ввод вручную выглядит как

def create_data_model():
    """Stores the data for the problem."""
    data = {}
    data['distance_matrix'] = [[0, 383429, 118275, 223206, 209301, 405420], [383498, 0, 413976, 422167, 590566, 262043], [117759, 412902, 0, 335203, 315389, 355002], [223635, 421262, 335387, 0, 295098, 495764], [210227, 590592, 315667, 294775, 0, 612583], [405701, 260708, 354835, 495807, 612769, 0]]  # yapf: disable
    data['num_vehicles'] = 1
    data['depot'] = 0
    return data

для автоматического включения матрицы из первого скрипта. Но я не уверен в правильном коде для этого. Я пробовал делать

data['distance_matrix'] = scriptA.main()

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

Если дальнейший контекст полезен, используемые мной scriptA и scriptB очень похожи на примеры кодов из https://developers.google.com/optimization/routing/vrp
и https://developers.google.com/optimization/routing/tsp в документации Google OR-Tools соответственно.


person adventureman    schedule 20.01.2020    source источник
comment
Это потому, что вы используете print, а не return в первой функции. Кроме того, нет необходимости в: if name == 'main': main ()   -  person E. Gertz    schedule 20.01.2020
comment
Хорошо .. Думаю, это поможет   -  person adventureman    schedule 20.01.2020


Ответы (1)


Вам нужно будет изменить основную функцию из scriptA. Вам следует вернуть матрицу вместо того, чтобы печатать ее. Обновленный код:

def main():
  data = create_data()
  addresses = data['addresses']
  API_key = data['API_key']
  distance_matrix = create_distance_matrix(data)
  return distance_matrix

Затем вызов scriptA.main() вернет вам массив.

person Pramod Patil    schedule 20.01.2020