Python入门4
函數
函數其實在日常的編碼過程中,你都在使用,比如print()、input()、len()等函數,只不過這些都是python給你寫好的內置函數,供你是用,內置的函數數量有限,想讓python為我們做更多的事情,就需要自己設計符合的函數
1、減少重復代碼
2、使程序變的可擴展
3、使程序變得易維護
開始創建函數:
創建函數之前,我們先對創建函數的語法進行了解,見下圖
1、def 是關鍵字,不可缺少
2、函數名可以自己定義,不可缺少
3、參數:可選
4、retrun:可選
示例:
def hello():print('hello world')函數的調用
函數在定義完成后,自身無法進行允許,必須進行調用,比如我們把上邊的函數進行執行
hello()# 輸出 hello world函數的參數
在調用函數的時候,我們會往里面傳入一些值,放在函數的括號內,這個就叫參數,比如書寫如下函數:
def hello(name):print('hello ' + name)hello('Tom') hello('Jerry')# 輸出 hello Tom hello Jerry1、位置參數:
位置參數就是在調用函數的時候,形參和實參一一對應,不多也不少,這就是位置參數
def calc(x, y):print(x * y)calc(2, 3)2、關鍵參數
在有的時候,我們希望在調用的時候明確,我要把實參的值賦予給誰的時候,就需要是用關鍵參數,這個時候,你的參數順序可以隨意更換。
def calc(x, y):print(x * y)calc(x=2, y=3)3、非固定參數--*args
若你的函數在定義時不確定用戶想傳入多少個參數,就可以使用非固定參數
def test(*args):print(args)test('arg1', 'arg2', 'arg3')# 輸出 ('arg1', 'arg2', 'arg3')4、非固定參數--**kwargs
def test(**kwargs):print(kwargs)test(name='tom', age=18)# 輸出 {'age': 18, 'name': 'tom'}局部變量和全局變量
在被調用的函數內部使用的變量,屬于局部變量,處于該函數的"局部作用域",這個時候的變量,不能被外部是用,例如:
def test():count = 1print(count)# 輸出 NameError: name 'count' is not defined調用全局變量
count = 1def test():print(count)test()遞歸
遞歸(recursion):通俗的說,程序調用自身的編程技巧。函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。
遞歸特性:
1. 必須有一個明確的結束條件
2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少
3. 遞歸效率不高,遞歸層次過多會導致棧溢出(在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出)
def func(num):if num == 1:return 1return num * func(num - 1)x = func(7) print(x)?
轉載于:https://www.cnblogs.com/chen1930/p/6029386.html
總結
- 上一篇: 六个字的网名151个
- 下一篇: websocket python爬虫_p