Python2.7 모듈 및 패키지 관리 학습 요약 03

4924 단어

예에 근거하여 하나하나 분석하다


다음 디렉토리의 파일 가져오기

  • 그래도 import부터 시작합시다.원본 test_main.py 파일에 import effects 이 하위 폴더를 불러오는 코드만 추가됩니다.구체적인 코드는 다음과 같다:
  • #   effects
    import effects
    # test_mian.py    
    print "============== test_main.py =============="
    print dir()
    def test():
          print "============== test_main.test =============="
    # main()
    if __name__ == '__main__':
          test()
    

    실행 결과:
    ============== effects.__init__ ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
    ============== test_main.py ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'effects']
    ============== test_main.test ==============
    [Finished in 0.2s]
    

    실행 결과를 자세히 살펴보면 import effects 파이톤이 이 폴더에 대응하는 __init__.py 를 실행했고, 당연히 이 파일을 대응하는 .pyc 파일로 컴파일한 것으로 나타났다.
  • 위의 운행 결과 test_maindir()에는 effects가 포함되어 있지만 effects에는 우리가 사용하고자 하는 echo.py를 포함하는 폴더 아래의 모듈이 없다.그래서 직접 인용은 성공하지 못할 겁니다.코드 수정, 추가effects.echo.test() 호출
  • #   effects
    import effects
    effects.echo.test()
    # test_mian.py    
    print "============== test_main.py =============="
    print dir()
    def test():
            print "============== test_main.test =============="
    # main()
    if __name__ == '__main__':
            test()
    

    운행 결과, 과연 이상 신고, 알림 없음echo
    ============== effects.__init__ ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
    Traceback (most recent call last):
      File "E:\WorkSpace\Python\test\sound\test_main.py", line 5, in 
        effects.echo.test()
    AttributeError: 'module' object has no attribute 'echo'
    [Finished in 0.2s with exit code 1]
    
  • 하위 디렉터리 파일을 직접 가져오면 모듈 이름을 통해 호출할 수 있습니다.예를 들어 import 디렉터리에 있는 effects 파일의 echo.py 함수를 호출하려면 test(), 그리고 import effects.echo를 통해 호출할 수 있습니다.호출할 때의 경로가 전체 경로라는 것을 지적해야 한다.코드는 다음과 같습니다.
  • #   echo
    import effects.echo
    effects.echo.test() 
    # test_mian.py    
    print "============== test_main.py =============="
    print dir()
    def test():
            print "============== test_main.test =============="
    # main()
    if __name__ == '__main__':
            test()
    

    실행 결과:
    ============== effects.__init__ ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
    ============== echo.py ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__']
    ============== echo.test ==============
    ============== test_main.py ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'effects']
    ============== test_main.test ==============
    [Finished in 0.2s]
    

    운행 결과를 자세히 살펴보면 다음과 같은 몇 가지를 볼 필요가 있다. 1. effects.echo.test() 최종적으로 도입된 것은 test_main이지 effects가 아니다.그래서 인용할 때 반드시 전체 경로, 즉 echo2이어야 한다. 우리가 가져올 것은effects.echo이지만 echo 아래의effects는 도입되어 실행되었다.
  • __init__.py 방식으로 가져옵니다.사실 이 방식은 위와 차이가 크지 않고 동급 디렉터리와 차이가 많지 않으며 호출할 때 관련 함수 이름을 직접 호출한다.코드는 다음과 같습니다.
  • #   echo
    from effects.echo import *
    test()
    test1()
    # test_mian.py    
    print "============== test_main.py =============="
    print dir()
    def test():
            print "============== test_main.test =============="
    # main()
    if __name__ == '__main__':
            test()
    

    실행 결과:
    ============== effects.__init__ ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
    ============== echo.py ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__']
    ============== echo.test ==============
    ============== echo.test1 ==============
    ============== test_main.py ==============
    ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'test', 'test1']
    ============== test_main.test ==============
    [Finished in 0.2s]
    
    from import 최종적으로 불러온 것은 test_main의 두 함수 대상이다.
  • 위의 예는 또 다른 방식으로 호출할 수 있다.echo 불러오기from effects import echo를 통해echo 방식으로 함수를 호출하면 효과는 같다.
  • 좋은 웹페이지 즐겨찾기