好程式設計師Python培訓分享函式返回值的示例程式碼詳解

好程式設計師發表於2020-12-01

   文中透過示例程式碼介紹的非常詳細,下面我們一起來看一下吧。

0x  00 返回值簡介

   回顧下,上一節簡單介紹了函式及其各種引數,其中也有簡單介紹print return 的區別, print 僅僅是列印在控制檯,而 return 則是將 return 後面的部分作為返回值作為函式的輸出,可以用變數接走,繼續使用該返回值做其它事。

 

函式需要先定義後呼叫,函式體中return 語句的結果就是返回值。如果一個函式沒有 reutrn 語句,其實它有一個隱含的 return 語句,返回值是 None ,型別也是 'NoneType'

 

return 語句的作用:結束函式呼叫、返回值

 

0x   01 指定返回值與隱含返回值

 

函式體中return 語句有指定返回值時返回的就是其值

 

函式體中沒有return 語句時,函式執行結束會隱含返回一個 None 作為返回值,型別是 NoneType ,與 return returnNone 等效,都是返回 None

 

指定return 返回值函式舉例:

 

def showplus(x):

  print(x)

  return x + 1

    

num = showplus(6)

add = num + 2

print(add)

 

輸出結果:

 

6

9

 

隱含returnNone 舉例:

 

def showplus(x):

  print(x)

  

num = showplus(6)

print(num)

print(type(num))

 

輸出結果:

 

6

None

<class 'NoneType'>

 

0x02return 語句位置與多條 return 語句

 

python 函式使用 return 語句返回 " 返回值 " ,可以將其賦給其它變數作其它的用處

 

所有函式都有返回值,如果沒有return 語句,會隱式地呼叫 returnNone 作為返回值

 

一個函式可以存在多條return 語句,但只有一條可以被執行,如果沒有一條 reutrn 語句被執行,同樣會隱式呼叫 returnNone 作為返回值

 

如果有必要,可以顯式呼叫returnNone 明確返回一個 None( 空值物件 ) 作為返回值,可以簡寫為 return ,不過 python 中懶惰即美德,所以一般能不寫就不寫

 

如果函式執行了return 語句,函式會立刻返回,結束呼叫, return 之後的其它語句都不會被執行了

 

舉例1

 

def showplus(x):

  print(x)

  return x + 1

  print(x + 1) # 該語句會執行麼

print(showplus(6))

 

輸出結果:

 

6

7

 

舉例2

 

def showplus(x):

  print(x)    # 5

  return x + 1  # 6

  return x + 2  # 該語句也不會被執行

print(showplus(5))

 

輸出結果:

 

5

6

 

舉例3

 

def guess(x):

  if x > 3:

    return "> 3"

  else:

    return "<= 3"

print(guess(10))

print(guess(2))

 

輸出結果:

 

> 3

<= 3

 

舉例4:

 

# for .. else .. 語句 (意外終止情況)

# 表示如果 for 語句段的內容正常迴圈結果才會執行 else 段的語句,如果 for 在迴圈過程中時被 break 或者 return 語句意外終止迴圈,就不會執行 else 段中的語句。

def fn(x):

  for i in range(x):

    if i > 4:

      return i

  else:

    print("{} is not greater than 4".format(x))

print(fn(3))

print(fn(6))

 

返回結果:

 

is not greater than 4

None

 

0x03 返回值型別

 

無論定義的是返回什麼型別,return 只能返回單值,但值可以存在多個元素。

 

return[1,3,5] 是指返回一個列表,是一個列表物件, 1,3,5 分別是這個列表的元素

 

return1,3,5 看似返回多個值,隱式地被 Python 封裝成了一個元祖返回

 

舉例1

 

def fn():

  return 3  # 單值時,返回的是什麼型別

   

print(fn())

print(type(fn()))

 

輸出結果:

 

<class 'int'>    #int 整數型別

 

舉例2

 

def showlist():

  return [1,3,5]  # 多元素,返回的是什麼型別

print(type(showlist()))

print(showlist())

 

輸出結果:

 

<class 'list'>

[1, 3, 5]    # 列表型別

 

舉例3

 

def showlist():

  return (2,4,6)  # 多元素,返回的是什麼型別

print(type(showlist()))

print(showlist())

輸出結果:

<class 'tuple'>    # 元祖型別

(2, 4, 6)

 

舉例4

 

def showlist():

  return 2,4,6  # 多值時,不指定型別

print(type(showlist()))

print(showlist())

輸出結果:

<class 'tuple'>    # 預設封裝成元祖型別

 

0x04 函式巢狀

 

函式有可見範圍( 內外可見關係 ) ,這就是作用域的概念。

 

內部函式不能被外部直接呼叫,會拋異常NameError

 

舉例1

 

def outer():

  def inner(): # 可以理解為內部函式

    print("inner")

  print("outer")

outer()

輸出結果:

outer

 

此時如果呼叫outer() ,只會執行 print("outer") ,因為 inner 雖然在 outer 函式內,但它也是一個函式,函式如果要呼叫,就必須用 ' 函式名 ()' 方式。

 

舉例2

def outer():

  def inner():

    print("inner")

  print("outer")

inner()  # 外部無法引用內部函式,內部函式只在本地作用域有效

輸出結果,丟擲異常:

Traceback (most recent call last):

  File "C:/python/return_value.py", line 6, in <module>

    inner()

NameError: name 'inner' is not defined

 

舉例3

 

def outer():

  def inner():

    print("inner")

  print("outer")

  inner()

outer()

輸出結果:

outer

inner

 

此節介紹了函式的返回值、返回值的作用,指定與不指定返回值時的不同,返回值型別,以及函式巢狀時返回值的使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2738495/,如需轉載,請註明出處,否則將追究法律責任。

相關文章