首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python3.0中,函数不返回任何值,因为除非我们使用返回语句,否则函数不会存储它的输出。

在Python3.0中,函数不返回任何值,因为除非我们使用返回语句,否则函数不会存储它的输出。
EN

Stack Overflow用户
提问于 2022-07-17 23:11:35
回答 3查看 194关注 0票数 -2

在Python中,函数是否只是执行它的代码块&而不是存储它,除非我们使用返回语句?

当我们打印变量和表达式时,我理解我们是在打印值。

因此,我认为一个函数执行它的代码块&除非我们返回它,否则不会保存这个结果。这就是电脑里发生的事吗?

代码语言:javascript
运行
复制
 Example 1  
def add(a,b):
 nums = a + b

print(add(2,4)+2)
Error

但是,当我们使用返回值语句时,它可以工作。

代码语言:javascript
运行
复制
 Example 2
def add(a,b):
 nums = a + b
 return nums

print(add(2,4) + 2)
Output: 8

错误是在第一个示例中引起的,因为函数刚刚执行了它的代码块&没有保存结果,因此导致了一个错误,原因是不能将任何一个添加到整数(2)中?&它在示例2中有效,因为我们保存函数的结果,返回语句给了我们一个整数;因此允许print语句打印函数整数的结果+我们在表达式中添加的整数?

EN

回答 3

Stack Overflow用户

发布于 2022-07-17 23:30:53

在python中,函数是代码块,它们执行某种类型的逻辑(有时基于传递给它们的参数,有时不基于参数)。它们非常广泛,可以做许多不同的事情,取决于它们是如何构造的。我不太清楚您所说的“存储结果”是什么意思,但希望下面的一些解释会有所帮助。

函数中创建的所有变量都以“本地”范围存储,这意味着它们只有在函数运行时才存在,并且在函数终止时被删除。例如,在下面的代码中,不能在函数终止后访问变量x

代码语言:javascript
运行
复制
def example():
    x = 'Hello World'
    print(x) #This prints: Hello World
example()
print(x) #This will give you a Reference error 

如果这就是你所说的“存储结果”的意思,那么你是对的:那些结果将不会被存储。但是,您可以将函数中的变量声明为全局变量,这意味着它也可以在函数之外被访问:

代码语言:javascript
运行
复制
def example():
    global x = 'Hello World'
    print(x) #This prints: Hello World
example()
print(x) #This prints: Hello World

当您在函数中使用return语句时,您只是告诉编译器,如果变量设置为该函数的函数调用,则返回语句后面的任何内容都应该设置为该变量的值。但是,简单地返回一个值并不会“存储”它。请参阅下列代码:

代码语言:javascript
运行
复制
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位于全局范围内,这就是为什么这不会导致错误。

票数 0
EN

Stack Overflow用户

发布于 2022-07-17 23:39:55

欢迎来到堆栈溢出。在我学习编程的时候,它帮助我想到了函数的调用,用数学中的变量进行类比。在大多数语言中,您可以将函数调用中的return值替换为“替代”,这与将文字数字替换为变量的方式相同。

在数学中,你可以这样做:

代码语言:javascript
运行
复制
m = 4
b = 2

y = m * x + b  # Plug 4 and 2 in for "m" and "b"
y = 4 * x + 2

返回值的函数也是一样的:

代码语言:javascript
运行
复制
def foo():
    return 'bar'
代码语言:javascript
运行
复制
>>> x = foo() # Plug the return value 'bar' in for "foo()"
>>> x
'bar'

在Python中,当函数没有显式的return时,默认的返回值是None。所以:

代码语言:javascript
运行
复制
def foo():
    print('bar')
    # No return, so Python implicitly returns None
代码语言:javascript
运行
复制
>>> x = foo() # Plug the return value None in for "foo()"
'bar'
>>> x
None
票数 0
EN

Stack Overflow用户

发布于 2022-07-17 23:20:09

函数定义局部变量,甚至与全局变量同名,因此当它执行时,如果不返回某项内容或将结果存储在全局变量中,则结果不会出现在函数示例之外。

代码语言:javascript
运行
复制
x = 10
def test():
   x= 15
test()
print(x) # result 10

但是,如果使用全局关键字,您可以访问全局变量,如下所示

代码语言:javascript
运行
复制
x = 10
def test():
   global x
   x= 15
test() 
print(x) #result 15

或者如果您返回的值

代码语言:javascript
运行
复制
x = 10
def test():
  x= 15
  return x
x = test()
print(x) #result 15
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73015977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档