必要があるときに変更返さ:変数は、関数内で変更され、それは私が次のプログラム使用していない
def coordsRelToPoint(origin,point):
result = (int(origin[0]) - int(point[0]) , int(origin[1]) - int(point[1]))
return result
def initCoordsRelToStartBattle(calibration):
print ('FUNCTION BEGIN')
print ('orig: %s' % str(calibration['center']))
print ('')
new_calibration = {}
new_calibration = calibration
print ('orig: %s' % str(calibration['center']))
print ('')
new_calibration['center'] = coordsRelToPoint((774,454),calibration['center'])
print ('orig: %s' % str(calibration['center']))
print ('')
print ('new: %s' % str(new_calibration['center']))
print ('')
print ('FUNCTION END')
return new_calibration
def main():
calibration = {}
calibration['center'] = (156,20)
initCoordsRelToStartBattle(calibration)
if __name__ == "__main__":
main()
それが画面上に次のように印刷されています。
FUNCTION BEGIN
orig: (156, 20)
orig: (156, 20)
orig: (618, 434)
new: (618, 434)
FUNCTION END
すると、私は理解していない何を私の元の変数が、別の関数で使われているために関数を呼び出すときに変更される理由です。
これは、関数から返されていなくても変数のキャリブレーションが変更されていることを意味するので、私はラインのorig((618、434)
これはコピーではなく、浅いものでもありません。これは単に同じ*オブジェクトへの別の参照です。 –
@DanielRosemanあなたが正しいです、私はエラーの説明を修正しました。ありがとう! – albertoql