티스토리 뷰

vscode에서의 파이썬

  • 가상환경이란?

파이썬에서는 pip라는 패키지 인스톨러를 사용해 패키지들을 설치하고 관리한다 기본적으로 pip를 사용해 설치하는 패키지들을 특정 프로젝트에 관계 없이 파이썬을 실행하는 모든 환경에 설치되게 된다 만약 한 개의 프로젝트만 다룬다면 크게 문제되진 않지만, 2개 이상의 프로젝트를 개발하게 될 경우 버전 등의 호환성 문제가 발생할 수 있기때문에 이 때 python 가상 환경을 활용하면 각 프로젝트마다 독립적인 환경을 구성하여 호환성 문제를 최소화 시킬 수 있다

 

  • 가상환경 구축

터미널에서 python -m venv venv 명령어를 통해 가상 환경을 구축할 수 있다 해당 명령어를 실행시키면 venv 라는 이름의 폴더가 생성되고 이후 가상 환경에서 설치하는 패키지들은 해당 폴더에 설치된다

 

venv 폴더를 생성했다고 가상 환경에서 파이썬을 실행시킬 수 있는 것은 아니다 가상 환경을 활성화 하기 위해서는, vanv 폴더 내에 있는 activate 파일을 실행시켜야한다 아래 명령어를 통해 가상 환경을 활성화 해야한다

windows : venv\\Scripts\\activate

mac / linux : source venv/bin/activate

 

가상 환경이 활성화 되면 터미널 좌측에 (venv)가 추가된 것을 확인할 수 있다

 

  • 코드 컨벤션

파이썬에서는 네이밍 컨벤션으로 변수 / 함수를 네이밍할 때는 Snake 표기법을, Class를 네이밍할 때는 Pascal 표기법을 사용한다

네이밍 컨벤션에는 대표적으로 Pascal, Snake, Camel 표기법이 존재한다 예를 들어 Python is very good 이라는 문장이 있을 때, 아래와 같이 사용한다

 

  1. Pascal : PythonIsVeryGood / 각 단어를 대문자로 구별
  2. Camel : pythonIsVeryGood / Pascal과 동일하지만, 첫 문자가 소문자로 시작함 모양이 쌍봉낙타와 비슷하게 생겼다고 해서 지어진 이름
  3. Snake : python_is_very_good / 각 단어를 언더바( _ )로 구분 모양이 뱀과 비슷하게 생겼다고 해서 지어진 이름

클래스, 함수, 변수 등을 네이밍할 때는 이름만 보고 해당 코드가 어떤걸 의미하는지 추측할 수 있어야한다 

  1. PIE = 3.14 상수를 표현할 때는 예외적으로 모든 문자를 대문자로 표현함
  2. numbers = [1,2,3,4] list를 표기할 때는 복수로 표현한다 혹은 number_list와 같이 표현할 수도 있다
    • for number in numbers: 반복문 사용 시 가독성을 늘릴 수 있다
  3. def add(a, b): return a + b 함수를 네이밍할 때는 해당 함수가 어떤 역할을 하는지 표현해야 한다

ex) 코드예시

# django rest framework의 serializer 코드 일부

class ModelSerializer(Serializer):
    def validate(self, attrs):
        """
        입력 된 데이터의 유효성을 검증하는 메소드입니다.

        Args:
            attrs : 검증할 데이터(attribute)입니다.
        """

    def create(self, validated_data):
        """
        유효성 검증(validate) 후 instance를 생성할 때 사용되는 메소드입니다.

        Args:
            validated_data : validate의 attrs에서 검증 된 데이터들이 담깁니다.
        """

    def update(self, instance, validated_data):
        """
        생성 된 instance를 수정할 때 사용되는 메소드입니다.

        Args:
            instance : 수정 할 대상입니다.
            validated_data : validate의 attrs에서 검증 된 데이터들이 담깁니다.
        """

 

  • 변수 유효 범위

