05-python基礎知識-函式基礎
阿新 • • 發佈:2018-12-27
函式基礎
函式簡介
- 定義:具有特定功能的一段程式碼。
- 優點:
- 可以減少程式碼的重複書寫
- 可以將功能的實現著和使用者分開,提高開發效率
- 分類:
- 庫函式: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(
函式引數
-
形參:形式引數,就是寫在函式定義處的引數。
-
實參:實際引數,就是在函式呼叫時傳遞的引數。
-
位置引數:函式定義時沒有預設值的引數,也叫必傳引數。呼叫時實參與定義時的形參要一一對應
-
預設引數:函式定義時有預設值的引數,呼叫函式時可以不傳遞該引數。預設引數需要放在末尾
-
關鍵字引數:函式呼叫時指定引數的名字,引數的位置就無需考慮。
-
可變長度引數:
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)