前言
函數是我們所熟知的,在python中函數的定義格式如下:
def 函數名(形式參數):
? 函數體
? 函數的封裝就是實現代碼塊的復用,python內置了一些基礎的函數,開發者也可以自己定義函數,函數只能先定義,再進行調用。
一、函數調用的步驟
1、程序遇到函數調用的情況時,暫停執行
2、將實際參數值傳遞給函數參數
3、執行函數體語句
4、返回值并繼續向下執行
二、參數的打包和解包
打包
? 參數的打包指的是多個參數可以同時處理,也叫可變長度參數, 可變長度參數在定義函數時主要有兩種形式*parameter和**parameter,前者用來接受任意多個參數并將其放在一個元組當中,后者接收多個關鍵參數組成鍵值對并將其放在字典當中。
打包為元組
1
2
3
4
5
|
def demo( * p): print (p) demo( 1 , 2 , 3 , 4 , 5 , 6 ) #結果 ( 1 , 2 , 3 , 4 , 5 , 6 ) |
打包為字典
1
2
3
4
5
|
def demo( * * p): print (p) demo(x = 1 ,y = 2 ,z = 3 ) #結果 { 'x' : 1 , 'y' : 2 , 'z' : 3 } |
#參數的打包就是將形參設為*參數名形式,實參為多個參數,這是后會將多個參數處理為元組或字典的可迭代對象,是把個體打包為整體。
解包
? 與參數的打包相對應,參數的解包同樣也有s和**s兩種形式,調用含有多個位置參數的函數時,可以使用列表,元組,集合等可迭代對象作為實參,在實參名前面加一個,Python會自動對其進行解包,并把序列中的值分別傳遞給多個形參變量。
1
2
3
4
5
6
|
def demo(a,b,c,d): print (a + B * c / d) list1 = [ 1 , 2 , 3 , 4 ] demo( * list1) #結果 2.5 |
? 如果實參是一個字典,可以使用**參數名的形式對其進行解包操作,會把字典轉換成為類似關鍵參數的形式進行參數傳遞。對于這種形式的序列解包,要求實參字典中的所有鍵必須是函數形參的名稱,或者與函數中兩個型號的可變長度參數相對應。
1
2
3
4
5
6
|
s = { 'a' : 1 , 'b' : 2 , 'c' : 3 } def demo(a,b,c = 4 ) print (a,b,c) demo( * * s) #結果 1 2 3 |
三、變量的作用域
變量的作用域就是變量能夠作用的空間
變量按照作用域劃分:全局變量,局部變量
全局變量:在函數體外定義的變量為全局變量
全局變量在函數內外都能夠使用,但在函數內不能直接修改全局變量, 如果在函數內修改全局變量,必須添加 global 關鍵字(python不推薦在函數內修改全局變量的值)
局部變量:在函數內定義的變量為局部變量
局部變量是在函數內定義的變量,在函數體外局部變量是無效的
在函數內定義的局部變量和函數外定義的全局變量是兩個概念(變量同名)
1
2
3
4
|
a = 1 def sum () a = 3 #這里函數外的a和函數內的a是兩個變量 |
四、變量的文檔注釋和變量名
1、函數doc文檔
函數doc文檔是用于描述函數功能,是函數內的特殊注釋
1
2
3
4
5
|
def sum (a,b): ''' 返回兩個數的和 ''' return a + b |
2、函數名的獲取
__name__方法
1
2
3
|
>>> print ( print .__name__) print >>> |
3、函數doc文檔的獲取
__doc__方法
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/zhangjiachen2001/article/details/121482318