Как использовать переменную, определенную внутри main.py файл в другой файл?

python #import #module #main

#python #импорт #модуль #Главная

Вопрос:

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

 def main():
    current_income=0
    print('---->Enter the number of row in Cinemahall :- ')
    while True:
        try:
            row=int(input())
            break
        except:
            print('-->Something went wrong!! Please enter the valid row in cinemahall. The value must be integer type :')
    print("---->Enter the number of column in Cinemahall :- ")
    while True:
        try:
            col=int(input())
            break
        except:
            print('-->Something went wrong!! Please enter the valid column in cinemahall. The value must be integer type :')

    while True:
        import options_movies
        options_movies.options()
        break

if __name__=='__main__':
    main()
 

Теперь у меня есть другой файл options.py :

 def options():

    while True:
        print('1. show the seats')
        print('2. buy a ticket')
        print('3. statistics')
        print('4. show booked ticked user info')
        print('0. exit')
        print('--> Please select one option from 1,2,3,4,0 ')
        ##try:
        n=int(input())
        if n==1:
            from main import main
            import show_seats
            show_seats.show_the_seats(main.row,main.col)
        elif n==2:
            import buy_ticket
            buy_ticket.buy_a_ticket()
        elif n==3:
            import statistics
            statistics.statistics()
        elif n==4:
            import user_info
            user_info.booked_ticket_user_info()
        elif n==0:
            print('Thank you for using BOOK MY SHOW,We hope you will enjoy the show...... Please visit again!!')
            break
                ##assert n>=0 and n<=4
       ## except:
           ## print('Something went wrong!!!! Please enter the valid option from 1,2,3,4,0')
 

Теперь, когда я пытаюсь использовать значение строки и столбца в show_seats.show_the_seats() из main.py файл Я получаю эту ошибку

   File "C:UsersROHIT KUMAR VERMAOneDriveDocumentsBook My Show Projectmain.py", line 23, in <module>
    main()
  File "C:UsersROHIT KUMAR VERMAOneDriveDocumentsBook My Show Projectmain.py", line 20, in main
    options_movies.options()
  File "C:UsersROHIT KUMAR VERMAOneDriveDocumentsBook My Show Projectoptions_movies.py", line 16, in options
    show_seats.show_the_seats(main.row,main.col)
AttributeError: 'function' object has no attribute 'row'
 

Комментарии:

1. Пожалуйста, исправьте отступ.

2. import Инструкции должны быть в начале вашего скрипта. while Цикл с безусловным break не является циклом. Вашим функциям нужны параметры для значений, которые им нужны, и a return для возврата данных из функции. В целом: сделайте шаг назад и узнайте, как работают импорт и функции.

3. @Matthias Я импортирую модуль, когда выполняется любое условие if или elif. цикл while прервется только тогда, когда я введу 0. Более того, я перепробовал все, что вы говорите, но проблема остается прежней..

Ответ №1:

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

 my_variable = "awesome"

def myfunc():
  print("Python is "   my_variable)

myfunc()
 

Теперь вы можете просто импортировать переменную в нужный вам файл:

 from filename import variable
 

ссылки:

Комментарии:

1. Ваш ответ приведет к использованию global , а использование global в большинстве случаев является очень, очень плохой идеей.

2. Из того, что я понял, он не хочет изменять переменные

3. @FelipeCarvalho спасибо за ваше предложение, но row и col принимают значение от пользователя, и я использую это значение в 7 модулях. когда я пишу main.py файл без if __name__=='__main__ :` Я могу достичь того, чего я хочу, но, делая это, когда я импортирую основной файл, он выполняется вместо простого импорта переменной. И если я использую if __name__=='__main__ : ` Я получаю эту ошибку. Надеюсь, на этот раз я более понятен.