몰라도 괜찮지만 알아도 괜찮은 몇가지 문법/표현[0]
파이썬을 쓰다보면 영어 문장 읽듯 그냥 편하게 쓸 수 있다는 점이 참 좋다.
그런데 가끔은 그렇게 일일이 말하듯 쓰기 보다는 간결하게 쓰고 싶은 생각이 드는데,
그럴 때 사용하면 좋을 몇가지 문법/표현을 소개한다.
1. Conditional Expression (조건 표현, 삼항 연산자)
자바스크립트에서 삼항 연산자는 아래와 같이 심플하게 구현된다.
let age = 19
let status = age >= 18 ? "Adult" : "Minor"
파이썬에서는 아래와 같이 가능한데, JS보다는 문장으로 읽힌다.
age = 19
status = "Adult" if age >= 18 else "Minor"
읽어보면, status는 Adult이다. 만약 age가 18보다 크거나 같다면. 아니라면 Minor고.
2. Walrus Operator (Assignment Expression, 대입 표현식, 바다코끼리 연산자)
python 3.8이상부터 사용할 수 있는데. 이름부터 귀엽다. 작명센스가 👍
표현식을 변수화 한다고 정리할 수 있을까?
조건문이나 반복문을 시작하기 전에 변수를 만들어주는 것을 간소화 할 수 있다.
이렇게 짜던 것을
number = 1
while number:
# do something with command
number = int(input("Enter command (0 to quit): "))
이렇게 바꿀 수 있다.
while (number := int(input("Enter command (0 to quit): "))) != 0:
# do something with command
다양한 예시와 자세한 설명은 여기서 자세히 볼 수 있다.
3. all(), any()
all과 any는 알면 유용하게 쓸 수 있는 python built-in 함수이다.
all은 iterable한 객체를 인자로 받아서, 모든 요소가 True일 때 True를 반환한다. 즉, 하나라도 False이면 False를 반환.
여기서 iterable한 객체를 인자로 받는다는 점에서 표현식(expression)을 반복할 수 있어도 가능하다.
예를 들어, 어떤 리스트가 모두 짝수인지를 확인하고 싶다면,
nums = [2,4,6,8,10]
all(num % 2 == 0 for num in nums) # True를 반환
그대로 읽어보면, "모든 num을 2로 나눈 나머지가 0이 맞니? num은 nums에 있는 것들이고. " 정도로 읽으면 된다.
any는 하나라도 True면 True를 반환한다. all도 그렇지만, any도 단어 뜻 그대로 사용된다.
nums = [1,3,5,6,7,9]
any(num % 2 == 0 for num in nums) # True를 반환
any도 읽어보면, "하나라도 num을 2로 나눈 나머지가 0이 맞니? num은 nums에 있는 것들이고." 정도.