如何更改变量内的变量?

时间:2017-12-18 15:43:53

标签: python

这是我的代码:

50
('you have', 100)

这就是它打印的内容:

find . -mtime -$((365*4)) -name "*xml" >> tmp.txt  

为什么hp1不会在健康状况内发生变化?

5 个答案:

答案 0 :(得分:2)

以下一行:

health1 = 'you have', hp1

创建包含两个值的tuple"you have"100(请注意,hp1的值为 已复制 < / strong>,而不是 引用 )。然后将此tuple分配给名为health1的新变量。

health1hp1无关。如果hp1被覆盖,删除,丢弃或发生任何事情,health1并不关心。

如果您非常渴望将此变量传递给引用,则可以围绕int类型创建一个包装类:

class IntWrapper(object):
     def __init__(self, value):
          self.value = value
     def __add__(self, value):
          return IntWrapper(self.value + value)
     def __iadd__(self, value):
          self.value += value
          return self
     def __sub__(self, value):
          return IntWrapper(self.value - value)
     def __isub__(self, value):
          self.value -= value
          return self
     def __str__(self):
          return str(self.value)
     def __repr__(self):
          return str(self)

hp1 = IntWrapper(100)
health1 = 'you have', hp1

hp1 -= 50

print hp1          # 50
print health1      # ('you have', 50)

答案 1 :(得分:2)

要使用hp1的任何突变自动更改输出,您可以使用类:

class Health:
   def __init__(self, health):
       self.health = health
   def __add__(self, val):
       return Health(self.health + val)
   def __sub__(self, val):
       return Health(self.health - val)
   def __repr__(self):
       return "you have {}".format(self.health)

hp1 = Health(100)
hp1 -= 50
print(hp1)

输出:

you have 50

答案 2 :(得分:0)

因为您定义了health1 - 一个(string, int)元组 - 因为hp1仍然是100,并且从那以后没有改变它。这不是C / C ++意义上的指针,只是按值复制。

答案 3 :(得分:0)

在您的代码中,您已经这样做了,

hp1 = 100 # setting hp1 as 100
health1 = 'you have', hp1 # making a tuple 

hp1 = hp1 - 50 # subracting 50 from hp1 -> gives 50 as result
health1 # simply calling health1

print hp1 # displaying hp1
print health1 # displaying health1

在此代码中,

您将hp1定义为100,将其存储在1000

位置

您将health1的元组名称设为'you have', hp1。它将存储在一个位置2000

您从hp1 hp1 50减去50,这将不会更改health1变量,因为它存储在不同的位置。但它会改变hp1

的价值

希望这会有所帮助。!!

答案 4 :(得分:0)

要做你想做的事,你必须使用。这是你在python中遇到的最接近的指针形式。

以下是一个例子:

class Health():
    def __init__(self, value):
        self.hp = value

    def __repr__(self):
        return 'You have {}.'.format(self.hp)

health = Health(100)
hp_clone = health
health.hp -= 50

print hp_clone
# Program outputs : You have 50.

您的问题也可能是重复的 Pointers in Python?

其他人已经解释了您的计划中发生的事情。