Почему все объясняют этот момент на каких-то замудренных примерах? Так и не понял, ГДЕ указывать эту конструкцию: в файле, В КОТОРОМ импортим или ИЗ КОТОРОГО импортим? Так же не понятно, ЧТО оборачивать этой приблудой. Пример: Есть у меня есть файл 1.ру, содержащий две переменные: а = 10, с = 20. Также есть файл 2.ру, в котором я хочу вызвать из 1.ру ТОЛЬКО переменную "с". Так ГДЕ ИМЕННО в этих файлах мне нужна конструкция if _name_ == "_main__" ???
Михаил, спасибо за вашу работу! Могли бы вы подробнее объяснить часть "если вы хотите выполнить часть кола на верхнем уровне, то" например у меня есть файл с моделями базы данных и в нем же описывается подключение к бд. import .... base = declarative_base() database_uri = config['APP_DB']['DATABASE_URI'] app_db = create_engine(DATABASE_URI) Session = sessionmaker(bind=app_db) @contextmanager def session_scope(): session = Session() try: yield session session.commit() except Exception: session.rollback() raise finally: session.close() class Country(Base): __tablename__ = 'country' def get_date_for_sync(self): with session_scope() as s: date_for_synk = s.query(func.max(Country.country_date)).scalar() return date_for_synk при импорте такого модуля я получается буду перед импортом создавать коннект к базе?а если написать через if __name__ == '__main__': Base = declarative_base() DATABASE_URI = config['APP_DB']['DATABASE_URI'] app_db = create_engine(DATABASE_URI) Session = sessionmaker(bind=app_db) то получается коннект к бд будет проходить непосредственно при вызове метода Country.get_date_for_sync()?
Коннект надо все-же на верхнем уровне создавать. В случае с моделями и if __name__ == "__main__" может быть какой-то такой кейс например github.com/learnpythonru/databases3/blob/master/models.py#L50 - тут при прямом вызове файла мы создаем таблицы, а при импорте только инициализируем модельки
Про шрифт уже были комментарии - сейчас есть блок предзаписанных видео, которые постепенно выкладываются, поэтому пока всё будет так, позже Михаил будет выкладывать видео с увеличенным шрифтом.
Поддерживаю! Читать в телеге комменты совсем не обязательно, если совсем будет необходимо, то тэгнуть всегда можно )) Мы бы там нубские некоторые моменты обсудили
Классное начало, быстро, мало слов. И так понятно из названия. Можно не вставлять в каждое видео долгое приветствие речь о том что это за видео для кого оно и для чего) Даже в чатах не принято здороваться уже. Тенденция однако)
У объекта есть __name__ его класса. А так __name__ есть у классов, функций, методов, дескрипторов и генераторов docs.python.org/3/library/stdtypes.html?highlight=__name____#definition__.__name__
Согласен, ничено не понятно объясняет чел. Какой модуль, нафига он нужен, всё "hello world" сплошной, как у тех же бесполезных объясняльщиков на ютьюбах. Импортирует какие-то модули свои, время в них вставляет, по ходу прибавляет удаляет чего-то. Просто бы уж сказал - читайте документацию, и то понятнее было бы.
Потрясающе наглядно, доступно, понятно!!!! 🔥👍 Благодарю!!
Посмотрел много разных видео про "if main", но понимание пришло только сейчас.
Почему все объясняют этот момент на каких-то замудренных примерах?
Так и не понял, ГДЕ указывать эту конструкцию: в файле, В КОТОРОМ импортим или ИЗ КОТОРОГО импортим?
Так же не понятно, ЧТО оборачивать этой приблудой.
Пример:
Есть у меня есть файл 1.ру, содержащий две переменные: а = 10, с = 20.
Также есть файл 2.ру, в котором я хочу вызвать из 1.ру ТОЛЬКО переменную "с".
Так ГДЕ ИМЕННО в этих файлах мне нужна конструкция if _name_ == "_main__"
???
Согл, тут лучше либо искать хороших блогеров, либо гуглить эту тему. На сайтах даже могут объяснить даже лучше чем любой блогер
как же прекрасно обьяснили, и очень помогли. Спасибо.
Здорово, как раз не очень понимал зачем это нужно. Спасибо!
😁 спасибо
О, давно хотел узнать!
Каждый раз буду писать что вот такие мелочи и нюансы оказываются самыми полезными.
Михаил спасибо!
Только стоило рассказать, что именно храниться в __main__, чутка запутанно получилось
Спасибо, понятнее стало.
Спасибо.
Михаил, спасибо за вашу работу! Могли бы вы подробнее объяснить часть "если вы хотите выполнить часть кола на верхнем уровне, то"
например у меня есть файл с моделями базы данных и в нем же описывается подключение к бд.
import ....
base = declarative_base()
database_uri = config['APP_DB']['DATABASE_URI']
app_db = create_engine(DATABASE_URI)
Session = sessionmaker(bind=app_db)
@contextmanager
def session_scope():
session = Session()
try:
yield session
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()
class Country(Base):
__tablename__ = 'country'
def get_date_for_sync(self):
with session_scope() as s:
date_for_synk = s.query(func.max(Country.country_date)).scalar()
return date_for_synk
при импорте такого модуля я получается буду перед импортом создавать коннект к базе?а если написать через
if __name__ == '__main__':
Base = declarative_base()
DATABASE_URI = config['APP_DB']['DATABASE_URI']
app_db = create_engine(DATABASE_URI)
Session = sessionmaker(bind=app_db)
то получается коннект к бд будет проходить непосредственно при вызове метода Country.get_date_for_sync()?
Коннект надо все-же на верхнем уровне создавать. В случае с моделями и if __name__ == "__main__" может быть какой-то такой кейс например github.com/learnpythonru/databases3/blob/master/models.py#L50 - тут при прямом вызове файла мы создаем таблицы, а при импорте только инициализируем модельки
Ниче не понял
Шрифт на экране сделайте побольше. Мелко все. (Надо именно увеличить шрифт. Не надо записывать часть экрана - так будет нечеткое изображение).
Надо, не надо... Сделайте на своём канале, как надо :) или возьмитесь за лупу.
Про шрифт уже были комментарии - сейчас есть блок предзаписанных видео, которые постепенно выкладываются, поэтому пока всё будет так, позже Михаил будет выкладывать видео с увеличенным шрифтом.
@@learnpython4188 Хорошо, спасибо большое.
Спасибо! Подписалась на ваш канал
👍👍👍
А сделайте комментарии,под статьями в телеге ?
Пока не включаю, так как на комментарии там меня точно не хватит, а включать и не заходить кажется не очень правильным
Можете обсуждать в чатике MoscowPython - Михаил там также есть.
@@Хитрыйпитон А зачем вам на все отвечать ,за вас это сделают подписчики.
Поддерживаю! Читать в телеге комменты совсем не обязательно, если совсем будет необходимо, то тэгнуть всегда можно )) Мы бы там нубские некоторые моменты обсудили
@@antonnekrasov4639 ну можно и тут спрашивать, если что. И тут тоже подписчики иногда помогают. :)
т.е. сначала описываем функции, а после данной конструкции уже производим вызовы
Да, так
Спасибо. Сделайте высоту букв в Pycharm больше
Классное начало, быстро, мало слов. И так понятно из названия.
Можно не вставлять в каждое видео долгое приветствие речь о том что это за видео для кого оно и для чего)
Даже в чатах не принято здороваться уже.
Тенденция однако)
Вроде бы приветствие очень короткое, куда уж больше ужимать :)
Не все смотрят все видео - некоторые находят видео в поиске, например. :)
Господи я нихера не понял
С телефона код в VS не разглядеть
ничего не понял
Добрый день! Возник вопрос: почему у одних объектов есть атрибут __name__, а у других нет? У классов есть, а у экземпляров классов нет
У объекта есть __name__ его класса. А так __name__ есть у классов, функций, методов, дескрипторов и генераторов docs.python.org/3/library/stdtypes.html?highlight=__name____#definition__.__name__
Очень мелко. Плохо видно на телефоне
Чувак, понятно объяснить это не твоё
Согласен, ничено не понятно объясняет чел. Какой модуль, нафига он нужен, всё "hello world" сплошной, как у тех же бесполезных объясняльщиков на ютьюбах. Импортирует какие-то модули свои, время в них вставляет, по ходу прибавляет удаляет чего-то.
Просто бы уж сказал - читайте документацию, и то понятнее было бы.
Но что же такое "main"?