복붙노트

[PYTHON] def main ()을 사용하는 이유는 무엇입니까? [복제]

PYTHON

def main ()을 사용하는 이유는 무엇입니까? [복제]

몇 가지 코드 샘플과 튜토리얼을 보았다.

def main():
    # my code here

if __name__ == "__main__":
    main()

하지만 왜? 파일 상단에 함수를 정의하지 않고 그 아래에 코드를 작성해야하는 이유가 있습니까? 즉

def my_function()
    # my code here

def my_function_two()
    # my code here

# some code
# call function
# print(something)

메인에 운율이 있는지 궁금합니다.

해결법

  1. ==============================

    1.스크립트가 모듈로 가져온 경우에도 스크립트가 주요한 센티넬 없이는 코드가 실행됩니다.

    스크립트가 모듈로 가져온 경우에도 스크립트가 주요한 센티넬 없이는 코드가 실행됩니다.

  2. ==============================

    2.다른 사람들은 이미 답변했지만 이미 추가 할 것이 있다고 생각합니다.

    다른 사람들은 이미 답변했지만 이미 추가 할 것이 있다고 생각합니다.

    main ()을 호출하는 if 문을 사용하는 이유 (특정 순서 없음) :

    그러나 main () 함수를 작성하고 if 문 내에서 호출 할 필요는 없습니다.

    나 자신은 보통 어떤 종류의 기능도없이 작은 쓰래 버기 스크립트를 작성하기 시작한다. 스크립트가 충분히 커지거나 함수 안에 모든 코드를 넣으면 나를 유익하게 생각한다면 코드를 리팩토링하고 수행하십시오. 이것은 bash 스크립트를 작성할 때도 발생합니다.

    주 함수 안에 코드를 넣더라도 정확히 그 코드를 쓸 필요는 없습니다. 깔끔한 변형은 다음과 같습니다.

    import sys
    
    def main(argv):
        # My code here
        pass
    
    if __name__ == "__main__":
        main(sys.argv)
    

    즉, 사용자 정의 매개 변수를 전달하는 다른 스크립트 (또는 대화식 쉘)에서 main ()을 호출 할 수 있습니다. 이것은 단위 테스트 또는 일괄 처리시 유용 할 수 있습니다. 그러나 위의 코드는 argv 구문 분석이 필요하므로 이미 구문 분석 된 매개 변수를 전달하는 다른 호출을 사용하는 것이 더 나을 수도 있습니다.

    작성한 객체 지향 응용 프로그램에서 코드는 다음과 같습니다.

    class MyApplication(something):
        # My code here
    
    if __name__ == "__main__":
        app = MyApplication()
        app.run()
    

    따라서 더 적합한 코드를 자유롭게 작성하십시오. :)

  3. ==============================

    3.foo.py의 내용

    foo.py의 내용

    print __name__
    if __name__ == '__main__':
        print 'XXXX'
    

    foo.py 파일은 두 가지 방법으로 사용될 수 있습니다.

    이 경우 __name__은 foo이고 코드 섹션은 실행되지 않고 XXXX를 인쇄하지 않습니다.

    직접 실행될 때 __name__은 __main__과 동일하며 해당 섹션의 코드가 실행되고 XXXX를 인쇄합니다

    이 기능을 사용하여 동일한 모듈 내에서 다양한 종류의 단위 테스트를 작성합니다.

  4. ==============================

    4."__name __ =="__ main__ "은 무엇을 할 수 있습니까?" 이미 답변되었습니다.

    "__name __ =="__ main__ "은 무엇을 할 수 있습니까?" 이미 답변되었습니다.

    main () 함수를 사용하면 모듈을 가져 오면 해당 기능을 호출 할 수 있습니다. 이 (IMHO)의 주된 목적은 당신이 단위 테스트를 할 수 있다는 것입니다.

  5. ==============================

    5.두 번째 스크립트를 고려하십시오. 다른 곳에서 가져 오면 "글로벌 레벨"과 같은 지침이 실행됩니다.

    두 번째 스크립트를 고려하십시오. 다른 곳에서 가져 오면 "글로벌 레벨"과 같은 지침이 실행됩니다.

  6. from https://stackoverflow.com/questions/4041238/why-use-def-main by cc-by-sa and MIT license