ホームページ  >  記事  >  バックエンド開発  >  Pythonでの文字列の変更とパラメータの受け渡しについて詳しく解説

Pythonでの文字列の変更とパラメータの受け渡しについて詳しく解説

WBOY
WBOYオリジナル
2016-12-05 13:27:171551ブラウズ

問題が見つかりました

私は最近、面接中に JavaScript または Python を使用して文字列を反転することを選択し、コードを書きました (間違っています)。

リーリー
その後、面接官は 2 つの質問をしました:

(1) この方法で文字列の値を変更できますか? [はい、と答えました] [間違った答え]

(2) パラメータはアドレスで渡されますか?それともコピーですか? [値を渡すと答えました。数値、文字列、タプルは値によって渡されます (不変); リストと辞書は参照によって渡されます (可変);] [答えは値によって渡され、直接変更できます] [答えは間違っています。正しいものは値によって渡されます。 、不変]

次のことを考えています

私はよく文字列を使用しますが、この問題については勉強したことがなかったので、インターネットで情報を検索しました:

Python の文字列は不変型です。つまり、文字列の要素を変更するには新しい文字列を作成する必要があります。

文字列は独立した文字で構成されており、シーケンスでもあります。シーケンスの一般的な操作方法は文字列にも適用されます。

例:

スライス操作を通じて部分文字列に順次アクセスします。


文字列の長さを調べるには len() を使用します。

in 演算子または not in 演算子を使用して、文字列に特定の文字が存在するかどうかを判断します。

Python には文字タイプはありませんが、この概念を表すために長さ 1 の文字列が使用されます。もちろん、これは実際には部分文字列です。

アクセス文字列の例:

リーリー

出力:

リーリー

では、文字列を変更するにはどうすればよいでしょうか?

変数に値を代入 (または再代入) することで、既存の文字列を「更新」できます。新しい値は、元の値と似ている場合もあれば、元の文字列とは完全に異なる場合もあります。

例:

リーリー

出力:

リーリー

では、文字や文字列を削除するにはどうすればよいでしょうか?

繰り返しますが、文字列は不変であるため、文字列内の特定の文字を削除することはできず、不要な部分を削除した文字列を結合して新しい文字列を作成することもできます。

「Hello World!」から小文字の「l」を削除したい場合は、次のようにする必要があります:

リーリー

出力:

リーリー

空の文字列を割り当てるか、del ステートメントを使用して、文字列を空にするか削除します。ただし、ほとんどのアプリケーションでは、文字列を明示的に削除する必要はありません。この文字列を定義するコードは最終的に終了し、その時点で Python が自動的に文字列を解放します。

つまり、私が書いた逆文字列コードには何か問題があります。正しいコードは次のとおりです。

リーリー

それでは、渡された仮パラメータと実パラメータは同じオブジェクトなのでしょうか? id 関数を使用して確認することができます。まず、id 関数の公式の説明を見てみましょう。

言い換えると、

関数はライフサイクル中にメモリ内のオブジェクト obj のアドレスを返します。id 関数のパラメーターの型はオブジェクトです (Python のすべてのオブジェクトの場合、変数はオブジェクトへの参照を格納します)。

次のコードを使用して検証できます:

id(obj) リーリー

出力:

リーリー

渡されたパラメータは実際には文字列オブジェクトのアドレスであることがわかります。パラメータが list または dict に変更された場合でも、出力 ID は同じになります。したがって、Python でパラメータを渡す方法は次のとおりです。オブジェクトのアドレス、数値、文字列、タプルは直接変更できませんが、リストと辞書は直接変更できます。

概要

以上がこの記事の内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご不明な点がございましたら、メッセージを残してご連絡ください。

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