산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 - 모듈

이전 페이지다음 페이지

모듈을 사용하면 Python 코드를 논리적으로 구성할 수 있습니다. 관련 코드를 모듈로 그룹화하면 코드를 더 쉽게 이해하고 사용할 수 있습니다. 모듈은 바인딩하고 참조할 수 있는 임의로 명명된 속성을 가진 Python 개체입니다.

간단히 말해 모듈은 Python 코드로 구성된 파일입니다. 모듈은 함수, 클래스 및 변수를 정의할 수 있습니다. 모듈에는 실행 가능한 코드도 포함될 수 있습니다.

aname이라는 모듈의 Python 코드 일반적으로 name.py라는 파일에 있습니다. . 다음은 간단한 모듈 support.py의 예입니다.

def print_func( par ):
   print "Hello : ", par
   return

가져오기 성명서

다른 Python 소스 파일에서 import 문을 실행하여 Python 소스 파일을 모듈로 사용할 수 있습니다. 가져오기 다음 구문이 있습니다 -

import module1[, module2[,... moduleN]

인터프리터는 import 문을 만나면 모듈이 검색 경로에 있으면 모듈을 가져옵니다. 검색 경로는 인터프리터가 모듈을 가져오기 전에 검색하는 디렉토리 목록입니다. 예를 들어, support.py 모듈을 가져오려면 스크립트 맨 위에 다음 명령을 넣어야 합니다. -

#!/usr/bin/python

# Import module support
import support

# Now you can call defined function that module as follows
support.print_func("Zara")

위의 코드가 실행되면 다음 결과가 생성됩니다 -

Hello : Zara

모듈은 가져온 횟수에 관계없이 한 번만 로드됩니다. 이렇게 하면 여러 가져오기가 발생할 경우 모듈 실행이 반복적으로 발생하는 것을 방지할 수 있습니다.

from...import 성명서

파이썬의 from 문을 사용하면 모듈에서 현재 네임스페이스로 특정 속성을 가져올 수 있습니다. from...import 다음 구문이 있습니다 -

from modname import name1[, name2[, ... nameN]]

예를 들어, fib 모듈에서 fibonacci 함수를 가져오려면 다음 명령문을 사용하십시오. -

from fib import fibonacci

이 명령문은 전체 모듈 fib를 현재 네임스페이스로 가져오지 않습니다. 모듈 fib의 fibonacci 항목을 가져오는 모듈의 전역 기호 테이블에 소개합니다.

from...import * 성명서

다음 import 문을 사용하여 모듈의 모든 이름을 현재 네임스페이스로 가져올 수도 있습니다. -

from modname import *

이것은 모듈의 모든 항목을 현재 네임스페이스로 가져오는 쉬운 방법을 제공합니다. 그러나 이 문은 드물게 사용해야 합니다.

모듈 찾기

모듈을 가져올 때 Python 인터프리터는 다음 순서로 모듈을 검색합니다. -

모듈 검색 경로는 시스템 모듈 sys에 sys.path로 저장됩니다. 변하기 쉬운. sys.path 변수에는 현재 디렉토리인 PYTHONPATH와 설치에 따른 기본값이 포함되어 있습니다.

PYTHONPATH 변수

PYTHONPATH는 디렉토리 목록으로 구성된 환경 변수입니다. PYTHONPATH의 구문은 쉘 변수 PATH의 구문과 동일합니다.

다음은 Windows 시스템의 일반적인 PYTHONPATH입니다. -

set PYTHONPATH = c:\python20\lib;

다음은 UNIX 시스템의 일반적인 PYTHONPATH입니다. -

set PYTHONPATH = /usr/local/lib/python

네임스페이스 및 범위 지정

변수는 개체에 매핑되는 이름(식별자)입니다. 네임스페이스 변수 이름(키) 및 해당 개체(값)의 사전입니다.

Python 문은 로컬 네임스페이스의 변수에 액세스할 수 있습니다. 글로벌 네임스페이스에서 . 지역 변수와 전역 변수의 이름이 같으면 지역 변수가 전역 변수를 가립니다.

각 함수에는 고유한 로컬 네임스페이스가 있습니다. 클래스 메서드는 일반 함수와 동일한 범위 지정 규칙을 따릅니다.

파이썬은 변수가 지역적인지 전역적인지에 대해 교육받은 추측을 합니다. 함수에서 값이 할당된 모든 변수는 로컬이라고 가정합니다.

따라서 함수 내에서 전역 변수에 값을 할당하려면 먼저 전역 문을 사용해야 합니다.

전역 VarName 문 VarName이 전역 변수임을 Python에 알립니다. Python은 변수에 대한 로컬 네임스페이스 검색을 중지합니다.

예를 들어 Money 변수를 정의합니다. 전역 네임스페이스에서. 기능 내 , 우리는 을 할당합니다. 값이므로 Python은 Money를 가정합니다. 지역 변수로. 그러나 우리는 지역 변수 Money의 값에 접근했습니다. 설정하기 전에 UnboundLocalError가 결과입니다. 전역 구문의 주석 처리를 제거하면 문제가 해결됩니다.

#!/usr/bin/python

Money = 2000
def AddMoney():
   # Uncomment the following line to fix the code:
   # global Money
   Money = Money + 1

print Money
AddMoney()
print Money

dir( ) 함수

dir() 내장 함수는 모듈에 의해 정의된 이름을 포함하는 정렬된 문자열 목록을 반환합니다.

목록에는 모듈에 정의된 모든 모듈, 변수 및 함수의 이름이 포함됩니다. 다음은 간단한 예입니다 -

라이브 데모
#!/usr/bin/python

# Import built-in module math
import math

content = dir(math)
print content

위의 코드가 실행되면 다음 결과가 생성됩니다 -

['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh']

여기서 특수 문자열 변수 __name__ 모듈의 이름이고 __file__ 모듈이 로드된 파일 이름입니다.

globals()locals() 기능

전역()locals() 함수는 호출된 위치에 따라 전역 및 로컬 네임스페이스의 이름을 반환하는 데 사용할 수 있습니다.

locals()가 함수 내에서 호출되면 해당 함수에서 로컬로 액세스할 수 있는 모든 이름을 반환합니다.

함수 내에서 globals()를 호출하면 해당 함수에서 전역적으로 액세스할 수 있는 모든 이름을 반환합니다.

이 두 함수의 반환 유형은 사전입니다. 따라서 keys() 함수를 사용하여 이름을 추출할 수 있습니다.

reload() 기능

모듈을 스크립트로 가져올 때 모듈의 최상위 부분에 있는 코드는 한 번만 실행됩니다.

따라서 모듈의 최상위 코드를 다시 실행하려면 reload()를 사용할 수 있습니다. 기능. reload() 함수는 이전에 가져온 모듈을 다시 가져옵니다. reload() 함수의 구문은 다음과 같습니다. -

reload(module_name)

여기, module_name 모듈 이름을 포함하는 문자열이 아니라 다시 로드하려는 모듈의 이름입니다. 예를 들어, hello를 다시 로드하려면 모듈에서 다음을 수행하십시오 -

reload(hello)

Python의 패키지

패키지는 모듈과 하위 패키지, 하위 하위 패키지 등으로 구성된 단일 Python 애플리케이션 환경을 정의하는 계층적 파일 디렉토리 구조입니다.

Pots.py 파일을 고려하십시오. 전화에서 사용 가능 예배 규칙서. 이 파일에는 다음과 같은 소스 코드 행이 있습니다. -

#!/usr/bin/python

def Pots():
   print "I'm Pots Phone"

비슷한 방식으로 위와 같은 이름을 가진 다른 기능을 가진 두 개의 파일이 더 있습니다. -

이제 Phone에 __init__.py 파일을 하나 더 만듭니다. 디렉토리 -

Phone을 가져올 때 모든 기능을 사용할 수 있도록 하려면 다음과 같이 __init__.py에 명시적인 import 문을 넣어야 합니다. −

from Pots import Pots
from Isdn import Isdn
from G3 import G3

이 줄을 __init__.py에 추가하면 Phone 패키지를 가져올 때 이러한 모든 클래스를 사용할 수 있습니다.

#!/usr/bin/python

# Now import your Phone Package.
import Phone

Phone.Pots()
Phone.Isdn()
Phone.G3()

위의 코드가 실행되면 다음 결과가 생성됩니다 -

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

위의 예에서는 각 파일에 있는 단일 함수의 예를 들었지만 파일에 여러 함수를 유지할 수 있습니다. 해당 파일에서 다른 Python 클래스를 정의한 다음 해당 클래스에서 패키지를 만들 수도 있습니다.


python

  1. 파이썬 데이터 유형
  2. 파이썬 입력, 출력 및 가져오기
  3. 파이썬 연산자
  4. 파이썬 함수 인수
  5. 파이썬 모듈
  6. 파이썬 사전
  7. 파이썬 반복자
  8. 파이썬 클로저
  9. 파이썬 날짜 시간
  10. 파이썬 시간 모듈