Backend/Python 14

pyenv는 어떤 방식으로 파이썬 버전을 관리할까

python 또는 pip 명령어가 실행 파일을 찾는 방법 python 또는 pip 명령어를 실행할 때, 운영 체제가 해당 명령의 실행 파일을 찾기 위해 환경변수 PATH의 값을 참조한다. /usr/local/bin:/usr/bin:/bin 환경변수 PATH는 콜론(:)으로 각 디렉토리 경로를 구분한다. 실행 파일을 찾기 위해 가장 왼쪽에 존재하는 디렉토리 경로부터 명령어에 대응하는 실행파일이 있는지 확인한다. 이 경우에는 /usr/local/bin 디렉토리에서 실행 파일을 찾고, /usr/bin, /bin 디렉토리 순서로 해당하는 실행 파일을 발견할 때까지 탐색한다. shim을 통한 명령어 가로채기 pyenv는 환경변수 PATH에 shims 디렉토리를 가장 왼쪽에 추가한다. $(pyenv root)/sh..

Backend/Python 2023.12.28

pyenv와 pyenv-virtualenv로 파이썬 버전 관리하기

프로젝트 별로 파이썬 버전을 다르게 사용해야 할 때, pyenv를 사용하여 파이썬 버전들을 쉽게 관리할 수 있다. pyenv-virtualenv는 pyenv 플러그인으로, 파이썬 가상환경을 관리해 준다. Mac OS와 Z Shell 기준으로 pyenv를 설치하고, 사용하는 방법에 대해 알아보자. pyenv 설치 $ brew install pyenv pyenv 설치 후 쉘 설정 파일(~/.zshrc) 수정해야 한다!! export PATH="$HOME/.pyenv/bin:$PATH" # pyenv가 설치되어 있다면, 현재 쉘에 대한 pyenv 초기화 스크립트를 실행 if command -v pyenv 1>/dev/null 2>&1; then eval "$(pyenv init -)" fi # pyenv-vi..

Backend/Python 2023.12.27

코드 스타일 통일을 위해 Black 적용하기

팀원들과 파이썬 프로젝트를 진행하면서 코드의 스타일과 포맷을 일관성 있게 맞춰야겠다는 필요성을 느끼게 되었다. 파이썬에는 PEP8이라는 파이썬 코드의 공식 스타일 가이드가 존재한다. PEP 8 – Style Guide for Python Code | peps.python.org PEP 8 – Style Guide for Python Code Author: Guido van Rossum , Barry Warsaw , Nick Coghlan Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013 Table of Contents This document gives coding conventions for t..

Backend/Python 2023.04.26

[Python] File Handling

파이썬에서 파일을 다루는 방법에 관해서 알아보자. with 자원을 획득하고, 사용한 뒤, 반납할 때 주로 사용한다. with open('myFile.txt', 'r') as my_file: contents = my_file.read() print(contents) with 블록을 나가면서 자동으로 자원을 반납하기 때문에 파일 처리 시 close() 함수를 사용하지 않아도 된다. readlines 함수 파일을 한 줄씩 읽어 list 타입으로 반환한다. with open('myFile.txt', 'r') as my_file: content_list = my_file.readlines() print(type(content_list)) # 출력: list readline 함수 실행할 때마다 한 줄씩 반환한다. ..

Backend/Python 2023.03.08

[Python] Exception Handling

파이썬에서 예외를 처리하는 방법에 대해서 알아보자. try ~ except ~ else ~ finally try: 예외가 발생할 수 있는 코드 except as e: 예외 발생 시 동작할 코드 else: 예외가 발생하지 않을 때 동작할 코드 finally: 예외 발생 여부와 상관없이 동작할 코드 finally 블록의 경우, 항상 실행되는 것이 아니라, finally와 연결된 try 블록으로 진입하게 되면, 반드시 실행된다. DB나 파일 처리 시 finally 블록에서 DB 또는 파일 연결을 끊어줘야 한다. raise 예외를 발생시킨다. raise (예외정보) While True: value = input("정수 값을 입력해주세요") for digit in value: if digit not in "012..

