1. 程式人生 > >05-python基礎知識-函式基礎

05-python基礎知識-函式基礎

函式基礎

函式簡介

  • 定義:具有特定功能的一段程式碼。
  • 優點:
    • 可以減少程式碼的重複書寫
    • 可以將功能的實現著和使用者分開,提高開發效率
  • 分類:
    • 庫函式:print、input、type等
    • 自定義:使用者自己封裝的函式

函式使用

  • 基本格式:

    def 函式名([引數列表]):
    	函式體
    
  • 函式名:

    • 像變數名一樣,只要符合識別符號命名規範即可。
  • 函式呼叫:

    • 呼叫格式:函式名([引數])
    • 說明:函式不呼叫是不執行的,只有呼叫後才會執行

函式分類

  • 說明:按照有無引數及返回值來分

  • 示例:

    # 無參無返回值
    def print_ten_hello():
        for i in range(10):
            print('hello world!')
    
    # 無參:呼叫時無需傳引數
    # 無返回值:執行完函式的返回值為None
    # None的一個作用是為了不報錯,僅僅只是這樣
    # ret=print_ten_hello()
    # print(print_ten_hello())
    
    #
    # 帶參無返回值
    def print_n_hello(n):
        for i in range(
    n): print('hello world!') # 需要傳遞引數 print_n_hello(3) # 帶參有返回值 def add(a, b): ret = a+b # 使用關鍵字return返回內容 # 一旦執行return,函式立即結束 # return後面會返回函式返回值 return ret print(add(3,5))

函式引數

  • 形參:形式引數,就是寫在函式定義處的引數。

  • 實參:實際引數,就是在函式呼叫時傳遞的引數。

  • 位置引數:函式定義時沒有預設值的引數,也叫必傳引數。呼叫時實參與定義時的形參要一一對應

  • 預設引數:函式定義時有預設值的引數,呼叫函式時可以不傳遞該引數。預設引數需要放在末尾

  • 關鍵字引數:函式呼叫時指定引數的名字,引數的位置就無需考慮。

  • 可變長度引數:

    def var_len_args(a, b, *args, name='二狗', **kwargs):
        print(a, b)
        # 是一個元組,用於儲存多傳的位置引數
        print(args)
        # 是一個字典,用於儲存多傳的關鍵字引數
    
  • *的使用

    def show(a, b=8):
        print(a, b)
        
    lt = [2, 3]
    # show(lt[0], lt[1])
    # 與上式等價,*是將列表展開,然後作為位置引數傳遞給函式
    show(*lt)
    
    d = {'a': '大花', 'b': 18}
    # show(a=d['a'], b=d['b'])
    # 與上式等價,**式將字典展開,然後作為關鍵字引數傳遞給函式
    show(**d)
    

函式進階

  • 函式定義的位置是隨意的嗎?
    • 不是,函式呼叫一定要放在定義之後,也就是先定義再呼叫。
  • 函式的名字是否可以相同?
    • 不可以,雖然語法不報錯,但是後者會覆蓋前面的同名函式。
  • 函式內部能否定義另一個函式?
    • 能,函式內部定義的函式叫內部函式,它是很多高階功能實現的基礎。

常用函式

  • 內建函式(無需匯入)

    print:列印,輸出
    input:輸入
    type:獲取型別
    len:統計元素個數
    range:產生連續的整數物件
    enumerate:列舉可迭代物件
    ord:字元轉ASCII
    chr:ASCII轉字元
    abs:求絕對值
    
    型別轉換:int、float、str、bool、set、list、tuple、dict
    
    max:最大值
    min:最小值
    sum:求和
    pow:求冪
    round:四捨五入
    
    hex:十六進位制
    oct:八進位制
    bin:二進位制
    
  • 模組函式(需要匯入)

    import time
    #
    # while True:
    #     print('Hello world!')
    #     time.sleep(1)
    
    import math
    
    print(math.e)
    print(math.pi)
    print(math.ceil(3.1))
    print(math.floor(3.9))
    print(math.sqrt(4))
    # 度轉換為弧度
    print(math.radians(360))
    # 弧度轉換為度
    print(math.degrees(math.pi))
    
    import sys
    
    # 是一個列表,儲存所有的命令列引數
    print(sys.argv)