这是我的代码:
50
('you have', 100)
这就是它打印的内容:
find . -mtime -$((365*4)) -name "*xml" >> tmp.txt
为什么hp1不会在健康状况内发生变化?
答案 0 :(得分:2)
以下一行:
health1 = 'you have', hp1
创建包含两个值的tuple
:"you have"
和100
(请注意,hp1
的值为 已复制 < / strong>,而不是 引用 )。然后将此tuple
分配给名为health1
的新变量。
health1
与hp1
无关。如果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?。
其他人已经解释了您的计划中发生的事情。