亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

関數(shù)値の転送問題

まず例を見てみましょう:

# -*- coding: UTF-8 -*-
def chagne_number( b ):
    b = 1000
b = 1
chagne_number(b)
print( b )

最終的な出力結(jié)果は次のとおりです:

1

ここで疑問を持つ人もいるかもしれません。なぜ b の値は関數(shù) chagne_number で変更されないのでしょうか?変化がなく、出力結(jié)果が 1 のままなのはなぜですか? この問題は多くのプログラミング言語で議論されており、原理の説明も同様です。

これは主に、型オブジェクトである関數(shù)パラメータの転送についてです。Python の基本的なデータ型も以前に紹介しました。これらの型オブジェクトは、変更可能な型と変更不可能な型に分類できます。

Python では、文字列、整數(shù)、浮動(dòng)小數(shù)點(diǎn)型、タプルは変更できないオブジェクトですが、リスト、辭書などは変更できます。

例:

変更不可能な型: 変數(shù)の代入 a = 1 は、実際には整數(shù)オブジェクト 1 を生成し、変數(shù) a は 1 を指します。 a = 1000 の場(chǎng)合、実際には、別の整數(shù)オブジェクト 1000 を生成し、次に a の點(diǎn)を変更して、整數(shù)オブジェクト 1 を指すのではなく 1000 を指すようにします。最終的に 1 は破棄されます。

Changeable type: 変數(shù)の割り當(dāng)て a = [1,2,3,4,5,6] はオブジェクト リストを生成します。リストには 6 つの要素があり、変數(shù) a はリストを指します。a[2] = 5 はリスト a の 3 番目の要素を変更します。ここでの要素値の変更は上記とは異なり、a をリダイレクトするのではなく、リスト內(nèi)の要素の値を直接変更します。

ca71dacdee25f4d37deb9d0275fb3ba.png

これは、関數(shù)でのパラメータの受け渡しにも影響します:

変更不可能な型: C の値の受け渡しと同様、次のようになります。整數(shù)、文字列、タプル。たとえば、 fun(a) は a の値を転送するだけで、 a オブジェクト自體には影響しません。たとえば、 fun(a) 內(nèi)の a の値を変更すると、コピーされた別のオブジェクトが変更されるだけで、 a 自體には影響しません。

変更可能なタイプ: リストや辭書など、C に似た參照の受け渡し。例えば ??fun (a) の場(chǎng)合、実際には a が渡されますが、変更すると外部の fun も影響を受けます

したがって、最初の例では、b = 1 として、整數(shù)オブジェクト 1 が作成されます。 , 変數(shù) b がこのオブジェクトを指しており、関數(shù) chagne_number を渡すと、変數(shù) b が値によってコピーされます。渡されるのは b の値のみであり、b 自體には影響しません。詳細(xì)については、変更後の例を確認(rèn)し、印刷結(jié)果を確認(rèn)することでよりよく理解できます。

# -*- coding: UTF-8 -*-
def chagne_number( b ):
    print('函數(shù)中一開始 b 的值:{}' .format( b ) )
    b = 1000
    print('函數(shù)中 b 賦值后的值:{}' .format( b ) )
b = 1
chagne_number( b )
print( '最后輸出 b 的值:{}' .format( b )  )

出力結(jié)果:

函數(shù)中一開始 b 的值:1
函數(shù)中 b 賦值后的值:1000
最后輸出 b 的值:1

もちろん、パラメータが変更可能な型の場(chǎng)合、この関數(shù)を呼び出した後、元の値も変更されます。具體的な例は次のとおりです:

# -*- coding: UTF-8 -*-
def chagne_list( b ):
    print('函數(shù)中一開始 b 的值:{}' .format( b ) )
    b.append(1000)
    print('函數(shù)中 b 賦值后的值:{}' .format( b ) )
b = [1,2,3,4,5]
chagne_list( b )
print( '最后輸出 b 的值:{}' .format( b )  )

出力結(jié)果:

函數(shù)中一開始 b 的值:[1, 2, 3, 4, 5]
函數(shù)中 b 賦值后的值:[1, 2, 3, 4, 5, 1000]
最后輸出 b 的值:[1, 2, 3, 4, 5, 1000]
學(xué)び続ける