我是初学者,这让我很困惑 因此,int 是不可变数据类型。局部变量“num”是 x 的副本。当我们运行这段代码时。 x 的值不变。那么在这种情况下使用函数有什么用呢?
students=[0,1,2,3,4,5,6,7,8,9]
def func(num):
num+=1
return num
x = 0
for i in students:
inp = input("Y?")
if (inp=="Y"):
func(x)
print(x)
我知道我们需要像这样给 x 赋值
students=[0,1,2,3,4,5,6,7,8,9]
def func(num):
num+=1
return num
x = 0
for i in students:
inp = input("Y?")
if (inp=="Y"):
x = func(x)
print(x)
有什么方法可以只在函数内部赋值吗? 另外,在这种特殊情况下,有没有比函数更好的方法?(除了只写 x+=1)
谢谢!
所以,
是不可变的数据类型。int
没错。
int
值不能在内部改变(不像列表)。
局部变量
是num
的副本。x
那不是真的。没有副本。您可能会混淆名称(
num
、x
、func
、...)和这些名称所包含的值。当您使用 func
调用 func(x)
时,名称 x
持有的值被读取,并且该值作为唯一参数传递给 func
,然后将其分配给本地名称 num
.
当我们运行这段代码时,
的值不会改变。x
因为
x
没有重新分配,是的。只有名称 num
被重新分配给表达式 num + 1
的结果,并返回该值,但它不用于任何用途。
那么在这种情况下使用函数有什么用呢?
在第一个例子中,只是浪费了一点时间,因为没有对返回值做任何事情。
在这种特殊情况下有没有比函数更好的方法?
在这个人为设计的例子中,计算用户回答“Y”的次数?号