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 문을 사용하면 모듈에서 현재 네임스페이스로 특정 속성을 가져올 수 있습니다. from...import 다음 구문이 있습니다 -
from modname import name1[, name2[, ... nameN]]
예를 들어, fib 모듈에서 fibonacci 함수를 가져오려면 다음 명령문을 사용하십시오. -
from fib import fibonacci
이 명령문은 전체 모듈 fib를 현재 네임스페이스로 가져오지 않습니다. 모듈 fib의 fibonacci 항목을 가져오는 모듈의 전역 기호 테이블에 소개합니다.
다음 import 문을 사용하여 모듈의 모든 이름을 현재 네임스페이스로 가져올 수도 있습니다. -
from modname import *
이것은 모듈의 모든 항목을 현재 네임스페이스로 가져오는 쉬운 방법을 제공합니다. 그러나 이 문은 드물게 사용해야 합니다.
모듈을 가져올 때 Python 인터프리터는 다음 순서로 모듈을 검색합니다. -
현재 디렉토리.
모듈을 찾을 수 없으면 Python은 쉘 변수 PYTHONPATH에서 각 디렉토리를 검색합니다.
다른 모든 방법이 실패하면 Python은 기본 경로를 확인합니다. UNIX에서 이 기본 경로는 일반적으로 /usr/local/lib/python/입니다.
모듈 검색 경로는 시스템 모듈 sys에 sys.path로 저장됩니다. 변하기 쉬운. sys.path 변수에는 현재 디렉토리인 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() 내장 함수는 모듈에 의해 정의된 이름을 포함하는 정렬된 문자열 목록을 반환합니다.
목록에는 모듈에 정의된 모든 모듈, 변수 및 함수의 이름이 포함됩니다. 다음은 간단한 예입니다 -
라이브 데모#!/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__ 모듈이 로드된 파일 이름입니다.
전역() 및 locals() 함수는 호출된 위치에 따라 전역 및 로컬 네임스페이스의 이름을 반환하는 데 사용할 수 있습니다.
locals()가 함수 내에서 호출되면 해당 함수에서 로컬로 액세스할 수 있는 모든 이름을 반환합니다.
함수 내에서 globals()를 호출하면 해당 함수에서 전역적으로 액세스할 수 있는 모든 이름을 반환합니다.
이 두 함수의 반환 유형은 사전입니다. 따라서 keys() 함수를 사용하여 이름을 추출할 수 있습니다.
모듈을 스크립트로 가져올 때 모듈의 최상위 부분에 있는 코드는 한 번만 실행됩니다.
따라서 모듈의 최상위 코드를 다시 실행하려면 reload()를 사용할 수 있습니다. 기능. reload() 함수는 이전에 가져온 모듈을 다시 가져옵니다. reload() 함수의 구문은 다음과 같습니다. -
reload(module_name)
여기, module_name 모듈 이름을 포함하는 문자열이 아니라 다시 로드하려는 모듈의 이름입니다. 예를 들어, hello를 다시 로드하려면 모듈에서 다음을 수행하십시오 -
reload(hello)
패키지는 모듈과 하위 패키지, 하위 하위 패키지 등으로 구성된 단일 Python 애플리케이션 환경을 정의하는 계층적 파일 디렉토리 구조입니다.
Pots.py 파일을 고려하십시오. 전화에서 사용 가능 예배 규칙서. 이 파일에는 다음과 같은 소스 코드 행이 있습니다. -
#!/usr/bin/python def Pots(): print "I'm Pots Phone"
비슷한 방식으로 위와 같은 이름을 가진 다른 기능을 가진 두 개의 파일이 더 있습니다. -
전화/Isdn.py Isdn()
함수가 있는 파일전화/G3.py 함수 G3()
가 있는 파일이제 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
놓치신 경우:Python 2는 2020년 1월 1일부로 공식적으로 지원되지 않음 . 아직 Python 2.7을 사용 중이라면 지금 업그레이드하세요. . 실행 중인 버전이 확실하지 않은 경우 Python 버전을 확인하세요. 많은 패키지 유지 관리자가 Python 3으로 마이그레이션했습니다. 일부는 여전히 Python 2를 지원하고 다른 일부는 이미 Python 2 지원을 중단했습니다. Python 2 코드 기반에서 마이그레이션해야 하는 경우 Python 코드를 Python 3으로 마이그레이션하는 방법에 대한 가이드를 읽어보세요.
대부분의 사람들이 Arduino 마이크로컨트롤러로 작업을 시작할 때 사용 가능한 모든 확장 모듈과 실드를 인식하지 못합니다. Arduino Uno는 전 세계적으로 가장 인기 있는 마이크로컨트롤러 중 하나이지만 Bluetooth 연결 기능은 없습니다. 물론 블루투스 기능이 내장된 Arduino BT나 Raspberry Pi 4와 같이 블루투스가 내장된 보드를 구입할 수도 있습니다. 그러나 이러한 보드는 더 비싸고 부피가 크며 프로젝트에 사용하기에 재미가 떨어질 수 있습니다. 블루투스 연결이 없는 마이크로컨트롤러에 블루투스 연결을