変数とは何か
変数は、文字通りの意味から理解することができる。変化量です。
組成変数
私たちは、Miangに定義された変数から3つの部分に分かれ組成変数を見ることができます。
- 変数名:変数の値を参照するために使用する変数名、変数の値によって必要なときには、変数名を通過します。
- 代入記号:割り当て
- 変数値:現実の世界では、特定の状態を記録するために使用するデータを格納します。
name # 报错,无任何意义
age = 18
height = 185
print(age)
print(height)
18
185
変数名の命名
あなたが命名どれだけの名前にしたいので、問題がないかの変数のために、最大で、夜にコードをチェックした後、所有者である場合は、次の日、あなたは会社に行っていません。
sfasfewfasdfa='nick'
print(sfasfewfasdfa)
nick
必ず、変数の定義はレコードに実際に現実世界の状態で、覚えて、そして終わりではありません永遠に保つ、取ることが目標です。だから、という名前の変数は、以下の3つの仕様を満たしている必要があります。
- 説明するように名前付き変数は、中国を使用しないことを覚えて、状態変数の値を反映すべきです
- 変数名は、英数字とアンダースコアの組み合わせでなければならず、変数名の最初の文字は数字にすることはできません。
- キーワードは、変数名として宣言することはできません
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
変数名の2つのスタイル
ハンプボディ
AgeOfNick = 19
print(AgeOfNick)
19
下線(推奨)
age_of_nick = 19
print(age_of_nick)
19
定数
量が変化量で、定数が同じ量です。Pythonの構文は、Pythonの変数が一定の自然の中で定義されている、すなわち、任意に定義された定数を使用していません。あなたは、定数を定義する必要がある場合、変数名はすべて大文字でなければなりません。(コンベンション)
まず、変数預金ました
x = 10
我々はp1.pyで変数を定義するときx = 10
、コンピュータ10は、それがある中、この変数の値を格納するには?CPU、メモリ、ハードディスクドライブ:私たちは、コンピュータの3つのコアコンポーネントである見直さ。確かにCPU、それはそれでメモリやハードドライブに保存されていませんか?私たちは、その後、私たちはPythonインタプリタを使用してこのファイルをp1.py実行しない場合は、実行するために戻って3つのプロセス変数を見てx=10
、明らかにそれは1,0は、4文字のXは非常に一般的であり、=。そして、このファイルを実行するための唯一のPythonインタプリタ、メモリにその文字は、変数の概念を持つことになります。その変数は、間、メモリに格納されます。
メモリに保存された変数は、それは広すぎた、と我々はそれが特定置きます。今、私たちは学校(コンピュータのメモリ)であることを想像し、(変数名x)の学校はすべての学校は、クラス(変数値記憶部10)と学校に教室を開きますクラスを開設し、家屋番号のクラスがあります。すなわち、大容量メモリ・コンピュータ・メモリのために、変数を定義それぞれは、この大きなメモリに小さなスペースを小スペースを開き、変数名X(ハウスナンバー)に変数値10、及び次いでこの小さなメモリ空間を記憶しています、 X 10ポイント。
二、Pythonのガベージコレクション
私たちは、コードの一部を追加した場合p1.pyために、x = 11
大きなメモリ・ストレージ・スペースは、xが、あるため、xの前に、それほど大きなメモリを別の小さな変数値11、変数xのバインド別の家の番号の値が開かれると持ち上げます接続10、その結果、Xおよび11。この時間目がゴミのpythonになるので、PythonはPythonのガベージコレクションのメカニズムである10によって占有されていたメモリを、このゴミを扱うリリースする予定、何家屋番号10がないので。他の言語を手動で解除する必要がありますが、メモリは10アウトを占めていました。
2.1参照カウント
上記の説明から、我々は限り家の数としてバインディング変数の値を知ることができ、それは変数の値は、家の番号にバインドされていないのに対し、この変数の値はゴミで、Pythonは自動的にゴミをクリーンアップします、ゴミではありません。ここでは、この家の番号が呼ばれ、Pythonで与えられた家屋番号、プロの解釈のためのカウントを参照してください。
x = 10 # 10引用计数加1为1
y = x # 10引用计数加1为2
x = 11 # 10引用计数减1为1;11引用计数加1为1
del y # 10引用计数减1为0,触发python垃圾回收机制,python清理10的内存占用
コードは、参照カウントの加算および減算する処理です。
第三に、小さな整数プール
参照カウントに話す1の場合に注意すべきこと:小さなPython実装int型の整数プールがあるとき。同じ値がメモリ空間に起因するアプリケーションの効率、出発プール小さな整数の範囲作成Pythonインタプリタ[-5256]繰り返される作成を避けるために、オブジェクトの範囲内の小さな整数グローバルインタプリタであります範囲内で再利用され、ガベージコレクションが回収されることはありません。
あなたはPythonでpycharmでプログラムを実行すると、パフォーマンス上の理由からpycharmが、他の不変のタイプにも契約が同じようになります含まれているなど、小さな整数、文字列、のプールの範囲を拡大していきます、私たちは覚えておく必要がありますこれは、慎重に検討しない範囲どのくらいの終わりのように、ライブ最適化のメカニズムです。
各変数に対して、Pythonは三つの方法を提供し、3つの特性変数、前記組み込み関数PythonのID()を取得し、メモリアドレスが同じではない、ID()印刷の結果がので、各変数で、同じではありません後独自のメモリアドレス値を有し、IDは、メモリ内の変数の値の位置を反映するために使用され、異なるメモリアドレスが異なるIDです。
ID、等しい変数一定値に等しく、同一のメモリアドレスを指す;変数に等しい値、ID必ずしも等しくありません。
チェーンの割り当て
a = 10
b = 10
c = 10
d = 10
print(f'a:{a}, b:{b}, c:{c}, d:{d}')
a:10, b:10, c:10, d:10
クロス割り当て
x, y = y, x
print(f'x:{x}')
print(f'y:{y}')
x:100
y:200