- 此问题在此处已有答案**:
How do I get a result (output) from a function? How can I use the result later?(4个答案)
6个月前关闭。
为什么print(squared)*返回0而不是100?
我以为从函数返回后-变量squared*的值会被赋给同名的全局变量?
squared = 0
def square(n):
"""Returns the square of a number."""
squared = n**2
print "%d squared is %d." % (n, squared)
return squared
square(10)
print(squared)
退货:
4条答案
按热度按时间smdncfj31#
将函数的结果赋给变量:
这就是在函数中使用
return squared
的全部意义,不是吗?6l7fqoea2#
函数
square
不会改变全局作用域中的变量squared
,在函数内部声明一个与全局变量同名的局部变量。但是这只会改变局部变量而不会改变全局变量。2当你使用print(squared)
的时候,你打印的是没有改变的全局变量,它仍然是你最初设置的0。考虑到代码的整洁性,你真的应该尽量避免局部变量和全局变量共享相同的名称,因为这会导致混乱(正如我们在这个问题中看到的),并使代码更难阅读。要在函数内部修改全局变量,你必须使用关键字
global
让函数名引用全局变量,这样Python才会这么做。Use of "global" keyword in Python当然,更简单、更好的选择是只使用函数的返回值,最小化全局可变状态的使用是一个很好的目标。
3df52oht3#
这里实际上是在square函数中创建一个局部变量,要更改squared,只需输入:
2wnc66cl4#
差不多吧。非常接近了。您需要更改以下内容:
收件人:
希望这有帮助!