今回はPythonの変数と代入について図解で詳しく解説します。 Pythonの変数と代入を使用する際の注意点は何ですか?実際のケースを見てみましょう。
Python は C 言語とは大きく異なる独自の言語です。Python を初めて使用する多くの初心者は、変数と代入が理解できないと言います。C を学習したことがある人なら、変数に値を代入するときに、最初に データ型を指定する必要があります 。値を保存するためにメモリ領域が開かれます。例:
int a = 1;
a はメモリ空間内の小さな領域で、大きな部屋にある小さな箱のようなものです。割り当ては、整数 1 をボックスにロードすることです。
今度は変数 a
a = 2;
ボックスは同じボックスのままです。これは、メモリアドレスは変更されていませんが、メモリ内の値が変更されて 2 になったことを意味します。
もう一度見てください:
int b = a;
変数 a を別の変数 b に代入するとき、それは値をコピーして変数 b に渡すことと同じです。 b は新しく開かれたメモリ領域です
Python では、 の厳密な名前です。 「変数」は「名前」であり、これはラベルとしても理解できます。私たちの名前と同じように、名前はその人に貼られたラベルです。
>>> 10-a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined</module></stdin>
たとえば、上記のエラー メッセージは、名前 'a' が定義されていませんが、変数と呼ばれていません。
Python では、変数に値を割り当てることは、人に名前を付けるのと同じように、オブジェクトにラベルを付けることと同じです。変数自体には型情報がなく、実際の情報はオブジェクト内にあります。
例:
a = 1
内部的には、Python はまず整数オブジェクト 1 を作成するためにメモリ空間を割り当て、次にこの 1 に a という名前のラベルを付けます。
次に
a=2
を実行すると、Python は別のメモリ領域に整数オブジェクト 2 を作成し、ラベル a を 1 から剥がして 2 に貼り付けます。この時点で、a から 1 の値を取得することはできなくなります。 。
今、名前aを別の名前b
b = a
に代入することは、先ほどの2に新しいラベルbを付けることと同じです。これはC言語とはまったく異なります。 b にメモリ空間を割り当てる必要があります。このようにして、a または b を介して 2 にアクセスできます。実際、赤ちゃんに名前を付けるときと同じように、彼らにはニックネームとビッグネームの両方があります。全部同じ人から電話されました。
Python では依然として「変数」という用語を使用しますが (プログラミング言語 では一般的な用語であるため)、Python の変数は他の言語とは異なるものであることを理解する必要があります。
Python の変数と代入を理解した後、以下に示すように、関数のパラメータの受け渡しを見てみましょう:
>>> def fun_a(a): ... a = a+4 ... >>> g = 0 >>> fun_a(g) >>> g 0
グローバル変数 g が関数 fun_a に渡されるとき、それは関数 fun_a のパラメータ a と等価です。関数もラベル 0 として付加されている場合、a が再割り当てされます (a=a+4)。これは、ラベル a を 0 から剥がして 4 に貼り付けることと同じですが、それでも g は 0 の上のラベルのままです。
この関数をもう一度見てください、リストオブジェクトを渡しています
>>> def fun_b(names): ... names[0] = ['x', 'y'] ... >>> n_list = ['a','b','c'] >>> fun_b(n_list) >>> >>> n_list [['x','y'], 'b', 'c']
与前面的步骤还是一样的,names 和 n_list 都是['a','b','c']上的一个标签,只是列表中的第0个元素被重新赋值了,但是names和 n_list 依然都贴在这个列表对象身上,虽然 n_list的值更新了,但对象依然是原来那个对象。就好比张三和小张都是同一个人,现在给小张换件衣服时,其实就是给张三换件衣服,人还是那个人,只是它身上的东西发生了变化。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がPython 変数と代入の詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。