Почему моя функция python не выполняется?

Вопрос: Я написал сценарий, который довольно темпераментен с отступом, поэтому я решил сделать функции. Я новичок в python, и теперь, когда я создал эти функции, ничего не работает! def main (): wiki_scrape() all_csv() wiki_set = scraped_set('locations.csv') country_set = all_set('all.csv') print wiki_set Мне просто интересно, правильно ли это вызывать функции из функции main()? Я обсуждал, возникает

Вопрос:

Я написал сценарий, который довольно темпераментен с отступом, поэтому я решил сделать функции. Я новичок в python, и теперь, когда я создал эти функции, ничего не работает!

def main (): wiki_scrape() all_csv() wiki_set = scraped_set(‘locations.csv’) country_set = all_set(‘all.csv’) print wiki_set

Мне просто интересно, правильно ли это вызывать функции из функции main()? Я обсуждал, возникает ли проблема с отступом внутри вызываемых функций, python, похоже, очень полагается на правильные углубления, даже если он не вызывает ошибки!

Полный код –

Лучший ответ:

Похоже, вам нужно это сделать:

def main(): wiki_scrape() all_csv() wiki_set = scraped_set(‘locations.csv’) country_set = all_set(‘all.csv’) print wiki_set main() # this calls your main function

Даже лучше:

def main(): wiki_scrape() all_csv() wiki_set = scraped_set(‘locations.csv’) country_set = all_set(‘all.csv’) print wiki_set if __name__ == ‘__main__’: main() # this calls your main function

Затем запустите его из командной строки следующим образом:

python file_name.py

Встроенная переменная __name__ является текущим контекстным пространством имен. Если вы запустите скрипт из командной строки, он будет эквивалентен ‘__main__’. Если вы запустите/импортируете файл.py в качестве модуля из другого места, в том числе изнутри интерпретатора, пространство имен (внутри контекста модуля) будет именем файла.py или именем пакета, если оно является частью пакет. Например:

## my_file.py ## print(‘__name__ is {0}’.format(__name__)) if __name__ = ‘__main__’: print(«Hello World!»)

Если вы сделаете это из командной строки:

python my_file.py

Ты получишь:

__name__ is __main__ Hello World!

Однако, если вы импортируете его из интерпретатора, вы можете видеть, что __name__ не __main__:

>>> from my_file import * >>> __name__ is my_file Ответ №1

Python не вызывает никаких функций при запуске, если явно не задано (включая main).

Вместо этого Python называет исполняемые файлы, причем основной файл запускается под именем __main__.

Если вы хотите просто вызвать основную функцию, вы можете использовать ответ Рика.

Однако в лучшей практике Python лучше сделать следующее:

if __name__ == ‘__main__’: wiki_scrape() all_csv() wiki_set = scraped_set(‘locations.csv’) country_set = all_set(‘all.csv’) print wiki_set

Это гарантирует, что если вы используете этот файл python в качестве основного файла (файл, который вы нажимаете или запускаете из cmd), тогда эти функции будут запущены.

Если это вместо этого используется как импортированный модуль, вы все равно можете использовать функции в сценарии, импортирующие модуль, но они не будут вызываться автоматически и, следовательно, не будут мешать вызывающему скрипту.

Оцените статью
Добавить комментарий