Должны ли переменные находиться внутри или снаружи if __name__ == "__main__": block? - PullRequest
0 голосов
/ 17 февраля 2019

Кажется, что переменные могут находиться как внутри, так и снаружи блока if __name__ == "__main__":.В этом случае я размещаю переменную пути к файлу в блоке if.Однако код работает, если я помещаю переменную path и вне блока if.

def do_something(path):
    print(path)

if __name__ == "__main__":
    path = '/path/to/my/image.tif'
    do_something(path)

Существуют ли какие-либо стандарты Python, определяющие, следует ли помещать переменные, такие как path, внутриили вне блока if __name__ == "__main__":?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

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

# Imports.

import sys

# Constants.

DEFAULT_PATH = '/path/to/my/image.tif'

# The program's library point.

def main(args = None):
    args = sys.argv[1:] if args is None else args
    path = args[0] if args else DEFAULT_PATH
    helper(path)

# Other functions or classes needed by the program.

def helper(path):
    print(path)

# The program's command-line entry point.

if __name__ == '__main__':
    main()
0 голосов
/ 17 февраля 2019

Это зависит.Если путь для программы постоянен, то он может быть вне блока if.Однако, если это просто вход (а не часть программы), он должен быть внутри блока if

...