【료설봉python 진급 노트】모듈
5431 단어 랴오닝 성
하나의 모듈을 사용하려면, 우리는 먼저 이 모듈을 가져와야 한다.Python은
import
문을 사용하여 모듈을 가져옵니다.예를 들어, 시스템 자체 모듈 math: import math
가져오기math는 가져온 모듈을 가리키는
라고 생각할 수 있습니다. 이 변수를 통해 우리는 math
에 정의된 모든 공개된 함수, 변수와 클래스에 접근할 수 있습니다.>>> math.pow(2, 0.5) # pow
1.4142135623730951
>>> math.pi # pi
3.141592653589793
만약 우리가 모든 함수가 아닌 math 모듈의
만 가져오기를 원한다면 다음 문장을 사용할 수 있습니다.from math import pow, sin, log
이렇게 하면 Pow,sin,log 세 함수를 직접 인용할 수 있지만 math의 다른 함수는 가져오지 않았습니다.
>>> pow(2, 10)
1024.0
>>> sin(3.14)
0.0015926529164868282
만약 이름이 충돌하면 어떻게 합니까?예를 들어 math 모듈에는 로그 함수가 있고 로그 ging 모듈에도 로그 함수가 있는데 만약에 동시에 사용한다면 어떻게 이름 충돌을 해결합니까?
import을 사용하여 모듈 이름을 가져오는 경우 모듈 이름을 통해 함수 이름을 참조해야 하므로 충돌이 없습니다.
import math, logging
print math.log(10) # math log
logging.log(10, 'something') # logging log
from...import을 사용하여 log 함수를 가져오면 충돌이 발생합니다.이때 함수에
“ ”
를 만들어 충돌을 피할 수 있다.from math import log
from logging import log as logger # logging log logger
print log(10) # math log
logger(10, 'import from logging') # logging log
2. 동적 가져오기 모듈
가져온 모듈이 없는 경우 Python 해석기가 ImportError 오류를 보고합니다.
>>> import something
ImportError: No module named something
어떤 때는 두 개의 서로 다른 모듈이 같은 기능을 제공했다. 예를 들어StringIO와 cStringIO는 모두
StringIO
라는 기능을 제공했다.파이썬
이기 때문에 파이썬 코드의 운행 속도가 느리기 때문이다.파이썬 코드의 운행 속도를 높이려면 가장 간단한 방법은 몇몇 관건적인 함수를 C 언어로 다시 쓰는 것이다. 이렇게 하면 실행 속도를 크게 높일 수 있다.
같은 기능
StringIO
은 순수 Python 코드로 작성되었고, cStringIO
부분 함수는 C로 작성되었기 때문에 cStringIO의 운행 속도가 더 빠르다.ImportError 오류를 사용하여 파이톤에서 모듈을 동적으로 가져오는 경우가 많습니다.
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
상기 코드는 먼저 cStringIO에서 가져오려고 시도하고, 만약 실패하면 (예를 들어 cStringIO가 설치되지 않았을 때) 다시 StringIO에서 가져오려고 시도합니다.이렇게 하면 cStringIO 모듈이 존재하면 우리는 더욱 빠른 운행 속도를 얻을 수 있고, cStringIO가 존재하지 않으면 최대 다중 코드의 운행 속도는 느려지지만 코드의 정상적인 집행에 영향을 주지 않을 것이다.
try
의 역할은 오류를 포획하고 지정한 오류를 포획할 때except
문장을 실행하는 것이다.3. future 사용
파이톤의 새 버전은 새로운 기능을 도입할 것이지만, 실제로 이러한 기능은 이전 버전에 이미 존재했다.어떤 새로운 기능을 시험적으로 사용하려면future 모듈의 일부 기능을 가져와서 실현할 수 있습니다.
예를 들어, Python 2.7의 정수 제곱 연산 결과는 정수입니다.
>>> 10 / 3
3
하지만, 파이썬 3.x는 이미 정수의 제법 연산을 개선하였으며, "/"제로는 부동점수를 얻을 것이며, "/"제재는 여전히 정수이다.
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3
Python 2.7에 3.x의 나눗셈 규칙, future division 가져오기:
>>> from __future__ import division
>>> print 10 / 3
3.3333333333333335
새 버전의 특성이 구 버전과 호환되지 않을 때, 이 특성은 구 버전에
__future__
추가되어 구 코드가 구 버전에서 새로운 특성을 테스트할 수 있도록 합니다.4. 타사 모듈 설치
pip install