python
이 기사에서는 Python에서 사용자 정의 모듈을 만들고 가져오는 방법을 배웁니다. 또한 Python에서 사용자 정의 및 내장 모듈을 가져오고 사용하는 다양한 기술을 찾을 수 있습니다.
모듈은 Python 문 및 정의가 포함된 파일을 참조합니다.
Python 코드가 포함된 파일(예:example.py
) , 모듈이라고 하며 모듈 이름은 example
입니다. .
우리는 모듈을 사용하여 큰 프로그램을 관리 가능하고 정리된 작은 파일로 나눕니다. 또한 모듈은 코드의 재사용성을 제공합니다.
다른 프로그램에 정의를 복사하는 대신 모듈에서 가장 많이 사용하는 함수를 정의하고 가져올 수 있습니다.
모듈을 만들어 봅시다. 다음을 입력하고 example.py
로 저장합니다. .
# Python Module example
def add(a, b):
"""This program adds two
numbers and return the result"""
result = a + b
return result
여기에서 add()
함수를 정의했습니다. example
라는 모듈 내부 . 이 함수는 두 개의 숫자를 받아 합을 반환합니다.
모듈 내부의 정의를 다른 모듈이나 Python의 대화형 인터프리터로 가져올 수 있습니다.
import
를 사용합니다. 이 작업을 수행하는 키워드입니다. 이전에 정의한 모듈 example
을 가져오려면 , Python 프롬프트에 다음을 입력합니다.
>>> import example
이것은 example
에 정의된 함수의 이름을 가져오지 않습니다. 현재 기호 테이블에서 직접. 모듈 이름 example
만 가져옵니다. 거기.
모듈 이름을 사용하면 점 .
을 사용하여 함수에 액세스할 수 있습니다. 운영자. 예:
>>> example.add(4,5.5)
9.5
파이썬에는 수많은 표준 모듈이 있습니다. Python 표준 모듈의 전체 목록과 사용 사례를 확인할 수 있습니다. 이 파일은 Python을 설치한 위치 내의 Lib 디렉토리에 있습니다.
표준 모듈은 사용자 정의 모듈을 가져오는 것과 같은 방식으로 가져올 수 있습니다.
모듈을 가져오는 방법은 다양합니다. 아래에 나열되어 있습니다.
<시간>
import
를 사용하여 모듈을 가져올 수 있습니다. 문을 열고 위에서 설명한 대로 점 연산자를 사용하여 그 안의 정의에 액세스합니다. 다음은 예입니다.
# import statement example
# to import standard module math
import math
print("The value of pi is", math.pi)
프로그램을 실행하면 다음과 같이 출력됩니다.
The value of pi is 3.141592653589793<시간>
다음과 같이 이름을 변경하여 모듈을 가져올 수 있습니다.
# import module by renaming it
import math as m
print("The value of pi is", m.pi)
math
의 이름을 변경했습니다. 모듈을 m
으로 . 이렇게 하면 경우에 따라 입력 시간을 절약할 수 있습니다.
이름 math
우리의 범위에서 인정되지 않습니다. 따라서 math.pi
유효하지 않으며 m.pi
올바른 구현입니다.
전체 모듈을 가져오지 않고 모듈에서 특정 이름을 가져올 수 있습니다. 다음은 예입니다.
# import only pi from math module
from math import pi
print("The value of pi is", pi)
여기서는 pi
만 가져왔습니다. math
의 속성 모듈.
이러한 경우에는 점 연산자를 사용하지 않습니다. 다음과 같이 여러 속성을 가져올 수도 있습니다.
>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045
<시간> 다음 구성을 사용하여 모듈에서 모든 이름(정의)을 가져올 수 있습니다.
# import all names from the standard module math
from math import *
print("The value of pi is", pi)
여기에서는 수학 모듈에서 모든 정의를 가져왔습니다. 여기에는 밑줄(개인 정의)로 시작하는 이름을 제외하고 범위에서 볼 수 있는 모든 이름이 포함됩니다.
별표(*) 기호가 있는 모든 항목을 가져오는 것은 좋은 프로그래밍 방법이 아닙니다. 이로 인해 식별자에 대한 정의가 중복될 수 있습니다. 또한 코드의 가독성을 저해합니다.
<시간>
모듈을 가져오는 동안 Python은 여러 위치를 살펴봅니다. 인터프리터는 먼저 내장 모듈을 찾습니다. 그런 다음(내장 모듈을 찾을 수 없는 경우) Python은 sys.path
에 정의된 디렉토리 목록을 찾습니다. . 이 순서대로 검색됩니다.
PYTHONPATH
(디렉토리 목록이 있는 환경 변수).>>> import sys >>> sys.path ['', 'C:\\Python33\\Lib\\idlelib', 'C:\\Windows\\system32\\python33.zip', 'C:\\Python33\\DLLs', 'C:\\Python33\\lib', 'C:\\Python33', 'C:\\Python33\\lib\\site-packages']
이 목록을 추가하고 수정하여 고유한 경로를 추가할 수 있습니다.
<시간>Python 인터프리터는 세션 중에 한 번만 모듈을 가져옵니다. 이것은 일을 더 효율적으로 만듭니다. 다음은 이것이 어떻게 작동하는지 보여주는 예입니다.
my_module
이라는 모듈에 다음 코드가 있다고 가정합니다. .
# This module shows the effect of
# multiple imports and reload
print("This code got executed")
이제 우리는 다중 가져오기의 효과를 봅니다.
>>> import my_module
This code got executed
>>> import my_module
>>> import my_module
코드가 한 번만 실행되었음을 알 수 있습니다. 이것은 우리 모듈이 한 번만 가져왔다는 것을 의미합니다.
이제 프로그램이 진행되는 동안 모듈이 변경되면 다시 로드해야 합니다. 이를 수행하는 한 가지 방법은 인터프리터를 다시 시작하는 것입니다. 그러나 이것은 별로 도움이 되지 않습니다.
Python은 이를 수행하는 보다 효율적인 방법을 제공합니다. reload()
를 사용할 수 있습니다. imp
내부의 함수 모듈을 다시 로드하는 모듈. 다음과 같은 방법으로 할 수 있습니다.
>>> import imp
>>> import my_module
This code got executed
>>> import my_module
>>> imp.reload(my_module)
This code got executed
<module 'my_module' from '.\\my_module.py'>
<시간>
dir()
을 사용할 수 있습니다. 모듈 내부에 정의된 이름을 찾는 함수입니다.
예를 들어, add()
함수를 정의했습니다. example
모듈에서 우리가 처음에 가지고 있었던 것입니다.
dir
를 사용할 수 있습니다. example
다음과 같은 방식으로 모듈:
>>> dir(example)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add']
여기에서 정렬된 이름 목록을 볼 수 있습니다(add
). 밑줄로 시작하는 다른 모든 이름은 모듈과 관련된 기본 Python 속성입니다(사용자 정의가 아님).
예를 들어, __name__
속성은 모듈의 이름을 포함합니다.
>>> import example
>>> example.__name__
'example'
현재 네임스페이스에 정의된 모든 이름은 dir()
을 사용하여 찾을 수 있습니다. 인수가 없는 함수입니다.
>>> a = 1
>>> b = "hello"
>>> import math
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']
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와 같이 블루투스가 내장된 보드를 구입할 수도 있습니다. 그러나 이러한 보드는 더 비싸고 부피가 크며 프로젝트에 사용하기에 재미가 떨어질 수 있습니다. 블루투스 연결이 없는 마이크로컨트롤러에 블루투스 연결을