『無為則無心』Python函數 — 27、Python函數的返回值

1、返回值概念

例如:我們去超市購物,比如買飲料,給錢之後,是不是售貨員會返回給我們飲料這個商品。在函數中,如果需要返回結果給用戶,就需要使用函數返回值。

換句話說,返回值就是函數執行以後返回的結果。

def buy():
    # return返回結果給函數調用的地方
    return '煙'

# 使用變量保存函數返回值
goods = buy()
print(goods)

2、return關鍵字的作用

  1. 負責函數返回值。
  2. 退出當前函數:導致return下方的所有代碼(函數體內部)不執行。

示例如下

需求:製作一個計算器,計算任意兩數字之和,並保存結果。

def sum_num(a, b):
    return a + b

# 用result變量保存函數返回值
result = sum_num(1, 2)
print(result)

3、返回值可以返回的數據類型

return後邊跟什麼值,函數就會返回什麼值。

return後邊可以跟任意的對象,返回值甚至可以是一個函數。

# 示例1:可以返回任何對象
def fn():
    return 123  # 123
    # return 'Hello'  # Hello
    # return [1,2,3]  # [1, 2, 3]
    # return {'k':'v'}  # {'k': 'v'}

r = fn()
print(r)


# 2.返回一個函數
def fn():
    def fn2():
        print('hello')
    return fn2

r = fn()
# 結果:<function fn.<locals>.fn2 at 0x0000000002C24828>
print(r)
# 也可以直接調用整個函數
# 結果:hello
r()

# 3.如果僅僅寫一個return 或者 不寫return,
# 則相當於return None 
def fn2():
    a = 10
    return

r = fn2()
print(r)  # None

4、函數如何返回多個值

思考:如果一個函數如些兩個return,程序如何執行?

如下所示:

def return_num():
    return 1
    return 2

result = return_num()
print(result)  # 1

答:只執行了第一個return,原因是因為return可以退出當前函數,導致函數中return下方的代碼都不執行,return一旦執行函數自動結束。

思考:如果一個函數要有多個返回值,該如何書寫代碼?

def return_num():
    return 1, 2

# 返回一個元組
result = return_num()
print(result)  # (1, 2)

注意:

  1. return a, b寫法,返回多個數據的時候,默認是元組類型。
  2. return後面可以連接列表、元組或字典,以返回多個值。

示例

def return_num():
    # 直接返回一個元組
    # return (1, 2) # (1, 2)
    # 直接返回一個列表
    # return [100, 200] # [100, 200]
    # 直接返回一個字典
    return {'name': 'Python', 'age': 30}

result = return_num()
print(result)  # {'name': 'Python', 'age': 30}

5、fn5fn5()的區別

def fn5():
    return 10


print(fn5)  # <function fn5 at 0x00000000029D5798>
print(fn5())  # 10
  • fn5是函數對象,打印fn5實際是在打印函數對象 <function fn5 at 0x05771BB8>
  • fn5()是在調用函數,打印fn5()實際上是在打印fn5()函數的返回值 10。

6、總結:

  • break:用來退出當前循環。
  • continue:用來跳過當次循環。
  • return:用來結束函數。