내가 알던 게 사실 아니었다면

Jean·2022년 5월 4일
0

이딴게...흥미..?

목록 보기
1/1
post-thumbnail

❗Warning : 본 내용은 파이썬을 주제로 설명한 글이기에 타 언어와 다를 수 있습니다.

코드를 작성하다보면 알고 있던 개념을 잘 사용해서 쓰곤한다.

뭐 공부한 내용이고 실제로 작성한 코드를 돌려보면 문제없이 잘 돌아가면서도
그 개념을 관심가져 낱낱이 뜯어보면 사실은 조금 혹은 많이 다를 수도 있다.

혹자가 이 글을 보고 '에이 그것도 몰랐어? 공부 대충했네' 라고 한다면 사실 할 말이 없다.
그럼에도 누군가에겐 짧막한 도움이 될 수도 있기에. 또 필자 본인에게 팍팍한 문제풀이 속 코딩을 하게끔 만들어주는 재미요소이기에 살짝 적어본다.

😠 그래서 할 말이 뭔데

우리가 흔히 쓰는 연산자들이 있다. 그 중 이 글에서 서술할 연산자는 논리 연산자 중 하나인 and 연산자이다.
if 조건문에서 참인지 거짓인지를 판단할 때 자주 사용되는 조건문이기도 하고 그 개념 또한 어렵지 않아 쉽고 자주 사용하는 연산자이다.

그럼 여기서 간단하게 몇 가지 조건에 대한 결과를 예상해보자.

  1. True and False
  2. False and True
  3. 0 and True
  4. True and 1
  5. 1 and 2
  6. 2 and 1

모두가 어렵지않게 풀어냈으리라 생각한다. 그럼 답과 한번 비교해보자

  1. False
  2. False
  3. 0
  4. 1
  5. 2
  6. 1

여기서 모두 맞췄다면 즉시 이 글을 나가도된다...이미 당신은 머단한 사람
하지만 만약 틀린 부분이 있다면 이 글을 조금 읽어 새로 알게 된 사실에 필자와 동일하게 흥미가 반짝! 하고 떠오를 수도 있고 좀 흥미로운 지식이 될 수도 있으리라 생각한다.

🤨 왜 True가 아니지..?

대개 위 문제를 풀고 틀렸거나 의아했던 부분은 4~6번이었을 것이다.

파이썬에서는 0을 제외한 음수, 양수 모두가 True이기 때문에
특히 5번과 6번 문제에서는 쉽게 결과값 또한 bool 타입의 연산자로 나올 것이라 생각했을 것이다.

하지만 파이썬에서 and 연산자는 결과값이 bool 타입에 국한되지 않는다.(물론 or 연산자도 동일)

5번 문제를 보자.
앞서 0을 제외한 음수, 양수 모두가 True값을 갖는다고 서술했다.
그렇다면 1 and 2 = True and True 값으로 치환해도 조건을 판단하는 데에 있어서는 크게 문제되지 않는다.

하지만 조건 판단이 아닌 값의 반환 타입은 파이썬의 특징에 따라 정해진다.
값의 반환 타입을 정하는 건 아래와 같이 진행된다.

  1. 가장 먼저 and 연산자 좌측 값의 True, False 여부를 판단한다.
  2. 해당 값이 만약 거짓이라면 즉시, 해당 값을 반환한다. ex) 0 and 1 => 0
  3. 앞의 값이 참이라면 and 연산자 우측 값의 True, False 여부를 판단한다.
  4. 해당 값이 만약 거짓이라면 즉시, 해당 값을 반환한다. ex) 1 and 0 => 0
    만약 두 값 모두 참이라면 우측 항의 값을 반환한다. ex)1 and 2 => 2, 2 and 1 => 1

이에 대한 내용은 파이썬 공식 리퍼런스 문서에도 서술되어 있다.
간단하게 정리하자면 False일 경우, 해당 값을 즉시 반환. 두 값 모두 참일 경우, 뒤의 값을 반환한다고 볼 수 있다.


💻 코드에서 뭔가 의아했다면

이 글의 내용은 간단하게 and 조건을 자주 혹은 마구잡이로 사용하다가
뭔가 의아했다면 빠르게 찾을 수 있는 내용의 토막 지식 정도이다.

그 마저도 이론을 빠삭하게 공부했다면 이미 알 수 있는 내용에 불과하다.

하지만 그동안 몰랐다면 이제 알았고, 알았으니 코드를 작성할 때 예상할 수 있는 결과가 더 탄탄해졌다.
몰랐다고 좌절해있기 보다는 알게되어 새롭다는 흥미를 갖고 공부를 접해보는 건 어떨까?

profile
목표를 찾으며 공부하는 코린이🤔

0개의 댓글