在Python 3.0中,函数返回none,因为函数不存储它的输出,除非我们使用return语句? &



在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

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

在python中,函数是执行某种逻辑的代码块(有时基于传递给它们的参数,有时不是)。它们非常广泛,可以根据它们的构造方式做许多不同的事情。我不太确定你所说的"存储结果"是什么意思。但希望下面的一些解释会有所帮助。
在函数中创建的所有变量都与"local"作用域,这意味着它们仅在函数运行时存在,并在函数终止时删除。例如,在下面的代码中,在函数结束后不能访问变量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在全局作用域中,这就是为什么不会导致错误的原因。

欢迎使用Stack Overflow。当我学习编程时,它帮助我将函数调用类比为数学中的变量。在大多数语言中,你可以想到"替换"。

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

函数定义局部变量甚至与全局变量相同的名称,所以当它执行时,如果你不返回一些东西或将结果存储在全局变量中,结果不会出现在函数外部示例

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 15

相关内容