ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 중급자를 위한 파이썬python 문법
    LANGUAGE/Python, Django 2024. 12. 2. 18:31

    1. 중급자를 위한 업데이트 문법, 기본 문법 체크

     

    Python 3.7 :

     

    • dataclasses : 이 모듈은 @dataclass 데코레이터를 제공하여 클래스를 간결하게 정의할 수 있게 한다. 매직 메서드  __init__, __repr__, __eq__ 등의 특별한 메서드를 자동으로 추가한다. 아래의 User1 클래스와 User2 클래스는 동일하다.

    더보기
    # id, name, email이 각각 3번씩 반복된다. 이런 현상을 보일러 플레이트(boiler plate)라고 한다.
    # print를 해도 필드값이 보이지 않아 불편하다.
    class User1:
        def __init__(self, id, name, email):
            self.id = id
            self.name = name
            self.email = email
            
        def __repr__(self):
            return (f"{self.__class__.__qualname__}{self.id, self.name, self.email}")
    
    user1 = User1(123, 'edward', 'edward@gmail')
    print(user1)
    
    
    from dataclasses import dataclass
    
    @dataclass
    class User2:
        id: int
        name: str
        email: str
        
    user2 = User2(123, 'edward', 'edward@gamil')
    print(user2)

     

     

    Python 3.8 :

     

    • 왈러스 연산자(:=) : 왈러스 연산자는 할당 표현식(assignment expressions)를 사용하게 한다. 이 연산자를 사용하면 표현식을 평가하고 그 결과를 변수에 할당할 수 있다. 주로 while loop, if문 같은 곳에서 사용된다.

     

    주의사항

    1) 왈러스 연산자(:=)는 할당 연산자(=)와 비슷하지만, 활용 범위와 용도가 다르므로 주의해야 한다.

    2) 코드의 가독성을 위해 복잡한 표현식 내에서 왈러스 연산자의 남용을 피해야 한다. 복잡한 한줄 코드보다는 여러 줄에 걸친 명확한 코드가 유지보수와 이해에 더 좋을 수 있다.

     

    - 기본 사용법 예시

    더보기
    x = (n := 10) * 2
    print(x) # ouput : 20
    print(n) # ouput : 10
    
    
    def add(x, y):
        return x + y
    
    if (plus := add(3,5)) == 8:
        print(plus)

     

    - while loop에서의 활용

    더보기
    # 왈러스 연산자를 사용하지 않은 코드
    n = 0
    while n < 10:
        print(n)
        n += 1
        
    # 왈러스 연산자를 사용한 코드    
    m = 0
    while (m := m + 1) < 10:
        print(m)
    # 왈러스 연산자를 사용하지 않은 코드
    import random 
    
    while True:
        x = random.randint(0, 10)
        if x == 7:
            break
        print(x)
        
    # 왈러스 연산자를 사용한 코드    
    import random
    
    while (x := random.randint(0, 10)) != 7:
        print(x)

     

    - if문 예시

    더보기
    def sigma(n):
        count = 0
        result = 0
        while (count := count + 1) < n + 1:
            result += count
        return result
    
    if (plus := sigma(100)) == 5050:
        print("5050이 출력되었습니다.")
    else:
        print("1부터 정수 형태로 입력이 가능합니다.")
    
    print(plus + 1000)

     

     

    Python 3.9 :

     

    • 딕셔너리 결합 연산자 : 딕셔너리의 병합과 업데이트를 위한 새로운 연산자 '|'와 '|='가 추가되었다.

    이전에는 x와 y를 병합하려면 x.update(y) 사용했는데, 이젠 그럴 필요 없다. update를 사용하면 x의 값을 변경했는데 '|' 연산자를 통해 다른 변수에 할당할 수 있다. 

    x = {"key1" : "value1"}
    y = {"key2" : "value2"}
    z = x | y
    print(z)

     

     

     

    2. 고급 데이터 구조

     

    2.1 컴프리헨션 (comprehension) :

    파이썬의 컴프리헨션 문법은 기존 시퀀스, 이터러블, 또는 다른 표현식들로부터 새로운 시퀀스를 생성하는 간결하고 가독성 있는 방법이다.

    파이썬에선 몇 가지 타입의 컴프리헨션을 지원한다 : 리스트, 딕셔너리, 세트, 그리고 제너레이터 컴프리헨션.

     

    ** 컴프리헨션 문법은 가독성을 위해 이중 fot문 등을 사용하지 않도록 권고한다.

     

     list comprehension : 가장 일반적으로 사용되며, 대괄호( [] ) 사이에 표현식과 for문을 넣어 리스트를 생성한다.

    더보기
    squares = [x**2 for x in range(10)] # 0부터 9까지의 제곱 리스트 생성
    even_squares = [x**2 for x in range(10) if x % 2 == 0] # 0부터 9까지의 짝수의 제곱 리스트 생성

     

     ditionary comprehension : 중괄호( {} ) 안에 for문과 선택적 if문을 사용하여 딕셔너리를 생성한다. 표현식 부분에서 key: value 형태를 사용한다.

    더보기
    squars_dict = {x: x**2 for x in range(5)} # 0부터 4까지의 수를 키로, 키의 제곱을 값으로 하는 딕셔너리 생성
    
    books = ['python', 'javascript', 'html/css']
    book_dict = {book: idx for idx, book in enumerate(books)}

     

     generator comprehension : 소괄호( () )안에 for문과 선택적 if문을 사용하여 제너레이터 객체를 생성한다. 제너레이터는 반복을 위한 이터러블이지만, 모든 값을 메모리에 저장하지 않고 필요할 때마다 생성한다.

    더보기
    gen = (i for i in range(2, 10000000000, 2))
    
    for i, j in zip(range(10), gen):
        print(i, j)



    'LANGUAGE > Python, Django' 카테고리의 다른 글

    python - generator, decorator  (0) 2024.12.03
    python - iterator 이터레이터  (0) 2024.12.03
    파이썬 객체지향 프로그래밍  (0) 2024.12.03
    파이썬 함수, 메서드  (0) 2024.12.03
    python 도움되는 메서드들  (0) 2024.12.02
Designed by Tistory.