day-10

1. 函數的定義

  • 語法框架

    # 函數的定義階段:函數定義過程,只檢測語法,不執行裏面的代碼
    def 函數名(等同於變量名)():
        """對函數(工具)的描述信息"""
      代碼塊(實現函數功能的代碼)
    # 函數的使用階段
    func()  # 執行函數裏面的代碼

    例如:函數

    def func1():
        '''打印hello,world!'''
        print('hello,world!')
    
    
    func1()
    # print(func1.__doc__) # 能夠打印出函數的功能

    運行結果:工具

    hello,world!
    # 打印hello,world!
    
    Process finished with exit code 0

2. 定義函數的三種形式

參數:函數用來接收外部信息的媒介。同變量名。code

  • 空函數it

    定義一個函數,但不作任何事情,只是用來佔個位置,先實現其餘功能,將來進行補充,能夠用來搭建項目框架。class

    def func1():
        pass
    
    def func2():
        pass
    
    def func3():
        pass
    
    ……
  • 有參函數變量

    在函數定義階段,括號內有參數,這個函數就是有參函數。數據類型

    定義時有參,調用時就必須得傳參。語法

    def guess(x, y):
        """給定兩個數,打印較大的數"""
    
        if x > y:
            print(x)
        else:
            print(y)
    
    
    guess(50, 20)

    運行結果:

    50
    
    Process finished with exit code 0
  • 無參函數

    在函數定義階段,括號內沒有參數,這個函數就是無參函數。

    定義時無參,調用時就不用傳參。

    def func():
        '''打印hello,world!'''
        print('hello,world!')
    
    
    func()

    運行結果:

    hello,world!
    
    Process finished with exit code 0

3. 函數的返回值

返回值:返回一個值(函數的返回值能夠是任意數據類型)

def max_num():
      """給定兩個數,打印較大的數"""
      x = 20
      y = 30
      if x > y:
          return x
      else:
          return y
  
  
  num = max_num()
  print('num:', num)

運行結果:

num: 30
  
  Process finished with exit code 0

return的特性:

  1. return 返回一個返回值,若是沒有返回值,返回None

    def func():
        return   # 沒有返回值
    
    
    print(func())

    運行結果:

    None
    
    Process finished with exit code 0
    def func():
     return 1    # 有返回值
    
    
    print(func())

    運行結果:

    1
    
    Process finished with exit code 0
  2. 沒有return 默認返回None

    def func():
        pass # 沒有return
    
    
    print(func())

    運行結果:

    None
    
    Process finished with exit code 0
  3. return 會終止函數,不運行下面的代碼,假設有多個return的時候,運行到第一個就會結束,不會運行第二個

    def max_num():
        """給定兩個數,打印較大的數"""
        return 1 # 下面的代碼不會執行
        x = 20
        y = 30
        if x > y:
            return x
        else:
            return y
    
    
    num = max_num()
    print('num:', num)

    運行結果:

    num: 1
    
    Process finished with exit code 0
  4. return 經過逗號隔開,能夠返回多個值,返回值以元組的形式接收

    def func():
        return 1,2,[3,4] # 多個return
    
    
    print(func())
    print(type(func()))

    運行結果:

    (1, 2, [3, 4])
    <class 'tuple'>
    
    Process finished with exit code 0

4. 函數的參數

4.1 形參

函數定義階段產物,具備描述意義,用來接收實參傳的值。

  • 位置形參

    調用函數時,從左到右依次接收實參的值

    def fun1(x, y, z):    # 位置形參:x,y,z
        print(x, y, z)
    
    
    fun1(1, 2, 3) # 調用函數階段,按照1,2,3的順序分別將值傳給x,y,z

    運行結果:

    1 2 3
    
    Process finished with exit code 0
  • 默認形參

    1. 調用函數時,若是不給默認形參傳值,則使用默認值;若是傳值,則使用傳的值
    2. 默認形參必須放在位置形參的後面
    def fun1(x, y, z=0):  # 位置形參:x,y;默認形參 z = 0
        print(x, y, z)
    
    
    fun1(1, 2, 3)  # 調用函數階段,按照1,2,3的順序分別將值傳給x,y,z
    fun1(1, 2)    # 調用函數階段,按照1,2 的順序分別將值傳給x,y;z使用默認值 0

    運行結果:

    1 2 3
    1 2 0
    
    Process finished with exit code 0

4.2 實參

函數調用階段的產物,有具體的值,將值傳給形參。

  • 位置實參

    從左到右依次傳值給位置形參,和位置形參必須一一對應

    def fun1(x, y, z):    # 位置形參:x,y,z
        print(x, y, z)
    
    
    fun1(1, 2, 3) # 調用函數階段,按照1,2,3的順序分別將值傳給x,y,z
  • 關鍵字實參

    1. 按照形參名將值傳給形參(使用狀況基本爲 0 )
    2. 關鍵字實參必須寫在位置實參的後面
    def fun1(x, y, z):  # 位置形參:x,y,z
        print(x, y, z)
    
    
    fun1(3, z=2, y=1)  # 調用函數階段,位置實參按照順序傳值給位置形參 ,關鍵字實參按照形參名傳值

    運行結果:

    3 1 2
    
    Process finished with exit code 0
相關文章
相關標籤/搜索