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
не является циклом. Вашим функциям нужны параметры для значений, которые им нужны, и areturn
для возврата данных из функции. В целом: сделайте шаг назад и узнайте, как работают импорт и функции.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__
: ` Я получаю эту ошибку. Надеюсь, на этот раз я более понятен.