Pythin语言的函数(中)
前情回顾:
上一篇文章,看似讲了不少,不过呢 讲来讲去围绕的都还是 括号里的一些内容( def xxx(): ),今天这篇文章呢,我们来讲一些哪些括号之外的 神奇世界。
在开始今天的内容之前,我们先回顾一下我们上一篇主要讲的核心案例:
# 求任意数的和
def fn(*nums):
result = 0
for x in nums:
result += x
print(result)
fn(2,9,7,3) # 21
向函数方法 fn() 内传递任意个数的参数,通过 for 循环将所有传递进来的参数 nums 通过 变量x 都 遍历 出来,并通过在 for 循环外预先设定好的 变量result 将所有遍历到的数据 相加,最后在 for 循环外将任意数的和 print(result) 出来。如果对这个开头有什么疑问的可以重新去看看我之前的文章。
那么,接下来我们要想哈:虽然我让这个函数为我们进行计算任意数的和,但是计算后的结果我们一定需要函数输出吗? 或者问:我们能不能把这个计算结果拿去 做别的我们需要的事情?
就上面的案例我们发现:我们把参数传递进去,计算完之后就通过 print( ) 语句把结果输出了。就上面的案例,输出的结果我们是否还无法拿去做别的事情;最起码的上面的案例是做不到的。为什么?因为这个 变量result 我们都没拿到,它至始至终都在函数的内部;无法做到 我想让它计算它就计算,我想让它打印,它就打印,无法做到明确控制。
讲到这,下面就开始我们今天的要讲几个主要内容。
1. 函数的返回值
返回值就是函数执行以后返回的结果;
通过 return 来指定函数的返回值;
我们可以通过一个变量来接收函数的返回值,或者可以直接函数来使用函数的返回值;
参考实例:
1) 单纯的打印一个有返回值的函数是不会有任何的结果的;
def fn():
return 100
fn() #
2) 我们可以通过一个变量来接收函数,直接打印变量里的函数返回值;
def fn():
return 100 # int
r = fn()
print(r) # 100
print(fn()) # 100
#-------------------------------------------------------------------------------
def fn():
return 'Python' # str
r = fn()
print(r) # Python
print(fn()) # Python
#-------------------------------------------------------------------------------
def fn():
return [1, 2, 3] # 列表
r = fn()
print(r) # [1, 2, 3]
print(fn()) # [1, 2, 3]
#-------------------------------------------------------------------------------
def fn():
return {
'name':'张三'} # 字典
r = fn()
print(r) # {'name':'张三'}
print(fn()) # {'name':'张三'}
#-------------------------------------------------------------------------------
def fn():
def fn2():
print('Hello')
return fn2
r = fn()
print(r) # <function fn.<locals>.fn2 at 0x000001648ED80940>
print(fn()) # <function fn.<locals>.fn2 at 0x0000018DEE630A60>
r() # Hello
通过以上实例,我们还得出一个结论:return 后面可以跟 任意对象 ,返回值 甚至 可以是一个 函数。
重点:如果函数里仅仅只写一个 return 或者不写 return ,则相当于函数 return Noun。
def fn():
return
r = fn()
print(r) # None
#-------------------------------------------------------------------------------
def fn():
print('Hello')
print('123')
r = fn()
print(r) # Hello
# 123
# None
在函数中,执行到 return 以后就要 返回结果 了,换个解释方式:return 以后的所有代码块将 不会执行;return 一旦执行,函数将 自动结束。(到这里,大家有没有发现:这个 return 和我们之前的 5. Python 条件控制语句细解 里讲到的循环函数 break 很相似啊)
参考实例:
def fn():
print('Hello')
return
print('123')
r = fn() # Hello
#-------------------------------------------------------------------------------
def fn():
for i in range(5):
if i == 3:
break
print(i)
print('循环执行完毕')
fn()
# 0
# 1
# 2
# 循环执行完毕
#-------------------------------------------------------------------------------
def fn(