Передача данных из первой основной функции python scripts во вторую функцию scripts - PullRequest
1 голос
/ 20 января 2020

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

Конец первого скрипта -

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 соответственно.

1 Ответ

0 голосов
/ 20 января 2020

Вам нужно изменить основную функцию из 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() вернет вам массив.

...