今日は、私のコピー&ペーストの間違いと、Python プログラムで末尾にカンマのある文字列が結合されて Tuple() になった経緯についてお話します。不思議なことに、私はこの間違いを犯すまで、この概念を知りませんでした。
それでは、Python の文字列とタプルについて簡単に学ぶことから始めましょう。
定義: テキストの保存と操作に使用される文字のシーケンス。
構文: 一重引用符 ' '、二重引用符 ' "、または三重引用符 ''' ''/""" """ で囲みます。
不変性: 文字列は作成後に変更できません。
定義: 不変の値のシーケンス。
構文: カンマで区切って括弧 ( ) で定義します。
不変性: 一度作成された要素は変更できません。
これで、文字列とタプルについて、また、直接代入またはコンストラクターを使用したクラス アプローチを使用して、文字列型またはタプル型の変数を取得する方法を理解しました。しかし、私の話は違います:)。
Python ステートメントにはセミコロン (;) やコンマ (,)、その他の終了記号 (ブロックを処理するためにスペースが使用されます) は必要ありません。では、「Ajit Kumar」のような文字列で末尾のコンマをどのようにすればよいでしょうか。辞書のリストから文字列要素をコピーすると、多くの場合、末尾にカンマが付きます。これが私に起こったことで、その後話が面白くなりました。
それでは、まず私のストーリーの例を見てみましょう。
ここで、次の 2 つの点に注意してください:
1) Python インタープリターは、文字列「mymistake」の末尾のコンマが原因でエラーをスローしません。そうでない場合、エラーはそれ以上進みません。
2) 文字列変数 mymistake を作成する当初の意図よりも、変数の型が「タプル」になってしまいました。
ここに書きましたが、非常に簡単でシンプルに見えますが、このエラーをデバッグするのに1時間かかりました。文字列を引数としてメソッドに渡していたため、エラーが奇妙で、メソッドの作業を続けてエラーメッセージを理解しようとしました。たとえば、メッセージは次のようなものでした。「name」変数にはメソッド lower() がありません。
括弧なしでカンマを使用すると、Python はそれをタプルとして扱います。
例: mymistake = "Ajit Kumar"、タプル ("Ajit Kumar",) を作成します。
したがって、項目/要素のみを持つタプルを作成したい場合は、非常に注意する必要があります。次の例では、最初の例では項目が括弧 (1) のペア内にある場合でも、Python はそれをタプルではなく整数として扱うことを示します。
リーリー
リーリー
ただし、Python のドキュメントには明確に記載されており、それに気付かず、トレーニング カンマ付きの単一項目であってもタプルを作成するために常に () を使用していたのは私の間違いまたは過失でした。ソースとにかく、これにより、いくつかの新しい学習と、() を使用せずに単一の項目または複数の項目を含むタプルを作成するショートカットが得られました。はい、さらに多くの項目で「末尾のカンマ」を使用してタプルを作成してみましたが、うまくいきました。例:
リーリー
以上が文字列と末尾のカンマ、カップルを取得してタプル (): エラーと概念へのコピー & ペーストの間違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。