안녕하세요 이승혁입니다.
이번 시간에는 파이썬에서의 함수와, 모듈, 그리고 패키지에 대해 학습을 진행해 보도록 하겠습니다~
ㆍ함수(def)
함수란 특정 목적을 가진 코드의 집합이며 독립적으로 호출될 수 있는 것을 말합니다.
※ 함수를 프로그래밍할 때 꼭 명심해야 할 사항 ( 권고사항 )
- 함수는 기능이 가급적 하나이면서 코드를 심플하게 작성해야 합니다/
- 함수는 재사용이 가능해야 합니다.
※ 함수 생성하는 방법
def 함수명(변수1,변수2...):
수행 코드
return 반환값
변수1, 변수2처럼 함수에 넘겨주는 변수를 입력 매개변수라고 합니다
#함수 생성하기
def add_number(num1,num2):
result=num1+num2
return result
#함수 사용해보기
hap=add_number(5,10)
print(hap)
오라클 내장 함수 vs 파이썬 내장 함수
upper upper()
lower lower()
initcap 직접 생성
substr 직접 생성
replace replace
length len
rtirm/ltrim rstrip()/lstrip()
rpad 직접 생성
lpad 직접 생성
instr 직접 생성
round round()
trunc trunc()
mod %
power pow
to_char str
to_number int,float
to_date datetime.strptime()
nvl 직접 생성
decdoe if
case if
실습 2. 오라클의 initcap 함수 만들어보기
def initcap(string):
result=string[0].upper()+string[1:].lower()
return result
name='SCOTT'
print(initcap(name))
실습 3. 오라클의 substr 함수 만들어보기
def substr(string,n1,n2):
result=string[n1-1:n2]
return result
print(substr(name,1,3))
※ 함수의 인자 이해하기
인자의 기본값(default)을 설정할 수 있으며, 따로 인자를 넘겨주지 않으면 기본값을 사용합니다.
def make_sentence(s1,s2='최고'):
return s1+' '+s2
print(make_sentence('파이썬'))
print(make_sentence('파이썬','자바'))
처음 사용한 함수에는 인자를 하나만 전달하여 s2인자의 기본값인 '최고'를 그대로 사용하였다.
두 번째 사용한 함수에는 '파이썬', '자바' 두 개의 인자를 전달하여 기본값이 아닌 두 번째 인자 '자바'를 사용했다.
※ 변수 이해하기 (지역변수 , 전역변수)
변수는 자신이 생성된 범위(코드블럭) 안에서만 유효하다.
함수 안에서 만든 변수는 함수 안에서만 살아있다가
함수 코드의 실행이 종료되면 그 생명을 다한다.
이것을 '지역변수' 라고 한다.
이와는 반대로 함수 외부에서 만든 변수는 프로그램이 살아있는 동안에
함께 살아있다가 프로그램이 종료되면 같이 소멸된다.
이렇게 프로그램 전체를 유효범위로 가지는 변수를 '전역변수'라고 한다.
strdata='전역변수'
def func1():
strdata='지역변수'
return strdata
print(strdata)
print(func1())
변수의 이름은 같지만, 함수안에서 선언된 strdata는 그 함수를 선언한 구문에서만 strdata='지역변수'의 역할을 한다.
반대로 전역변수로 선언한(함수 밖) strdata 변수는 프로그램 어디서 사용하던 strdata='전역변수'의 역할을 한다.
ㆍ모듈(module)
파이썬에서는 각각의 소스파일을 일컬어 모듈이라고 합니다.
이미 만들어져 있고 안정성이 검증된 함수들을 성격에 맞게 하나의 파일로 묶어놓은 것을 모듈이라고 한다.
외부의 모듈에 있는 함수를 사용하려면 이 모듈을 먼저 우리 코드로 가져와서
자유롭게 사용할 수 있도록 해야하는데 이런 일을 파이썬에서는 모듈을 IMPORT 한다고 합니다.
※ 모듈 만들어보기
위에서 만든 initcap 함수, substr 함수를 sh_tistory 모듈로 만들어 보겠습니다.
1. 모듈 저장 위치 확인하기
import sys
print(sys.path)
현재 시스템의 경로가 저장되어있는 리스트라고 생각하시면 됩니다.
해당 경로에 모듈을 저장하면 디렉토리를 이동하지 않아도 import 할 수 있습니다.
sys.path
모듈을 찾을 때 참조하는 경로를 나타낸다.
리스트 구조(string)이며, sys.path에 자기가 만든 모듈이 들어가있다면 모듈이 저장된 디렉터리로 이동할 필요 없이
(내가 만든 모듈이나 패키지는 현재 디렉터리에 있는 것만 불러오기 때문) 바로 불러서 사용할 수 있다.
sys.path를 이용하여 모듈 검색 경로를 바꿔, 모듈들의 부르기 순서를 바꿀 수 있다.
sys.path의 site-packages폴더에는 pip로 설치한 파이썬패키지가 들어간다.
Jupyter notebook
첫 화면에서 보이는 경로에 추가해도 됩니다.
코드를 실행하여 경로를 확인합니다.
빨간색으로 표시한 경로 아래에 저장하겠습니다.
2. 모듈 작성하고 저장하기
메모장에 위에서 만든 함수를 작성하고 sh_tistory.py로 저장합니다.
파일 형식은 모든파일로 바꾸어주고 저장합니다.
3. 확인하기
커널을 재시작(Restart)한 후 모듈을 임포트 해봅니다.
코드는 다음과 같습니다.
import sh_tistory
print(sh_tistory.initcap('LEEseungHYUK'))
함수만을 import 하면 앞에 모듈이름을 써주지 않아도 됩니다.
from sh_tistory import initcap
print(initcap('LEEseungHYUK'))
첫 번째 경우는 모듈 전체를 임포트 했기 때문에 어떤 함수를 사용할지 모듈 이름과 함수명으로 나타내 주어야 하고,
두 번째 경우는 모듈안의 특정 함수만 임포트 했기 때문에 모듈명을 따로 명시해 주지 않아도 됩니다.
ㆍ 패키지(package)
음악 파일을 장르별로 저장하는 것 처럼, 모듈도 기능별로 모아둔 것을 패키지라고 합니다.
※ 패키지 만들기
1. 위의 경로 (c:\\사용자\\User) 안에 my_loc 폴더를 생성합니다.
2. 생성한 폴더 안으로 sh_tistory.py 모듈을 옮겨넣습니다.
c:\\사용자\\User\my_loc
|
sh_tistory.py
3. 지금까지는 평범한 폴더이므로, 패키지로 인정받기 위한 파일을 생성합니다.
파일명 : __init__.py <- 언더스코어( _ )2개, init , 언더스코어 2개 . py
c:\\사용자\\User\my_loc
|
sh_tistory.py
__init__.py
똑같이 메모장으로 만들면 되고(파일형식-모든파일) 안에는 비워두시면 됩니다.
4. 확인하기
커널 재시작합니다.
from my_loc import sh_tistory
print(sh_tistory.initcap('LEEseungHYUK'))
5. __init__.py 의 내용을 채울경우
my_loc폴더에 다른 모듈이 생길 경우에 채워 넣습니다.
ex)
c:\\사용자\\User\my_loc
|
sh_tistory.py
__init__.py
sh2.py
sh3.py
두 개의 모듈(sh2,sh3)을 추가로 만들어서 패키지로 묶을 경우에 __init__ 파일을 다음과 같이 채워 넣습니다.
__all__ = ['sh_tistory', 'sh2', 'sh3']
위의 경우 from my_loc import * 코드를 통해 세 개의 모듈을 한 번에 임포트할 수 있습니다.
이번 실습은 여기까지 진행하고 다음 포스팅에서는 모듈 임포트에 대해 조금 더 이해할 수 있는 시간을
가져보도록 하겠습니다.
읽어주셔서 감사합니다.
'프로그래밍 > Python' 카테고리의 다른 글
Python-10) 예외 처리하기(try ~ except) : Python, Python 설치, 파이썬 마스터 (0) | 2020.11.24 |
---|---|
Python-9) 클래스의 상속, 오버로딩, 오버라이딩 : Python 설치, 클래스, 상속, 객체지향 언어 (2) | 2020.11.23 |
Python-8) Class : Python, Python 설치, 파이썬 클래스, 객체 (0) | 2020.11.17 |
Python-7) Numpy : Python, Python 설치, 파이썬 마스터, 객체지향 언어 (0) | 2020.11.16 |
Python-5) tuple , list, dictionary : Python, Python 설치, 파이썬 마스터 (0) | 2020.11.10 |
Python-4) Sequence, Indexing, Slicing, len : Python, Python 설치, 시퀀스, 슬라이싱, 파이썬 마스터 (0) | 2020.11.09 |
Python-3) for문, while문, None, 연산자 : Python 설치, 파이썬 마스터, 파이썬 자격증 (0) | 2020.11.05 |
Python-2) 변수, 자료형, 파이썬 if문, 파이썬 for문 : Python, Python 설치, 파이썬 마스터 (0) | 2020.11.04 |