Blog Full Notice
back to main page
Ch01. 파이썬 라이브러리의 이해 네이버 블로그
motivation: 네이버 블로그
#Ch01. 파이썬 라이브러리의 이해 : 네이버 블로그
1. 아나콘다 환경설정 하는 법
아나콘다(Anaconda) 사용법 및 가상환경 관리하는법
conda –version
conda create -n 가상환경이름 python=3.9
conda create -n 가상환경이름 python
conda remove -n 가상환경이름 –all
(all에서 대쉬 2개)
conda env list
(conda env list 하면 가상환경이 어디에 있는지 알 수 있다. 어디에 있다는 것을 안다.)
activate 가상환경이름
conda deactivate
2. 가상환경에서, jupyter notebook을 사용하기 위해, kernel 설정하기.
pycharm으로 fastcampus라는 가상환경 만들고, interpreter 설정하고,
jupyter notebook을 terminal에서 fastcampus 가상환경에서 열고,
jupyer notebook에서 kernel을 확인하는데 jupyter notebook에서, 근데 잘 안됨.
그래서 pycharm 새로운 terminal에서
pip install ipykernel
python -m ipykernel install –user –name 가상환경이름 –display-name 커널이름
물론 여기서 가상환경이름은 fastcampus고, 커널 이름도 fastcampus라고 그냥 했다.
그러면 jupyter notebook이 제대로 동작을 한다.
안되면, pip install jupyter notebook
하면 된다.
3. 인코딩과 디코딩
소스코드 맨 위에,
# -*- coding: utf-8 -*-
혹은
#-*- coding: ascii -*-
이렇게 적자. 이렇게 맨 위에 적으면, 컴파일러가 알아서 encoding, decoding해준다.
str1 = "str"
utf8 = str1.encode("utf-8")
ascii = str1.encode("ascii")
이러면 byte로 나온다.
utf8.decode("utf-8")
ascii.decode("ascii")
하면 문자로 다시 나온다.
다른 디코더로 디코딩하면 에러난다.
4. 클로저와 데코레이터
함수 안의 함수로 결과를 반환할 때, 내부 함수를 클로저, closure라고 한다.
사용되는 곳 1. 콜백 함수, 2. 데코레이터 함수.
def mul(m):
def wrapper(n):
return m * n
return wrapper
이런 식으로 외부 함수는 내부 함수를 return하는 형태를 closure라고 한다.
outer_function = mul(2)
wrapper_function_result = outer_function(3)
이런 식으로 할 수 있다.
2. 데코레이터: 함수를 인수로 받는 클로저!! @를 이용한 문법도 가능하다.
import time
def func1(a, b):
start = time.time()
print("함수가 실행됩니다.")
val = a + b
end = time.time()
print("함수 수행시간: %f 초" % (end-start))
return val
if __name__ == "__main__":
result = func1(1, 2)
print(result)
def func2(a, b):
start = time.time()
print("함수가 실행됩니다.")
val = a * b
end = time.time()
print("함수 수행시간: %f 초" % (end-start))
return val
이렇게 곱하기, 더하기 연산에 대한 경과시간을 측정하는데 함수를 하나 새로 만들어야 한다.
''' 실행 시간 측정 데코레이터 '''
def elapsed(func): # 함수를 인풋으로 받는다.
def wrapper(a, b):
print('함수가 실행됩니다.')
start = time.time()
result = func(a, b) # 함수 실행
end = time.time()
print("함수 수행시간: %f 초" % (end - start)) # 함수 수행시간
return result # 함수 실행 결과 반환
return wrapper
즉 데코레이터는,
def decorator(arg_func):
def return_function(a, b, c):
#time 측정 시작
result = arg_func(넣어야할 인자 알아서 넣으면 됨.)
#time 측정 종료
return result
return return_function
closure_return_function = decorator(시간측정하고싶은함수)
result = closure_return_function(1,2,3)
print(result)
하면은 그냥 시간측정하고싶은함수만 변경해주면 빠르고 쉽게 변경할 수 있다.
def func1(a, b):
val = a + b
return val
def func2(a, b):
val = a * b
return val
만약 함수를 이렇게 정의하면,
@elapsed
def func1(a, b):
val = a + b
return val
@elapsed
def func2(a, b):
val = a * b
return val
func1(a,b)
이렇게 하면
closure_function = decorator(func1)
result = closure_function(a,b)
이거와 같게 된다.
함수 정의 단계에서, 데코레이터를 쓸 것이라고 선언했기 때문에 이렇게 써도 가능한 것이다.
5. 이터레이터와 제너레이터
이터레이터: 집합에서 값을 차례대로 꺼낼 수 있는 객체(object)를 말한다. 리스트를 사용하지 않고 이거를 사용하는 이유는 결국 필요할 때에 그때그떄 꺼내서 사용하는 것이 메모리, 속도 등에서 효율적이기 때문이다.
for 문을 순회할 수 있는 객체.
iter(list) 하면 iterator로 만들어준다.
next(iterator)하면 다음값을 뽑아주고, 한번 반복하면 다시 사용될 수 없다. 끝까지 가면 에러가 뜬다. for i in iterator: 에서 한번 사용하면 더이상 return되지 않는다. 한번만 사용할 수 있는 data type이다.
제너레이터: 이터레이터를 생성해주는 함수고, return 대신 yield를 사용하면 된다.
6. 변수 타입 어노테이션
파이썬은 정수형, float 형이라고 어떤 변수에 지칭해줄 수 없다. 이런 파이썬같은 언어를 동적 프로그래밍 언어라고 한다. 소스코드가 깔끔해지지만, 프로젝트 규모가 커질수록 잘못된 타입 사용으로 인한 버그 생성의 확률이 높아진다. 그리고 실행속도도 느리다.
그래서, 파이썬이 타입 어노테이션이 있는데, 강제적이지는 않다. 그냥 어떤변수.__annotations__ 또는 어떤함수.__annotations__ 를 출력하면, 어떤 자료형을 기대하는지 알려줄 뿐이다.
# 파이썬 변수 타입 어노테이션
a: int = 10
# 파이썬 함수 타입 어노테이션
def add(a: int, b: int) -> int:
return a + b
그리고 add.__annotations__
하면 어떤 타입을 사용해야 하는지 알 수 있다.
7. 문자열 처리, str()와 repr()의 차이
숫자를 str, repr 함수로 감싸면은 같은 결과가 나온다.
근데 문자열을 각각 함수로 감싸면은, repr은 "" 이 두번 감싸져서 나온다.
날짜의 경우,
import datetime
a = datetime.datetime(2022,1,1)
str(a)
'2022-01-01 00:00:00'
repr(a)
'datetime.datetime(2022, 1, 1, 0, 0)'
이렇게 나온다.
repr() 의 inverse 함수는 eval()이다. evaluation.
그러면 객체로 다시 나온다.
a == eval(repr(a))
좌항과 우항이 서로 같다. 시스템이 워킹할 수 있는 형태로 만드는 것이다.
8. 외부 라이브러리 다루기
크게 두가지 방법이 있는데, 첫번째 방법은 pycharm 패키지 매니저를 사용하는 방법이다.
파이참->파일->설정->프로젝트: fastcampus->python 인터프리터-> +버튼 누르기-> 원하는 패키지 검색 후 다운로드
하면 된다.
사실 일반적인 방법은, 2번째 방법인 pip를 사용하는 것이다.
pip install 패키지명
pip uninstall 패키지명
pip install 패키지명(==버젼)
pip install --upgrade 패키지명
pip list #설치된 패키지 확인
pip list --format=freeze > requirements.txt # 현재 가상환경에 설치된 패키지 정보 txt파일로 저장
pip install -r requirements.txt # requirements.txt에 저장된 패키지 정보 모든 것 다운받기.
conda env list
conda activate fastcampus
pip install pandas
pip install numpy
pip install scikit-learn
pip list --format=freeze > requirements.txt
conda deactivate
conda create -n test
conda activate test
pip install -r requirements.txt
하면 다 깔린다.
댓글남기기