2015-05-22 2 views
-1

Я хотел бы знать, есть ли способ изменить значение целочисленной переменной вместо создания нового, чтобы заменить предыдущий. Код должен выглядеть почти так:PYTHON: Измените значение целочисленной переменной без воссоздания переменной

>>> myInt = 1 

>>> print myInt 

1 

>>> myInt.setattr (2) 

>>> print myInt 

2 
+4

Интс неизменны, так что вы всегда создает новый объект, то почему бы вам не сделать 'Минт = 2'? –

+0

Я делаю 'myInt = 2', но иногда я мог« редактировать »свою переменную вместо ее замены.Например, если бы мы могли редактировать переменную, мы могли бы сделать это из функции. Но мы можем «поэтому я обойдусь без ^^ – Morgan

ответ

2

myInt считается, что одной переменной. Так на самом деле:

myInt = 2 

изменяет значение переменной, но не сама переменная.

От wikipedia

В компьютерном программировании, переменный или скалярный является местом хранения в паре с соответствующим символическим именем (идентификатор,), который содержит некоторое известные или неизвестное количество или информацию, указанное в качестве значения.

Таким образом, назначение - это операция, необходимая для изменения значения переменной.

+0

Чтобы быть конкретным,« значение »переменной в Python является ссылкой на объект. Назначение 'myInt = 2' изменяет значение' myInt' из ссылки на объект '1' на ссылку на объект' 2'. – chepner

1
class FakeMutableInt(object): 
    def __init__(self, val): 
     self.__val = val 

    def setval(self, newval): 
     self.__val = newval 

    def __add__(self, other): 
     return self.__val + other 

    def __sub__(self, other): 
     return self.__val - other 

    # etc 

Конечно, это все довольно бессмысленно, но будет позволит вам сделать:

>>> myInt = FakeMutableInt(3) 

>>> myInt.setval(5) 

не то, что я знаю, почему вы никогда не хотите, чтобы сделать это.

1

myInt - переменная, которая может быть списана с нового значения. Когда вы используете «=» в python, вы, по сути, говорите Python, чтобы найти слот в памяти, который указывает на переменную «myInt», и установите его в соответствии с последующим после «=». Так большинство программистов изменяют значение переменной. Имейте в виду, что назначение не создаст новую переменную. Его просто переназначает значение в этой ячейке памяти.

Кроме того, Python отличается от других языков тем, что вам не нужно явно объявлять тип данных. Если в C/C++ и Java, если вы хотите создать новую переменную типа int, вы сделаете следующее:

int x = 6;

Что бы объявить переменной типа Int и инициализации, что переменная со значением 6.

В Python это не нужно.

1

myInt - ярлык. Вы не можете изменить ярлык, из которого он висит. Вы можете повесить много ярлыков на объект:

a = 9 
b = 9 
c = 9 

Существует только один 9 объект, и три метки, a, b и c. Вы не можете изменить 9, и вы не можете изменить a. Вы можете изменить то, что a висит от:

a = 6 
Смежные вопросы