[python] 대입 표현식, 위치 전용 매개 변수

HyunDong Lee·2022년 5월 23일
0

python

목록 보기
6/6
post-thumbnail

대입 표현식 (바다코끼리 연산자)

공식 문서를 읽다가 좋은 표현식을 발견했다. 보통 len값으로 비교를 하거나 if문 내에서만 사용을 하는 변수가 있을 때, 우리는 변수 선언을 따로 하여 사용했다. 하지만 이 표현식을 사용하면 len()이나 특정 함수를 두 번 호출하지 않아도 된다.

n = len(arr) # arr 길이 10
if n > 5:
	print(f"The length of the arr is {}".format(n))

if (n := len(arr)) > 5:
	print(f"The length of the arr is {}".format(n))

다음과 같이 두번 호출하여 사용하지 않거나 한 줄을 줄여서 사용할 수 있는 장점이 있다. 또 while 문과 같이 조건이 참일 때 돌아가는 상황에서 바다코끼리 연산자는 빛을 발할 수 있다.

arr = [1, 2, 3, 4, 5, 0]
st = []
while (tmp := arr[i]) != 0:
	st.append(tmp)
    i += 1

좋은 예시가 생각이 나지는 않지만, 위와 같이 사용할 수 있다.
코드의 복잡성을 줄일 수 있어 가독성을 개선할 수 있어 자주 사용하면 좋을 거같다!

위치 전용 매개 변수

일부 함수 매개 변수를 위치적으로 지정해야하고 키워드 인자로 사용할 수 없도록 지시하는 새로운 함수 매개변수 문법 /가 등장했다.

# a와 b는 위치 전용, c, d는 위치나 키워드, e, f는 키워드 전용이어야 한다.
# *뒤는 무조건 키워드 전용, /뒤는 선택적이다!
def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

# 유효한 호출
print(f(10, 20, 30, d=40, e=50, f=60))

# 잘못된 호출
f(10, b=20, c=30, d=40, e=50, f=60)   # b cannot be a keyword argument
f(10, 20, 30, 40, 50, f=60)           # e must be a keyword argument

/의 왼쪽에 있는 매개변수는 가능한 키워드로 노출되지 않아서 매개변수 이름은 **kwargs에서 사용할 수 있다.

>>> def f(a, b, /, **kwargs):
...     print(a, b, kwargs)
...
>>> f(10, 20, a=1, b=2, c=3)         # a and b are used in two ways
10 20 {'a': 1, 'b': 2, 'c': 3}

출처1
출처2

0개의 댓글