백엔드 개발 파이썬 튜토리얼 Python 및/또는 반환 값에 대한 심층 분석

Python 및/또는 반환 값에 대한 심층 분석

Nov 07, 2016 am 11:11 AM

Python에서는 예상대로 부울 논리를 수행하지만 부울 값을 반환하지 않고 실제로 비교하는 값 중 하나를 반환합니다.

1.

1

2

3

4

5

6

>>> 'a' and 'b'

'b'

>>> '' and 'b'

''

>>> 'a' and 'b' and 'c'

'c'

로그인 후 복사

부울 컨텍스트의 모든 값이 true인 경우 표현식의 값을 왼쪽에서 오른쪽으로 평가합니다. 마지막 값.

부울 컨텍스트의 값이 false인 경우 및 첫 번째 거짓 값을 반환합니다

2. or:

1

2

3

4

5

6

7

8

>>> 'a' or 'b'

'a'

>>> '' or 'b'

'b'

>>> '' or [] or {}

{}

>>> 0 or 'a' or 'c'

'a'

로그인 후 복사

부울 값에서 or를 사용하는 경우 ​​는 and와 마찬가지로 맥락에서 왼쪽에서 오른쪽으로 평가됩니다. 값이 true이거나 해당 값을 즉시 반환하는 경우

모든 값이 false이거나 마지막 false 값을 반환하는 경우

또는은 항상 부울 컨텍스트에서 표현식 평가를 수행합니다. 첫 번째 참 값이 발견되면 나머지 비교 값은 무시됩니다.

3. and-or:

and-or 앞의 두 구문을 결합하여 추론할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

>>> a='first'

>>> b='second'

>>> 1 and a or b

'first'

>>> (1 and a) or b

'first'

>>> 0 and a or b

'second'

>>> (0 and a) or b

'second'

>>>

로그인 후 복사

이 구문은 C 언어의 bool ? a : b 표현식과 유사합니다. 전체 표현식은 왼쪽에서 오른쪽으로 평가되므로 and 표현식이 먼저 평가됩니다. 1과 'first'는 'first'로 평가되고, 'first' 또는 'second'는 'first'로 평가됩니다.

0과 'first'는 False로 평가되고, 0 또는 'second'는 'second'로 평가됩니다.

and-or는 주로 삼항 연산자 bool?a:b를 모방하는 데 사용됩니다. 즉, bool 표현식이 참이면 a를 취하고 그렇지 않으면 b를 취합니다.

and-or 트릭, bool 및 a 또는 b 표현식은 a가 부울 컨텍스트에서 false로 평가될 때 C 언어 표현식 bool ?


4. and-or의 안전한 사용

1

2

3

4

5

6

7

>>> a=""

>>> b="second"

>>> (1 and [a] or [b])

['']

>>> (1 and [a] or [b])[0]

''

>>>

로그인 후 복사

[a]는 비어 있지 않은 목록이므로 결코 false가 아닙니다. a가 0, '' 또는 기타 거짓 값이더라도 목록 [a]에는 요소가 하나 있으므로 참입니다.

책임 있는 프로그래머는 and-or 기술을 함수로 캡슐화해야 합니다.

1

2

3

def choose(bool,a,b):

    return (bool and [a] or [b])[0]

print  choose(1,'','second')    #''

로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

DeepSeek Xiaomi를 다운로드하는 방법 DeepSeek Xiaomi를 다운로드하는 방법 Feb 19, 2025 pm 05:27 PM

DeepSeek Xiaomi를 다운로드하는 방법

템플릿의 장점과 단점은 무엇입니까? 템플릿의 장점과 단점은 무엇입니까? May 08, 2024 pm 03:51 PM

템플릿의 장점과 단점은 무엇입니까?

Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표 Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표 Jul 01, 2024 am 07:22 AM

Google AI, 개발자를 위한 Gemini 1.5 Pro 및 Gemma 2 발표

단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다. 단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다. May 06, 2024 pm 03:52 PM

단 250달러에 Hugging Face의 기술 디렉터가 Llama 3를 단계별로 미세 조정하는 방법을 알려드립니다.

golang 함수 디버깅 및 분석에 대한 완벽한 가이드 golang 함수 디버깅 및 분석에 대한 완벽한 가이드 May 06, 2024 pm 02:00 PM

golang 함수 디버깅 및 분석에 대한 완벽한 가이드

여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유 여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유 May 06, 2024 pm 04:43 PM

여러 .NET 오픈 소스 AI 및 LLM 관련 프로젝트 프레임워크 공유

당신은 그에게 Deepseek에게 어떻게 물어 봐요 당신은 그에게 Deepseek에게 어떻게 물어 봐요 Feb 19, 2025 pm 04:42 PM

당신은 그에게 Deepseek에게 어떻게 물어 봐요

평가 기능을 저장하는 방법 평가 기능을 저장하는 방법 May 07, 2024 am 01:09 AM

평가 기능을 저장하는 방법

See all articles