検索
ホームページバックエンド開発Python チュートリアルPython三項計算機の使い方と短絡論理手法の紹介

今日他の人のコードを見ていてこんな書き方を見つけて、踏み込みやすい落とし穴だと感じたので

短絡ロジック

をメモしました。

Pythonで論理演算を行う際にデフォルトで使用される ショートサーキットロジックと呼ばれる演算ルールです。

print True and 1
# 1
print True or 1
# True
print False and 1
# False
print False or 1
# 1

のコードを直接見ると、それがわかります。 全体の計算結果はブール値である必要はありません。上記の式のさまざまな結果は、Python で簡単に言うと、短絡ロジックです。式全体が True か False かを判断すると、後続の計算は実行されません。これは、ロジックが短絡され、後続の式が無視されることを意味します。たとえば、True または 1の結果です。 > は True です。 かは関係ありません。その後に値がある場合、式全体の結果は True でなければなりません。そのため、Python が True を認識すると、 を実行し、or を参照すると、次の 1 は表示されず、1 は短絡され、True が返されます。 についても同様です。 >False と 1Falseand が表示されます。式全体の結果は False でなければなりません。したがって、1 は短絡され、False が返されます

同様に、False または 1 code> は、<code>False と or では式全体の結果を判断できません。式全体が True か False かは、or によって決まります。そのため、Python は式全体を読み取る必要があります。なので、1 が返されます。True or 1的结果为True就是因为不管or后面是任何值, 整个式子的结果都必定是True, 所以Python看到True, 看到or, 后面的1就不看了, 1被短路了, 返回了True; 同样的False and 1也是一样, 看到False然后是and不管后面是什么, 整个式子的结果必定是False, 所以1被短路了, 返回False.

相应的, 为什么False or 1会返回1, 就是因为Falseor判断不了式子的结果, 整个式子是True还是False, 是由or后面的值来决定的, 所以Python要把整个式子看完, 所以返回1.

明白了什么是短路逻辑之后, 我们看一看三目运算符

三目运算符

三目运算符, 又叫三元运算符. 熟悉Java的同学可能会知道, 它的形式是这样的b?x:y, 对于这个表达式来说, 如果条件bTrue, 那表达式的结果就是x, 如果bFalse, 那表达式的结果就是y. 这是一种很方便的写法, 比if语句简洁很多.

但Python中早期没有类似写法的三目运算符, 所以就出现了一种利用短路逻辑, 用andor来模拟三目运算符的写法, 下面我们看代码

A = X and &#39;table&#39; or False

这句代码就是在利用短路逻辑模拟三目运算符, 当XTrue的时候, A会被赋值为'table', 当XFlase的时候, A会被赋值为False;

乍一看好像很不错, 但这种写法却有个坑, 我们看这句代码

True and 0 or 1

如果我们把刚才的写法当三目运算符来使用, 那么条件语句是True, 表达式应该返回0才是我们期望的结果, 但实际上这个表达式会返回1; 因为True and 0的值为True, 整个表达式的值是由or之后的值来决定的, 所以Python会对后面的值做判断, 导致返回了1, 这就是为什么and...or这个写法有坑的原因

正确写法

如果想在Python中使用三目运算符, 可以使用if...<a href="http://www.php.cn/wiki/111.html" target="_blank">else</a>写法, 具体看代码

# <为真时的结果> if <判定条件> else <为假时的结果>0 if True else 1

if...else的写法, 结果就会跟我们期望的相同, 当条件为True时, 返回前面的值, 条件为False

短絡ロジックとは何かを理解した後、三項演算子を見てみましょう。 🎜🎜🎜三項演算子🎜🎜 三項演算子。学生によく知られた三項演算子 🎜 シンボルとも呼ばれます。 Java では、この式の形式が b?x:y のようなものであることを認識している可能性があります。たとえば、条件 bTrue の場合、式の結果は x で、bFalse の場合、式の結果は y になります。これは、if よりも優れた非常に便利な記述方法です🎜ステートメントははるかに単純です。🎜🎜しかし、 Python の初期には、同様の三項演算子がなかったため、and を使用する短絡ロジックを使用する方法があり、or は次の記述をシミュレートするために使用されます。以下のコードを見てみましょう🎜rrreee🎜 このコードは、XTrue の場合、AXFlase の場合、 /code> は 'table' に割り当てられます。 上記の書き方を三項演算子として使用すると、次のようになります。条件文は True であり、式は期待される結果である 0 を返すはずですが、実際にはこの式は 1 を返します。 True および 0 の値は True であるため、式全体の値は によって決定されます。または はその後の値によって決定されます。 Python はその後の値を判断して 1 を返します。これが、and...or の書き方が難しい理由です。理由🎜🎜正しい書き方🎜🎜。 Python で三項演算子を使用したい場合は、if...<a href="http://www.php.cn/wiki/111.html" target="_blank">else を使用できます🎜 </a>if...else を使用してコード 🎜rrreee🎜 を見てください。条件が True の場合、結果は期待どおりになります。 、前の値を返し、条件が False の場合は後の値を返します。落とし穴はありませんが、条件と戻り値の順序に注意して書く必要があります。 Java と同じです。三項演算子は異なります。間違えないでください🎜

以上がPython三項計算機の使い方と短絡論理手法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、