импортировать конкретную функцию из другой программы?

У меня есть сомнения относительно модулей, я выполнил несколько функций, которые я сохранил в программе, которую я выполняю, и теперь я хочу повторно использовать определенную, она называется проверенными данными ()

introducir la descripción de la imagen aquí

Я импортирую его следующим образом:

from principal import comprovarData

introducir la descripción de la imagen aquí

Дело в том, что, делая это Как будто все строки кода, куда я импортировал, были выполнены. Может ли кто-нибудь сказать мне, что происходит?

1
задан 30.11.2019, 22:23
1 ответ

Вот что происходит, то, что должно происходить.

, Когда ты делаешь 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 команд и не, если ты это импортируешь.

2
ответ дан 01.12.2019, 10:30
  • 1
    Ты заработал меня. Хороший ответ. – amenadiel 30.11.2019, 22:55
  • 2
    я новый в этом программирования, ты знаешь, как называется это, что ты заканчиваешь у меня того, чтобы говорить < if ямс == " main ": main () > я хочу искать больше informació n. – javic 01.12.2019, 00:49
  • 3
    У него нет никакого имени в особенности, но está в documentació n , и ты можешь находить informació n во многих сайтах Интернета, включая stack overflow – abulafia 01.12.2019, 02:07