【发布时间】:2020-03-28 15:36:51
【问题描述】:
两者有什么区别?
var=0
def abc():
和
def abc():
var=0
我对这个世界还很陌生,但我一直对 CS 充满热情。
【问题讨论】:
两者有什么区别?
var=0
def abc():
和
def abc():
var=0
我对这个世界还很陌生,但我一直对 CS 充满热情。
【问题讨论】:
如果您将 var 放在函数之外,那么您的 cod 上的任何地方都可以看到,如果您放在函数下,您的 var 将仅在函数中以及使用该函数时可见
var1 = 10
def sum1(x):
return x + var1 # var1 is global so can be accessed from other functions
def sum2(x):
var2 = 12
return x + var2 # var2 can be only accessed from sum2 function
def sum3(x):
return var2 + x
print(sum1(10))
print(sum2(10))
print(sum3(10))
输出:
20
22
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-233-278acebe9c9f> in <module>
12 print(sum1(10))
13 print(sum2(10))
---> 14 print(sum3(10))
<ipython-input-233-278acebe9c9f> in sum3(x)
8
9 def sum3(x):
---> 10 return var2 + x
11
12 print(sum1(10))
NameError: name 'var2' is not defined
如您所见,sum3 会抛出 NameError: name 'var2' is not defined,因为 var2 只能从 sum2 函数中看到
【讨论】: