У меня есть сомнения относительно модулей, я выполнил несколько функций, которые я сохранил в программе, которую я выполняю, и теперь я хочу повторно использовать определенную, она называется проверенными данными ()
Я импортирую его следующим образом:
from principal import comprovarData
Дело в том, что, делая это Как будто все строки кода, куда я импортировал, были выполнены. Может ли кто-нибудь сказать мне, что происходит?
Вот что происходит, то, что должно происходить.
, Когда ты делаешь import
, уже был одним import modulo
или одним from modulo import algo
, c¦digo m¦dulo работает полному, так как один def
- también "выполнимо" для Пайтона, и única формирует определения функций (и anÃ: logamente с class
, чтобы определять классы, будь должен работать для того, чтобы класс остался определенным).
Различие между import modulo
и from modulo import algo
состоит в том, что, хотя в обоих случаях работает полный контент файла, в первом случае все функции, классы и переменные, которые остаются определенными как следствие этого ejecuci¦n, остаются "помещенными" в так называемую область имен modulo
, так что, чтобы соглашаться на них, ты должен делать modulo.algo
например. Во втором случае, взамен, всех классов, функций и определенных переменных, python buscarÃ: вызов algo
и она añadirÃ: в глобальную область имен, так что он смог соглашаться на нее, не будучи должен помещать область имен впереди ningún.
ты не можешь избегать того, чтобы работал полный c¦digo m¦dulo, но sà - ты можешь избегать, того, чтобы после того, как импортируешь m¦dulo, работал funci¦n main()
из этого m¦dulo Â: c¦mo? Просто не invocÃ: ndola в m¦dulo.
patr¦n t¦-шифровал (что quizÃ: s ты видел уже) это следующий:
# Contenido del modulo
def funcion1():
...
def funcion2():
...
def main():
...
if __name__ == "__main__":
main()
Это работает с начала до конца, так, если ты бросаешь этот рукописный шрифт с l¦-nea команд с python modulo.py
как будто ты импортируешь m¦dulo с другого посредством import modulo
(или from modulo import funcion1
).
В обоих случаях evalúan все l¦-neas modulo.py
. Различие состоит в том, что Пайтон распределяет различную стоимость в переменную __name__
. Когда ты выполняешь этот рукописный шрифт с l¦-nea команд, распределенной стоимости "__main__"
. Когда ты это импортируешь, у этой переменной есть стоимость "modulo"
(имя m¦dulo, что estÃ: импортируясь).
Таким образом ты можешь способствовать тому, чтобы некие l¦-neas s¦lo выполнили, если ты бросаешь рукописный шрифт с l¦-nea команд и не, если ты это импортируешь.