Прежде всего, чтобы ответить на ваш вопрос, вам необходимо изменить свой модуль:
import os
newest_folder = '' # <<<<
path = '' # <<<<
def get_n_folder():
global newest_folder # <<<<
global path # <<<<
....
# The rest is unchanged
Переменные теперь являются атрибутами модуля, ранее они были только атрибутами функции.
Так что избавился от сообщений об ошибках, но он просто печатает две пустые строки !!! Зачем? Поскольку newest_folder
и path
не были настроены, вы не вызываете функцию для заполнения значений!
Это одна проблема, другая - from get_newest_folder import *
. Не делайте этого - это загрязняет ваше собственное пространство имен. Это дает возможность модулю перезаписывать ваши собственные переменные (столкновение пространства имен). Хорошо, вы знаете этот модуль, но будете ли вы всегда? Вы знаете очень переменную в каждом импортируемом модуле?
Итак:
import get_newest_folder
def main_test():
print(get_newest_folder.newest_folder)
print(get_newest_folder.path)
if __name__ == '__main__':
get_newest_folder.get_n_folder()
main_test()
Но, как уже говорили другие, лучше не делить переменные, если вы делаете это, это означает, что реализация модуля не может измениться - она нарушает инкапсуляцию . Есть несколько случаев, когда это может быть оправдано, но не здесь.
Вместо этого, используя оригинал get_newest_folder.py
:
import os,time
import get_newest_folder
def main_test():
print(newest_folder)
print(path)
if __name__ == '__main__':
print(dir())
newest_folder, path = get_newest_folder.get_n_folder()
main_test()