Python 功能赢得';不要存储值
我正在尝试编写一个带有函数的Python脚本 下面的代码按预期工作,它打印3Python 功能赢得';不要存储值,python,scope,Python,Scope,我正在尝试编写一个带有函数的Python脚本 下面的代码按预期工作,它打印3 def function(a,b): k = a+b print(k) a = 1 b = 2 function(a,b) 但是,当我像这样将print语句移到函数外时,它将不起作用 def function(a,b): k = a+b a = 1 b = 2 function(a,b) print(k) # -> NameError: name 'k' is not defined 关于
def function(a,b):
k = a+b
print(k)
a = 1
b = 2
function(a,b)
但是,当我像这样将print语句移到函数外时,它将不起作用
def function(a,b):
k = a+b
a = 1
b = 2
function(a,b)
print(k) # -> NameError: name 'k' is not defined
关于如何在函数中不使用print语句并使代码继续工作,您有什么想法吗?
k
是函数中定义的局部变量
案例1:只需返回即可:
def function(a,b):
k = a+b
return k # just return, does not make it global
a = 1
b = 2
k = function(a,b)
# 3
print(k) # variable was returned by the function
def function(a,b):
global k #makes it global
k = a+b
function(a,b)
print(k) # it is global so you can access it
案例2:全球化:
def function(a,b):
k = a+b
return k # just return, does not make it global
a = 1
b = 2
k = function(a,b)
# 3
print(k) # variable was returned by the function
def function(a,b):
global k #makes it global
k = a+b
function(a,b)
print(k) # it is global so you can access it
请阅读更多内容,而不是设置全局变量(全局变量通常不好),为什么不返回结果并打印出来呢 差不多
def function(a,b)
return a+b
print(function(1,2))
好的,但是返回
k
不是更好的方法吗?没有理由帮助初学者成功地编写糟糕的代码。我同意@JohnColeman的观点。这似乎不是OP想要或需要的东西。@Alexander Cécile我怀疑这就是OP想要的东西(也许不知道),尽管他们不应该被鼓励这样的欲望。另一方面,global
有一些有效的用例,所以让他们知道这一点并没有什么坏处。我同意return语句。我已经编辑了我的answer@JohnColeman当然有一些有效的用例,但事实上也没有。你是对的,我们不能确定OP想要什么。请注意,“它不会工作”不是一个有用的问题陈述。在这种情况下,错误是显而易见的,因此我为您添加了它,但在将来,它将有助于生成a.BTW。顺便说一句,在函数内外都有名为a
和b
的变量是不好的做法,因为。