申し訳ありませんが、これは明らかな質問ですが、私は比較的新しいPythonであり、現時点で完全に困惑しています。私は自分の変数が私が取り組んでいるプログラムでも同じように働くようになるのが難しいです。ここでPython - 変数の問題
が、私はすぐに私の問題を紹介するためになさ例です。あなたが見ることができるように
life = 200
def example(dudeHP):
dudeHP = dudeHP - 75
print (dudeHP)
example(life)
print (life) #output is 200, but I want it to be 125
、私はグローバル変数「人生」の値はとデフの例のコードブロックの内側に変更するために取得しようとしていますdudeHP(私が間違っていなければローカル変数になりますか?)
これは実行可能ですか?これを達成するより良い方法はありますか?あるいは私はそれをすべて間違っているのですか?ありがとうございます:)
Pythonはcall-by-referenceをサポートせず、call-by-valueのみをサポートしています。あなたは '200 'のコピー*を' example() 'に渡しました。これは' life'からではなく' 75 'から差し引いたものです。 –
@Peter No. Pythonはそのようなコピーを作成しません。彼は参照を渡したが、彼は指摘した値を「指差し」または指し示す価値を指し示すことなく新しい値(125)で指摘した。 – agf
@agf '' dudehp''に新しい値を指すのではなく、新しい**オブジェクト**にします。実際、AFAIは理解しているように、識別子 '' dudehp''はシンボルテーブル内の一種のポインタにバインドされています(Pythonでは、 '参照'という言葉が好まれていますが、なぜか分かりません)変わらない。唯一変化するのは、識別子が間接的に指し示すオブジェクトのアドレスである '' dudehp''に関連する参照の値です。次に、 '' dudehp = dudehp-75''は、関連付けられたポインタ内のアドレスの変更を引き起こしますが、シンボルテーブル内の関連付けではありません – eyquem