필요한 기능을 구현하기 위한 Python 모듈 가져오기

高洛峰
풀어 주다: 2017-03-24 15:56:26
원래의
1572명이 탐색했습니다.

모듈을 사용하면 Python 코드 조각을 논리적으로 구성할 수 있습니다.

관련 코드를 모듈에 할당하면 코드를 더 유용하고 이해하기 쉽게 만들 수 있습니다.

모듈은 바인딩이나 참조를 위해 무작위로 이름이 지정된 속성이 있는 Python 객체이기도 합니다.

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

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

def print_func( par ):

print "Hello : ", par

import 문

Python을 사용하고 싶습니다. 소스 파일의 경우 다른 소스 파일에서 import 문을 실행하면 구문은 다음과 같습니다:

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

해석 시 컴파일러가 import 문을 발견하면 모듈이 현재 검색 경로에 있는 경우 모듈을 가져옵니다.

검색 경로는 통역사가 먼저 검색할 모든 디렉터리의 목록입니다. hello.py 모듈을 가져오려면 스크립트 상단에 다음 명령을 입력해야 합니다:

#!/usr/bin/python

# 모듈 가져오기

가져오기 지원

# 이제 모듈에 포함된 함수를 호출할 수 있습니다.

support.print_func("Zara")

위 예의 출력 결과:

안녕하세요: Zara.

가져오기를 몇 번 실행하든 모듈은 한 번만 가져옵니다. 이렇게 하면 가져온 모듈이 반복해서 실행되는 것을 방지할 수 있습니다.


From...import 문

Python의 from 문을 사용하면 모듈에서 지정된 부분을 현재 네임스페이스 로 가져올 수 있습니다. 구문은 다음과 같습니다.

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

예를 들어 fib 모듈의 fibonacci 함수를 가져오려면 , 다음 문을 사용하세요:

>>>from fib import fibonacci

이 문은 전체 fib 모듈을 현재 네임스페이스로 가져오지 않으며, 단일 fibonacci만 도입합니다. fib를 실행합니다. 선언된 모듈의 전역 심볼 테이블입니다.


From...import * 문

모듈의 모든 콘텐츠를 현재 네임스페이스로 가져오는 것도 가능합니다. 다음 문을 사용하면 됩니다.

> ;>>from mod_name import *

이렇게 하면 모듈의 모든 프로젝트를 쉽게 가져올 수 있습니다. 그러나 이 진술을 남용해서는 안 됩니다.


모듈 찾기

모듈을 가져올 때 Python 파서의 모듈 위치 검색 순서는 다음과 같습니다.

  • 현재 디렉터리

  • 현재 디렉터리에 없으면 Python은 셸 변수 PYTHONPATH 아래의 모든 디렉터리

  • 를 검색합니다.

  • 두 가지 모두 발견되지 않으면 Python은 기본 경로를 확인합니다. UNIX에서 기본 경로는 일반적으로 /usr/local/lib/python/

입니다. 모듈 검색 경로는 시스템 모듈의 sys.path 변수에 저장됩니다. 변수에는 현재 디렉터리, PYTHONPATH 및 설치 프로세스에서 결정된 기본 디렉터리가 포함됩니다.


PYTHONPATH 변수

환경 변수인 PYTHONPATH는 목록에 설치된 여러 디렉터리로 구성됩니다. PYTHONPATH의 구문은 셸 변수 PATH의 구문과 동일합니다.

Windows 시스템에서 일반적인 PYTHONPATH는 다음과 같습니다.

set PYTHONPATH=c:python20lib;

UNIX 시스템에서 일반적인 PYTHONPATH는 다음과 같습니다.

set PYTHONPATH=/usr/local/lib/python

네임스페이스 및 범위

변수는 일치하는 객체가 있는 이름(식별자)입니다. 네임스페이스는 변수 이름 이름(키)과 해당 개체(값)를 포함하는 사전입니다.

Python 표현식은 로컬 네임스페이스와 전역 네임스페이스의 변수에 액세스할 수 있습니다. 지역 변수의 이름이 전역 변수와 동일한 경우 지역 변수가 전역 변수를 덮어씁니다.

각 함수에는 고유한 네임스페이스가 있습니다. 클래스 메소드의 범위 지정 규칙은 일반 함수의 경우와 동일합니다.

Python은 함수 내에 할당된 모든 변수가 로컬이라는 가정하에 변수가 로컬인지 전역인지 지능적으로 추측합니다.

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

global VarName 표현식은 Python에게 VarName이 전역 변수임을 알려주므로 Python은 로컬 네임스페이스에서 이 변수를 찾지 않습니다.

예를 들어 전역 네임스페이스에 돈이라는 변수를 정의합니다. 그런 다음 함수 내의 변수 돈에 값을 할당하면 Python은 돈이 지역 변수라고 가정합니다. 그러나 우리는 로컬 변수인 돈에 접근하기 전에 이를 선언하지 않았으며 결과는 UnboundLocalError입니다. 이 문제는 전역 명령문 의 주석 처리를 제거하면 해결될 수 있습니다.

>>>#!/usr/bin/python

>>>Money = 2000

>>>def AddMoney( ):

# 코드를 수정하려면 다음 주석을 제거하세요:

# global Money

Money = Money + 1

>> ;>돈 인쇄

>>>AddMoney()

>>>돈 인쇄

dir() 함수

dir() 함수는 문자열의 정렬된 목록이며, 그 내용은 모듈에 정의된 이름입니다.

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

>>>#!/usr/bin/python

>>># 내장 수학 모듈 가져오기

> ;>>수학 가져오기

>>>content = dir(math)

>>>콘텐츠 인쇄;

위의 예시 출력 결과 :

['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']

여기서 특수문자문자열 변수 이름은 모듈 이름을 가리키고, 파일은 모듈 이름을 가리킨다. 모듈의 가져온 파일입니다.


globals() 및 locals() 함수

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

함수 내부에서 locals()를 호출하면 함수에서 접근할 수 있는 모든 이름이 반환됩니다.

함수 내에서 globals()가 호출되면 함수에서 액세스할 수 있는 모든 전역 이름이 반환됩니다.

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

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/Isdn.py에는 Isdn( ) 기능이 포함되어 있습니다.

  • Phone/G3.py에는 G3() 함수가 포함되어 있습니다.

이제 Phone 디렉토리에 init.py 파일을 만듭니다.

  • Phone/init.py

Phone을 가져올 때 모든 기능을 사용하려면 init.py에서 명시적인 가져오기를 사용해야 합니다. 설명은 다음과 같습니다.

>>>from Pots import Pots

>>>from Isdn import Isdn

>>>from G3 import G3

init.py에 이러한 코드를 추가한 후 Phone 패키지를 가져올 때 이러한 모든 클래스를 사용할 수 있습니다.

>>>#!/usr/bin/python

>>># 이제 전화 패키지를 가져옵니다.

>>> ;전화 가져오기

>>>Phone.Pots()

>>>Phone.Isdn()

>>>Phone .G3()

위 예의 출력 결과:

나는 팟츠폰이다

나는 3G폰이다

나는 ISDN폰이다

위와 같이 예시를 위해 기능은 하나만 넣었다 , 하지만 실제로는 많은 기능을 넣을 수 있습니다. 또한 이러한 파일에서 Python 클래스를 정의한 다음 이러한 클래스에 대한 패키지를 빌드할 수도 있습니다.

위 내용은 필요한 기능을 구현하기 위한 Python 모듈 가져오기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!