「永遠に強力な関数」の講義で、読者に変数について簡単に紹介してきました。それ以来、変数を使用するたびに、代入という操作が必要になります。この講義では、変数と代入とその理由を読者に明確に理解してもらうために、これら 2 つのことに再度言及します。もちろん、最終的にこの目標を達成できるかどうかは、分かりやすさに大きく依存します。理解できない場合は、私の言ったことは十分ではないということですので、私に連絡してください。またお手伝いします。
変数とオブジェクト
著者は「Python を学ぶ」という本で、変数、オブジェクト、参照の関係を非常にわかりやすく説明しています。私はここで彼からとてもインスピレーションを受けています。著者のマーク・ラッツ氏の傑作に感謝します。
「Python の学習」に視点を適用する: 変数には型はありませんが、オブジェクトには型があります
Python では、変数を使用する場合、事前に宣言する必要はなく、使用するときに変数に値を代入するだけです。ここで特に強調したいのは、変数が使用されている限り、その変数に値を割り当てる必要があるということです。
つまり、このままではうまくいきません。
>>>x
トレースバック (最後の呼び出し):
ファイル「
NameError: 名前「x」が定義されていません
繰り返しの注意事項: エラー メッセージに必ず注意してください。値を代入せずに単に変数を記述すると、Python は変数が定義されていないとみなします。代入は null 以外の値だけでなく、null 値も許可されます。
>>> x = 3
>>> lst = []
>>> 単語 = ""
>>> my_dict = {}
前の説明で、変数が線を介してオブジェクトに接続されている (具体的には int/list など) というアナロジーを提案しましたが、このアナロジーは多くの人に受け入れられました。私、ラオ・チーの最初の作品と考えられています。したがって、厳密な言語を使用して変数を記述したい場合、変数は、オブジェクトを指す名前空間を持つシステム テーブルの要素として理解できます。あまりにも深刻すぎて、私のたとえを理解するのは難しいです。変数とは、システム内に存在するもので、オブジェクトと線で結ばれ、魚を釣ることができます。
ターゲットはどこですか?想像力を働かせてください。マシンのメモリ内に、システムはいわゆるオブジェクトを含むスペースを割り当てます。場合によっては数値が配置され、場合によっては文字列が配置されます。数値を入力した場合は int 型、文字列を入力した場合は str 型になります。
次に、先ほど述べた変数が自身の能力を使ってオブジェクトを自身に接続します(ポインタがオブジェクト空間を接続します)。これが参照です。参照が完了すると、割り当てが実現されます。
上の図を参照してください。変数とオブジェクトの関係が明確に示されています。したがって、厳密に言えば、メモリ空間に配置されたオブジェクト (つまりデータ) のみが型を持ち、変数には型がありません。まだ完全に理解していない場合は、別の比喩を使用してみましょう。変数は漁師のようなもので、湖は記憶のようなものです。湖にはたくさんの魚がいて、あらゆる種類の魚が存在し、それらはオブジェクトです。漁師 (変数) の仕事は、何らかの方法 (ルアー) で釣り糸を通して自分と魚を結び付けることです。まあ、魚の種類もいて、銀鮒、フナ、太刀魚(太刀魚も湖に行ったんですけど、淡水の太刀魚ですか?ははは、くだらない話ばかりです、真剣に考えないでください)、そして漁師さん(変数)にはこのタイプはありません、彼はさまざまなタイプの魚を捕まえます。
この比喩はひどいです。とりあえず我慢して理解してください。良い比喩がある場合は、忘れずに共有してください。
同じ変数が同時に 2 つのオブジェクトを指すことはできますか? 2 つの異なるボートに乗ることはできません。そうなったらどうなるでしょうか?
>>> x = 4
>>> x = 5
>>>x
5
変数 x は最初にオブジェクト 4 を指し、次にオブジェクト 5 を指します。後者が解放されると、自動的に最初のオブジェクト 4 に接続します。もう一度 x を見ると、参照されているオブジェクトは 5 です。 4はどうでしょうか?参照する変数がなくなると、ゴーストになります。 Python は非常にケチで、メモリ内にゴーストが存在することを絶対に許可しません。これらはすべてガベージとみなされ、Python にはガベージを自動的に回復するメカニズムが備わっています。
インターネットでグラフィックの説明を見つけました。非常に優れているので、ここに引用します (出典: http://www.linuxidc.com/Linux/2012-09/69523.htm)
>>> a = 100 #メモリ空間内のオブジェクト 100 への変数 a の参照を完了します
以下に示すように:
そして、彼はまた同じことをしました:
>>> a = "こんにちは"
以下に示すように:
メモリ内の元の 100 はゴミとして収集されました。なお、この収集処理はPythonが自動的に行ってくれるので、特に心配する必要はありません。
では、Python はどのようにしてガベージ コレクションを実行するのでしょうか? Quora でこの質問をした人もいます。その答えは非常に興味深いものだと思いますので、リンクして読んでみてください。 Python (プログラミング言語): Python のガベージ コレクションはどのように機能しますか?
と ==
の効果上記のプロセスの原則が明確になったので、さらに一歩進めることができます。
>>> l1 = [1,2,3]
>>> l2 = l1
この操作では、2 つの変数 l1 と l2 はオブジェクトを参照します (両方とも [1,2,3])。どうすれば見えますか? [1,2,3] が l1 によって変更され、l2 によって参照されるオブジェクトも変更される場合、このビューは確認されます。
>>> l1[0] = 99 #オブジェクトを [99,2,3] に変更します
>>> l1 #変更されました
[99、2、3]
>>> l2
[99、2、3]
別の方法:
>>> l1 = [1,2,3]
>>> l2 = [1,2,3]
>>> l1[0] = 99
>>> l1
[99、2、3]
>>> l2
[1、2、3]
l1 と l2 は同じオブジェクト [1,2,3] を指しているように見えますが、実際、メモリ内ではこれら 2 つは互いに無関係です。内容的には全く同じです。それは、水の中で成長している2匹の魚が、両方とも2人によって捕まえられ、同じ魚ではないふりをしているようなものです。したがって、l1 を通じて参照オブジェクトが変更されても、l2 は変更されません。
これはさらにテストできます:
>>> l1
[1、2、3]
>>> l2
[1、2、3]
>>> l1 == l2 #2 が等しいということは、内容が同じであることを意味します
本当です
>>> l1 is l2 #is は、メモリ内の 2 つの参照オブジェクトのアドレスが同じかどうかを比較します
False #前のテストでは、これら 2 つのことが示されました
>>gt;>gt;>l3 = l1 #ちなみにこの場合、l3 と l1 は同じオブジェクトを適用します
>>> l3
[1、2、3]
>>> l3 == l1
本当です
>>> l3 は l1 #is結果は True
本当です
一部のオブジェクトにはコピー機能があります。この機能で取得したオブジェクトは新しいオブジェクトですか、それとも同じオブジェクトを参照していますか?上記と同様の実験を行ってみるとわかります。例:
>>> l1
[1、2、3]
>>> l2 = l1[:]
>>> l2
[1、2、3]
>>> l1[0] = 22
>>> l1
[22、2、3]
>>> l2
[1、2、3]
>>> adict = {"name":"qiwsir","web":"qiwsir.github.io"}
>>> bdict = adict.copy()
>>>
{'web': 'qiwsir.github.io', 'name': 'qiwsir'}
>>> adict["メール"] = "qiwsir@gmail.com"
>>> 中毒者
{'web': 'qiwsir.github.io', 'name': 'qiwsir', 'email': 'qiwsir@gmail.com'}
>>>
{'web': 'qiwsir.github.io', 'name': 'qiwsir'}
コードをコピー
>>> x = 2
>>> y = 2
>>> x は y
本当です
>>> x = 200000
>>> y = 200000
>>> 誤り
>>>x = 'こんにちは'
>>> = 'こんにちは'
>>> x は y
本当です
>>> x = 「あなたの名前は何ですか?」
>>> y = 「あなたの名前は何ですか?」
>>> x は y #小さい数字だけでなく短い文字列も可能です
誤り

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

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

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

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
