Python의 조건부 할당 연산자
-
Ruby에서
||=
연산자의 의미 -
try...except
문을 사용하여 Python에서 Ruby의||=
조건부 할당 연산자 구현 -
local
및global
변수를 사용하여 Python에서 Ruby의||=
조건부 할당 연산자 구현
Python에는 Ruby의 ||=
연산자와 정확히 일치하는 것이 없습니다. 그러나 try...except
메서드와 로컬 및 전역 변수의 개념을 사용하여 Python에서 Ruby의 조건부 할당 연산자 ||=
를 에뮬레이트할 수 있습니다.
Ruby에서 ||=
연산자의 의미
x ||= y
이 연산자의 기본 의미는 변수 x
가 정의되지 않았거나 falsy
값인 경우 변수 y
의 값을 변수 x
에 할당하고, 그렇지 않으면 할당 작업이 수행되지 않습니다.
그러나 이 연산자는 +=
, -=
와 같은 다른 단순한 조건 연산자보다 훨씬 더 복잡하고 혼란스럽습니다. 변수가 정의되지 않은 것으로 나타날 때마다 콘솔에서 NameError
가 발생하기 때문입니다.
‘a+=b’는 ‘a=a+b’로 평가됩니다.
a||=b
는 a=a||b
처럼 보이지만 실제로는 a||a=b
처럼 작동합니다.
try...except
문을 사용하여 Python에서 Ruby의 ||=
조건부 할당 연산자 구현
오류를 포착하고 처리하기 위해 try...except
를 사용합니다. try except
블록이 실행될 때마다 처음에는 try
블록에 있는 코드가 실행됩니다. try
블록 내의 코드 블록이 성공적으로 실행되면 except
블록은 무시됩니다. 그렇지 않으면 except
블록 코드가 실행되고 오류가 처리됩니다. Ruby의 ||=
연산자는 Python의 try-catch
방법으로 대략 다음과 같이 번역할 수 있습니다.
try:
x
except NameError:
x = 10
여기에서 변수 x
가 정의되면 try
블록은 NameError
예외 없이 원활하게 실행됩니다. 따라서 할당 작업이 수행되지 않습니다. x
가 정의되지 않은 경우 try
블록은 NameError
를 생성한 다음 except
블록이 실행되고 변수 x
는 10
에 할당됩니다.
local
및 global
변수를 사용하여 Python에서 Ruby의 ||=
조건부 할당 연산자 구현
지역 변수의 범위는 특정 코드 범위 내로 제한되는 반면 전역 변수는 전체 코드 공간에 정의된 범위를 갖습니다.
특정 범위의 모든 로컬 변수는 해당 특정 범위의 locals
사전 키로 사용할 수 있습니다. 모든 전역 변수는 globals
사전의 키로 저장됩니다. locals
와 globals
사전을 사용하여 필요할 때마다 이러한 변수에 액세스할 수 있습니다.
변수가 사전에 존재하는지 확인하고 존재하지 않는 경우에만 값을 설정하여 Python에서 Ruby의 ||=
조건부 할당 연산자를 번역할 수 있습니다.
if x in locals().keys():
locals().get(x)
elif x in globals().keys():
globals().get(x)
else:
x = 10
여기서 변수 x
가 전역 또는 로컬 범위에 있으면 할당 작업을 수행하지 않습니다. 그렇지 않으면 x
의 값을 10
에 할당합니다. Ruby의 x||=10
과 유사합니다.