ホームページ  >  記事  >  バックエンド開発  >  文字列と末尾のカンマ、get couple と become、Tuple (): エラーと概念へのコピー & ペーストの間違い

文字列と末尾のカンマ、get couple と become、Tuple (): エラーと概念へのコピー & ペーストの間違い

WBOY
WBOYオリジナル
2024-07-21 22:43:21828ブラウズ

String and Trailing comma, get couple and become, Tuple (): A copy & paste mistake to Error and concept

今日は、コピー&ペーストの間違いと、Python プログラムで末尾にカンマが付いている文字列がどのように結合されて Tuple() になったかについてお話します。不思議なことに、私はこの間違いを犯すまで、この概念を知りませんでした。
それでは、Python の文字列とタプルについて簡単に学習することから始めましょう。

定義: テキストの保存と操作に使用される文字のシーケンス。
構文: 一重引用符 ' '、二重引用符 " "、または三重引用符 ''' ''/""" """ で囲みます。
不変性: 文字列は作成後に変更できません。

# Example
mystring = "Hello, World!"
print(type(mystring)) 
#Output: <class 'str'>

mystring2 =str()
print(type(mystring2))
#Output: <class 'str'>

タプル

定義: 不変の値のシーケンス。

構文: カンマで区切られた括弧 ( ) で定義されます。

不変性: 一度作成された要素は変更できません。

# Example
mytuple = (1,2)
print(type(mytuple)) 
#Output:<class 'tuple'>

mytuple2 =tuple()
print(type(mytuple2))
#Output:<class 'tuple'>

これで、文字列とタプルについて、また、直接代入またはコンストラクターを使用したクラス アプローチを使用して、文字列型またはタプル型の変数を取得する方法を理解しました。しかし、私の話は違います:)。

Python ステートメントには、セミコロン (;) やコンマ (,)、その他の終了記号 (ブロックを処理するためにスペースが使用されます) は必要ありません。そのため、「Ajit Kumar」のような文字列で末尾のコンマを終了するにはどうすればよいですか。辞書のリストから文字列要素をコピーすると、末尾にカンマが付くことがよくあるためです。これが私に起こったことで、その後話が面白くなりました。

末尾にカンマがある文字列

それでは、まず私のストーリーの例を見てみましょう。

mymistake = "Ajit Kumar",
print(type(mymistake))
#Output : <class 'tuple'>

ここで、注意すべき点が 2 つあります:
1) Python インタープリターは、文字列 'mymistake' の末尾のコンマが原因でエラーをスローしません。それ以外の場合、エラーはそれ以上進みません。

2) 文字列変数 mymistake を作成する当初の意図よりも、変数の型が「タプル」になってしまいました。

ここに書きましたが、非常に簡単でシンプルに見えますが、このエラーをデバッグするのに1時間かかりました。文字列を引数としてメソッドに渡していたため、エラーが奇妙で、メソッドに取り組み続け、理解しようとしていたからです。エラーメッセージ。たとえば、メッセージは次のようなものでした。「name」変数にはメソッド lower() がありません。

問題

括弧なしでカンマを使用すると、Python はそれをタプルとして扱います。

例: mymistake = "Ajit Kumar"、タプル ("Ajit Kumar",) を作成します。

したがって、項目/要素のみを持つタプルを作成したい場合は、非常に注意する必要があります。次の例では、最初の例では項目が括弧 (1) のペア内にある場合でも、Python はそれをタプルではなく整数として扱うことを示します。

singleitem = (1)
print(type(singleitem))
#Output: <class 'int'>

したがって、単一の item を含むタプルを作成するには、次のように末尾のカンマを使用する必要があります。

singleitemtuple = (1,)
print(singleitemtuple)
#output:  (1,)

print(type(singleitemtuple))
#output:  <class 'tuple'>

そして、これが、文字列の末尾にカンマがある場合、Python がそれをタプルとして受け取り、変数を文字列としてではなくタプルとして作成した理由だと思います。

しかし、Python のドキュメントにはそのことが明確に記載されており、それに気付かず、トレーニング カンマのある単一の項目に対してもタプルを作成するために常に () を使用していたのは私の間違いまたは過失でした。ソース

とにかく、これにより、新しい学習と、() を使用せずに単一の項目または複数の項目を含むタプルを作成するショートカットが得られました。はい、さらに多くの項目で「末尾のカンマ」を使用してタプルを作成してみましたが、うまくいきました。例:

mylearning = "Ajit Kumar","April","python",
print(mylearning)
#output: ('Ajit Kumar', 'April', 'python')

print(type(mymistake))
#output:  <class 'tuple'>

週末はたくさんのことを学びました。お役に立てば幸いです。議論や提案をコメントに記入してください。 Python のショートカットやすぐに使える機能について聞くのが大好きです。

以上が文字列と末尾のカンマ、get couple と become、Tuple (): エラーと概念へのコピー & ペーストの間違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。