Backend/Python 2023.03.08

[Python] 모듈과 패키지

외부의 파일로부터 함수, 변수, 클래스를 가져다 써야할 때 사용되는 파이썬의 모듈과 패키지에 대해서 알아보자. 모듈 파이썬에서 모듈이란 .py 파일을 의미한다. module은 import문을 사용해서 호출할 수 있다. 모듈을 직접 import하는 경우 import (모듈명) # 모듈의 전체 코드 호출 import (모듈명) as (별칭) # 모듈의 별칭 설정 모듈명.함수명() # 모듈 내 함수를 호출할 때 모듈명을 명시해야 한다. 모듈의 함수 또는 클래스의 범위를 지정하여 import하는 경우 from (모듈명) import (특정 함수 / 클래스) # 모듈의 특정 함수 또는 클래스만 호출 from (모듈명) import * # 모듈에서 모든 함수 또는 클래스 호 함수명() # 모듈 내 함수를 호출할 때..

Backend/Python 2023.03.08

[Python] decorator

파이썬에서 함수에 추가 기능을 구현할 때 사용되는 decorator에 대해서 알아보자. 매개변수가 없는 함수의 데코레이터 def trace(func): # 기능을 추가할 함수를 매개변수로 받음 def wrapper(): # 호출할 함수를 감싸는 함수 print(func.__name__, "함수 시작") func() # 매개변수로 받은 함수 호출 print(func.__name__, "함수 종료") return wrapper # 데코레이터 @trace def hello(): print("hello, world!") hello() # trace(hello)와 같은 역할 # 출력: # hello 함수 시작 # hello, world! # hello 함수 종료 매개변수가 있는 함수의 데코레이터 def trace..

Backend/Python 2023.03.07

[Python] closure

파이썬의 closure에 대해 알아보자. def print_msg(msg): def printer(): # inner function print(msg) return printer # 함수를 return, 괄호 붙이면 안됨 another = print_msg("Hello, Python") another() # 출력: Hello, Python 함수 printer의 입장에서 지역 변수 msg는 자신의 외부에 있는 변수이다. 그러나, 위 코드와 같이 inner function (위 코드에서의 printer 함수)을 반환하게 되면 print_msg 함수가 종료되더라도 msg의 값이 유지된 채, printer 함수가 호출되면 그 값을 꺼내서 사용한다.

Backend/Python 2023.03.07

[Python] 파이썬 class의 특징

다른 언어들과 구별되는 파이썬의 class 생성 방식을 알아보자. 생성자 생성자는 __init__ method에 정의한다. class 내 모든 method의 첫번째 파라미터는 self이다. class Animal: def __init__(self, name): self.name = name 상속 class 선언 시 괄호 안에 상속받을 class를 넣어 상속받는다. class Cat(Animal): # Cat class는 Animal class로부터 상속받는다. ... 매직 메소드 under score 두개 (__)를 붙인 built-in 함수를 정의하여, class가 처리할 연산을 손쉽게 정의할 수 있다. https://corikachu.github.io/articles/python/python-magi..

Backend/Python 2023.03.07

[Python] asterisk

파이썬에서 asterisk 기호 (*)는 곱셈, 제곱을 하는 연산자 외에도 다양한 기능들이 있다. asterisk 기호가 한 개 쓰일 때와 두 개 쓰일 때로 나누어서 살펴보자. * 파라미터에 *를 붙여 입력한 개수만큼 입력받을 수 있는 가변인자로 설정할 수 있다. def asterisk_test(*args): # args는 튜플로 저장된다. return sum(args) print(asterisk_test(1,2,3,4,5)) # 출력: 15 iterable한 자료형과 함께 사용하면 unpacking을 하는 역할로 쓰인다. def asterisk_test(*args): print(args) print(*args) asterisk_test(1,2,3,4,5) # 출력: # (1, 2, 3, 4, 5) # ..

Backend/Python 2023.03.07