Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 功能赢得';不要存储值_Python_Scope - Fatal编程技术网

Python 功能赢得';不要存储值

Python 功能赢得';不要存储值,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 关于

我正在尝试编写一个带有函数的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

关于如何在函数中不使用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
的变量是不好的做法,因为。