a = a and b는 무엇인가요?


라이브러리를 통해서 공부를 하다가 알 수 없는 부분이 생겨서 질문 드립니다.

def exemple_function(version):
    self.version = version and int(version)

이라고 되어있었는데 조건문도 아니고 and문이 왜 저기에 나온건지 이해가 잘 되지 않습니다...

커맨드라인으로 잠깐 실험해 보았는데

A = 1 and 'b'
A
>>> 'b'

B = 1 and 2
B
>>> 2

이런식으로 뒤에 값이 할당되더군요... 그러면 self.version = int(version) 로 쓰면 될 듯한데 저렇게 and를 사용한 이유를 모르겠습니다.

왜 저렇게 쓰는지 알려주셨으면 합니다. 감사합니다.

  • 2018년 01월 04일에 작성됨

조회수 117


3 답변


단순히 생각할 땐 타입때문에 그럴 것 같습니다.

'1.1' 인 경우 int('1.1')은 오류입니다. 보통 버전은 정수로 표현하기 보단 float 형태가 많으므로 문자열로 입력되는 것을 방지하기 위함 같습니다.

  • 2018년 01월 05일에 작성됨


제가 파이썬은 모르지만 동작하는게 자바스크립트와 같네요.

자바스크립트에선 and 연산 시 두 변이 모두 true면 우측변을 반환합니다. 반대로 or 연산에선 두 변이 모두 true면 좌측변을 반환하죠.



파이썬의 and&는 우선 같다고 보시면 됩니다.

  • True and True = True
  • False and True = False
  • True and False = False
  • False and False = False
  • 1 and 1 = 1
  • 0 and 0 = 0
  • 0 and 1 = 0
  • 1 and 0 = 0

& 도 동일합니다.

  • True & True = True
  • False & True = False
  • True & False = False
  • False & False = False
  • 1 & 1 = 1
  • 0 & 0 = 0
  • 0 & 1 = 0
  • 1 & 0 = 0

그럼 and&의 차이점은 무엇일까요? 바로 &는 type까지 체크하는 것이 다릅니다.

  • 1 and 1.0 = 1
  • 1 & 1.0 = Type Error

version and int(version)는 왜 저렇게 했는지 이유를 알 수가 없군요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close