在Python中,函数是否只是执行它的代码块&而不是存储它,除非我们使用返回语句?
当我们打印变量和表达式时,我理解我们是在打印值。
因此,我认为一个函数执行它的代码块&除非我们返回它,否则不会保存这个结果。这就是电脑里发生的事吗?
Example 1
def add(a,b):
nums = a + b
print(add(2,4)+2)
Error但是,当我们使用返回值语句时,它可以工作。
Example 2
def add(a,b):
nums = a + b
return nums
print(add(2,4) + 2)
Output: 8错误是在第一个示例中引起的,因为函数刚刚执行了它的代码块&没有保存结果,因此导致了一个错误,原因是不能将任何一个添加到整数(2)中?&它在示例2中有效,因为我们保存函数的结果,返回语句给了我们一个整数;因此允许print语句打印函数整数的结果+我们在表达式中添加的整数?
发布于 2022-07-17 23:30:53
在python中,函数是代码块,它们执行某种类型的逻辑(有时基于传递给它们的参数,有时不基于参数)。它们非常广泛,可以做许多不同的事情,取决于它们是如何构造的。我不太清楚您所说的“存储结果”是什么意思,但希望下面的一些解释会有所帮助。
函数中创建的所有变量都以“本地”范围存储,这意味着它们只有在函数运行时才存在,并且在函数终止时被删除。例如,在下面的代码中,不能在函数终止后访问变量x:
def example():
x = 'Hello World'
print(x) #This prints: Hello World
example()
print(x) #This will give you a Reference error 如果这就是你所说的“存储结果”的意思,那么你是对的:那些结果将不会被存储。但是,您可以将函数中的变量声明为全局变量,这意味着它也可以在函数之外被访问:
def example():
global x = 'Hello World'
print(x) #This prints: Hello World
example()
print(x) #This prints: Hello World当您在函数中使用return语句时,您只是告诉编译器,如果变量设置为该函数的函数调用,则返回语句后面的任何内容都应该设置为该变量的值。但是,简单地返回一个值并不会“存储”它。请参阅下列代码:
def example():
x = 'Hello World'
return x
example()
print(x) #This will still cause a reference error
x = example()
print(x) #This prints: Hello World关于上面的代码,最后要注意的一点是:只要两个变量在不同的作用域中,它们就可以具有相同的名称而不会导致错误。函数中的x位于本地作用域中,而函数外部的x位于全局范围内,这就是为什么这不会导致错误。
发布于 2022-07-17 23:39:55
欢迎来到堆栈溢出。在我学习编程的时候,它帮助我想到了函数的调用,用数学中的变量进行类比。在大多数语言中,您可以将函数调用中的return值替换为“替代”,这与将文字数字替换为变量的方式相同。
在数学中,你可以这样做:
m = 4
b = 2
y = m * x + b # Plug 4 and 2 in for "m" and "b"
y = 4 * x + 2返回值的函数也是一样的:
def foo():
return 'bar'>>> x = foo() # Plug the return value 'bar' in for "foo()"
>>> x
'bar'在Python中,当函数没有显式的return时,默认的返回值是None。所以:
def foo():
print('bar')
# No return, so Python implicitly returns None>>> x = foo() # Plug the return value None in for "foo()"
'bar'
>>> x
None发布于 2022-07-17 23:20:09
函数定义局部变量,甚至与全局变量同名,因此当它执行时,如果不返回某项内容或将结果存储在全局变量中,则结果不会出现在函数示例之外。
x = 10
def test():
x= 15
test()
print(x) # result 10但是,如果使用全局关键字,您可以访问全局变量,如下所示
x = 10
def test():
global x
x= 15
test()
print(x) #result 15或者如果您返回的值
x = 10
def test():
x= 15
return x
x = test()
print(x) #result 15https://stackoverflow.com/questions/73015977
复制相似问题