-
중급자를 위한 파이썬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