標籤:rgs 實參 reg color 調用函數 維護 span 運算式 函數
本節重點
掌握函數的作用、文法
掌握範圍、全域變數與局部變數知識
一.函數編程基礎知識
1.基本定義
函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需要調用函數名即可。
2.特性
?(1)減少重複代碼
?(2)使程式變得可擴充
?(3)使程式變得易維護
3.文法定義
def sayhi(): # 函數名 print("Hello,i‘m nobody!")
二.函數參數
1.形參變數
只有在被調用時才分配記憶體單元,在調用結束時,即可釋放所分配的記憶體單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
def stu_register(name,age,course,country) pass
2.實參
可以是常量、變數、運算式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳給形參。因此應預先用賦值,輸入等方法使參數獲得確定值。
stu_register(‘宋江‘,30,‘電腦‘,‘CN‘)
3.預設參數
? ?定義函數形參時,可以給形參一個預設值,這種參數就叫預設參數。規定預設參數必須在位置參數之後。
def stu_register(name,age,course,country="CN") pass
4.關鍵參數
?正常情況下,給函數傳參數要按順序,不想按順序就可以使用關鍵參數,只需指定參數名即可(指定了參數名的實參就是關鍵參數),但記住一個要求就是,關鍵參數必須放在位置參數(一位置順序確定對應關係的參數)之後。
stu_register(‘宋江‘,30,country=‘CN‘,course=‘電腦‘)
5.非固定參數
?若你的函數在定義時不確定使用者相傳多少個參數,就可以使用非固定參數。
def stu_register(name,age,*args): # *args以元組形式傳入 pass
def stu_register(name,age,*args,**kwargs): # *kwargs以字典形式傳入 pass
三.傳回值
?函數外部的代碼要想擷取函數的執行結構,就可以在函數裡使用return語句把結果返回。
def stu_register(name,age,course=‘PY‘,country=‘CN‘): # 註冊代碼 if 註冊成功: return True else: return False
?返回多個值時可以使用元群組類型
def stu_register(name,age,course=‘PY‘,country=‘CN‘): # 註冊代碼 if 註冊成功: return (True,s_id) else: return (False,失敗資訊)
四.全域與局部變數
在函數中定義的變數稱為局部變數,在程式的一開始定義的變數稱為全域變數。
全域變數範圍是整個程式,局部變數範圍是定義該變數的函數。
當全域變數與局部變數同名時,在定義局部變數的函數內,局部變數起作用;在其他地方全域變數起作用。
範圍
程式設計概念,通常來說,一段程式碼中所用到的名字並不總是有效 /可用的,而限定這個名字可用性的代 ? ?碼?範圍就是這個名字的範圍。
五.嵌套函數
函數定義在另一個函數體內,就叫嵌套函數。
name = ‘Alex‘def change_name(): name = ‘Alex2‘ def change_name2(): name = ‘Alex3‘ print("第三層列印",name) change_name2() # 調用內層函數 print("第二層列印",name)change_name()print("最外層列印",name)
六.匿名函數
? ?匿名函數就是不需要顯示的指定函數名
calc = lambda x,y:x**y
七.高階函數
?變數可以執行函數,函數的參數能接受變數,name一個函數就可以接受另一個函數作為參數,這種函數就稱之為高階函數。
?只需滿足一下任意一個條件,即時高階函數
接受一個或多個函數作為輸入
return 返回另一個函數
def add(x,y,f): return f(x) + f(y)res = add(3,-6,abs)print(res())
python學習之路 五:函數式編程