python을 포함한 대부분의 언어에는 "변수 유효 범위"라는 개념이 있다 변수가 선언된 위치나 키워드에 따라 변수를 사용할 수 있는 범위가 달라지게 되는데, 이를 변수 유효 범위 혹은 variable scope라고 부른다 파이썬에서 변수는 유효 범위에 따라 지역 변수(local variable)전역 변수(global variable)로 나뉘게 된다 지역 변수는 함수 내부에서 선언되며 다른 함수에 영향을 끼치지 않는다 반대로 전역 변수는 함수 밖에서 선언되며 어디서든 접근할 수 있다 지역 변수로 선언된 변수는 global 키워드를 사용해 전역 변수로 재선언할 수 있다

 

지역변수

def func1():
    number = 10 # 함수 내에서 number라는 지역 변수를 선언
    
def func2():
    print(number) # func1에서 생성된 지역 변수는 funt2에서 접근할 수 없다.
    
func1()
func2()

"""
Traceback (most recent call last):
  File "sample.py", line 8, in <module>
    func2()
  File "sample.py", line 5, in function2
    print(number)
NameError: name 'number' is not defined
"""

 

전역변수

number = 10 # 함수 밖에서 number라는 전역 변수 생성

def func():
    print(number) # 전역 변수는 자유롭게 접근할 수 있다.
    
func() # 함수를 실행하면 10이 정상적으로 출력된다.

전역 변수 사용 시 주의할 점

함수 내에서 전역 변수의 값을 바꾸려 할 경우

number = 10

def func():
    number = 5 # 전역 변수의 값이 바뀌는 것이 아닌, 지역 변수로 다시 선언됩니다.
    
func()

# 함수 내에서 재할당 된 지역 변수는 전역 변수에 영향을 끼치지 않습니다.
print(number) # 10

 

전역 변수 사용과 지역 변수 할당을 같이 하는 경우

number = 10

# 전역 변수인 10을 출력하고 지역 변수로 다시 선언하는 코드 작성
def func():
    print(number)
    number = 5

# 실행시켜 보면 에러가 발생한다.
func()
"""
Traceback (most recent call last):
  File "sample.py", line 7, in <module>
    func()
  File "sample.py", line 4, in func
    print(number)
UnboundLocalError: local variable 'number' referenced before assignment
"""

 

에러가 발생하는 이유

함수 내부에서 전역 변수와 동일한 이름으로 지역 변수를 할당할 경우 함수에서는 해당 변수를 지역 변수로 간주하게 된다 때문에 print(number)에서는 number라는 지역 변수가 선언되기 전 출력하려 했기 때문에 이와 같은 에러가 발생한다

 

함수 내에서 전역 변수의 값을 바꾸려면?

global 키워드를 사용해 함수 내에서 전역 변수를 자유롭게 다시 할당할 수 있다

number = 10

def func():
    global number # 함수에서 number 변수를 다시 할당할 수 있도록 해줍니다.
    number = 5 # global 키워드를 사용했기 때문에 전역 변수의 값이 변경됩니다.
    
func()

print(number) # 5

 

전역 변수를 권장하지 않는 이유

파이썬을 포함한 많은 프로그래밍 언어에서 전역 변수를 남용하는 것은 권장하지 않음 코드가 길어질수록 전역 변수로 선언 된 값은 어디서 값이 변했는지 추적하기 어렵고, 문제가 생겼을 때 디버깅을 하기 어려워 지기 때문 이와 같은 이유로 PIE = 3.14와 같은 전역 상수를 선언하는 것을 제외하면 전역 변수를 사용하지 않는 것이 좋은 코드를 만드는 방법

 

  • 오늘의 회고

어렵다 햄들다 진짜 전문분야라는게 뼛속까지 느껴진다 솔직히 뭔소린지 이해를 거의 못했다 날씨도 많이 꿀꿀하다 끝났을때의 행복한 모습만을 생각하며 그냥저냥 이런 날도 있어야 나중에 고생한 보람이 더욱 생기겠지 그치만 햄들다

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함