*같은 폴더 내 모듈 파일 생성 하기
모듈 파일(area.py)
PI = 3.14
def circle(radius):
return PI * radius * radius
def square(length):
return length * length
실행파일(run.py)
1-1. 모듈 내 모든 함수 가져오고 싶은 경우
import area
print(area.circle(2))
print(area.square(3))
1-2.모듈 내 모든 함수 가져오고싶은 경우 2
from area import *
print(Square(2))
print(circle(2))
print(PI)
→어느 모듈에서 가져왔는지 명확하지 않고, 쓸데없는 기능까지 가져올 수 있어서 추천하지 않음.
2-1. 일부 함수만 가져오고 싶은 경우
from area import circle, square
print(circle(2)) # 모듈이름 안써줘도 됩니다.
print(square(3))
2-2.일부 함수만 가져오고 싶은 경우 2
from area import square as sq
print(sq(2))
파일안에서 정의된 사용할 수 있는 속성들을 확인 할 수 있음
파일안에서 정의된 모든 이름들
from area import circle, square as sq
def square(length):
return 4 * length
# dir 함수(area) 넣으면 area내 속성들 확인 가능
print(dir())
print(square(3)) # 함수 이름이 중복될 때 -> 가장 나중에 정의된 함수의 결과값이 나옴
print(sq(3))
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'circle', 'sq', 'square']
12
9
모듈을 어떻게 불러오냐에 따라서 네임스페이스 안에 저장되는 이름이 다르다. area를 불러오면 모듈 이름인 ‘area’만 저장됨. as로하면 약칭으로 저장됨. → 속성 이름들이 겹치지 않도록 확인 잘해주기~!
root
: 파일 시스템의 뿌리 (모든 파일은 루트 안에 있음)
directory
: 폴더
파일 경로
: 컴퓨터에 있는 파일의 정확한 위치
\
로 표기. 예를 들어 folder 디렉토리 안의 file2.py는 folder\file2.py로 표기/
로 표기. 예를 들어 folder 디렉토리 안의 file2.py는 folder/file2.py 로 표기/
로 표기합니다.: 루트에서 시작하는 파일의 전체경로
C:\my\file1.py
C:\my\folder\file2.py
C:\your\directory
/my/file1.py
/my/folder/file2.py
/your/directory
: 현재위치를 기준으로 다른 파일의 위치를 나타냄
: 항상.(현재 디렉토리 뜻함) 아니면 ..(현재 디렉토리를 포함하고 있는 디렉토리)으로 시작한다.
Windows:
.\folder\file2.py
.\file2.py
.\folder\file2.py
(file2.py는 my 디렉토리에 위치해 있기 때문에 . 은 my 디렉토리를 뜻함).\file4.csv
..\file1.py
..\folder
Mac OS:
./folder/file2.py
./file2.py
./folder/file2.py
(file2.py는 my 디렉토리에 위치해 있기 때문에 . 은 my 디렉토리를 뜻함)./file4.csv
../file1.py
../folder
import sys
print(sys.path) # 파이썬이 모듈을 찾기위해 검색해보는 경로를 보여줌
# 실행한 파일이 있는 폴더부터 시작 -> 나머지 경로들은 파이썬이 디폴트로 찾는 경로들
1.sys.path에 **.**append()로 경로 추가(일회성, 프로그램 종료시 경로 사라짐 )
: sys.path는 결국 리스트이기 때문에 .append 함수로 경로를 추가 할 수 있다.
import sys
sys.path.append('/Users/codeit/Desktop') # 바탕화면 경로를 추가(macOS)
sys.path.append('C:\\Users\\codeit\\Desktop') # 바탕화면 경로를 추가(Windows)
2.sys.path에 영구적으로 경로 추가
: PyCharm의 설정 (Windows: File → Settings, macOS: PyCharm → Preferences)으로 가서 Project 탭 안에 있는 Project Interpreter를 클릭 → 톱니바퀴 버튼을 누른 후 Show All 옵션을 클릭 → 파일 경로 아이콘을 클릭 → + 아이콘을 누른 후 원하는 경로를 추가 → OK 클릭
스크립트
: 프로그램을 작동시키는 코드를 담은 실행 용도의 파일
모듈
: 프로그램에 필요한 변수들이나 함수들을 정의해 놓은 파일
<area.py>
print('area 모듈이름: {}'.format(__name__))
PI = 3.14
def circle(radius):
return PI * radius * radius
def square(length):
return length * length
# 하단 출력결과가 스크립트에서 출력되지 않도록 조건 지정
if __name__ == '__main__':
print(circle(2) ==12.56)
print(circle(5) ==78.5)
print(square(2) ==4)
print(square(5) ==25)
# __name__ -> 모듈의 이름을 저장해놓은 변수, 값은 파이썬에서 알아서 정해줌
# __main__ -> 해당 파일에서 실행하면 main, 다른 파일에서 import해서 쓰면 원래 모듈 이름으로 지정됨
# 만약 area파일을 직접 실행하면 main, 다른 곳에서 불러와서 사용하면 모듈이름인 area로 지정
area 모듈이름: __main__ # 직접 실행해서 main 출력
True
True
True
True
<run.py>
print('run 모듈이름: {}'.format(__name__))
import area
x = float(input('원의 반지름을 입력해 주세요: '))
print('반지름이 {}인 원의 면적은 {}입니다.\n'.format(x, area.circle(x)))
y = float(input('정사각형의 변의 길이를 입력해 주세요: '))
print('변의 길이가 {}인 정사각형의 면적은 {}입니다.'.format(y, area.square(y)))
run 모듈이름: __main__
area 모듈이름: area # area파일을 import해서 모듈이름인 area 출력
원의 반지름을 입력해 주세요:
: 어떤 프로그램을 작동시키는 부분을 main 함수 안에 넣어줌
→ 프로그램을 작동시키는 코드가 어디에 있는지 쉽게 알 수 있기 때문에 코드의 가독성이 좋아진다.
따라서 요구되지 않더라도 if __name__ == '__main__'
과 main()
을 사용하는 것을 추천
<area.py>
PI = 3.14
# 원의 면적을 구해 주는 함수
def circle(radius):
return PI * radius * radius
# 정사각형의 면적을 구해 주는 함수
def square(length):
return length * length
# 함수들을 테스팅 하는 메인 함수
def main():
# circle 함수 테스트
print(circle(2) == 12.56)
print(circle(5) == 78.4)
# square 함수 테스트
print(square(2) == 4)
print(square(5) == 25)
if __name__ == '__main__':
main()
<run.py>
import area
# 면적 계산기 프로그램
def main():
x = float(input('원의 지름을 입력해 주세요: '))
print('지름이 {}인 원의 면적은 {}입니다.\n'.format(x, area.circle(x)))
y = float(input('정사각형의 변의 길이를 입력해 주세요: '))
print('변의 길이가 {}인 정사각형의 면적은 {}입니다.'.format(y, area.square(y)))
if __name__ == '__main__':
main()