为什么 打印(平方) 返回 0 而不是 100 ?
我认为从函数返回后 - 变量 平方 的值会被分配给具有相同名称的全局变量吗?
#if CUSTOM_CLOCK_MONOTONIC != CLOCK_REALTIME
if (clock_gettime(CUSTOM_CLOCK_MONOTONIC,tp) == 0) {
return;
}
#endif
返回:
答案 0 :(得分:5)
将函数的结果分配给变量:
squared = square(10)
这是在函数中使用return squared
的重点,不是吗?
答案 1 :(得分:3)
函数square
永远不会更改在全局范围中找到的变量squared
。在函数内部,您声明一个与全局变量同名的局部变量,但这将更改局部变量而不是全局变量。然后,当您print(squared)
打印未更改的全局变量时,该变量在您最初设置时仍为0。作为代码清洁的问题,你真的应该尽量避免让局部变量和全局变量共享相同的名称,因为它会引起混淆(正如我们在这个问题中看到的那样)并使代码更难阅读。
要从函数中更改全局变量,必须使用global
keyword告诉Python这样做,以使名称引用全局变量。您可能想看看这个问题:Use of "global" keyword in Python
当然,更简单,更好的选择就是使用函数的返回值。最大限度地减少全局可变状态的使用是一个很好的目标。
答案 2 :(得分:1)
基本上这里发生的是你在square函数中创建一个局部变量。要更改平方,只需键入:
squared =square(10)
print squared
答案 3 :(得分:-1)
排序。你非常接近。您需要更改以下内容:
def square(n):
"""Returns the square of a number."""
squared = n**2
要:
def square(n):
"""Returns the square of a number."""
global squared
squared = n**2
希望这有帮助!