목차
import 문
From...import * 문
모듈 찾기
PYTHONPATH 변수
네임스페이스 및 범위
globals() 및 locals() 함수
reload() 함수
Python의 패키지 " >Python의 패키지
백엔드 개발 파이썬 튜토리얼 필요한 기능을 구현하기 위한 Python 모듈 가져오기

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

Mar 24, 2017 pm 03:56 PM
파이썬 모듈

모듈을 사용하면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

Inversiting.com의 크롤링 메커니즘을 우회하는 방법은 무엇입니까? Inversiting.com의 크롤링 메커니즘을 우회하는 방법은 무엇입니까? Apr 02, 2025 am 07:03 AM

Investing.com의 크롤링 전략 이해 많은 사람들이 종종 Investing.com (https://cn.investing.com/news/latest-news)에서 뉴스 데이터를 크롤링하려고합니다.

See all articles