我們在程式設計過程中經常會遇到同樣功能的**不斷地出現,使得程式設計成為枯燥無味的複製貼上過程的迴圈。為了找樂子 讓**變得精簡。我們需要函式來幫助我們。
函式就是完成特定功能的**塊,本質上是對**的封裝。
函式的語法格式為:
def 函式名(引數)
: **段 # 函式體
需要注意的是,函式名的命名規則與變數的命名規則一致。
函式名以數字、字母和下劃線組成,不能以數字開頭,不能與系統關鍵字重名,區分大小寫。
函式名最好不要跟系統函式重名,否則,系統函式會被覆蓋。
形參就是函式定義時小括號裡的變數,實參就是函式呼叫的時候小括號裡的表示式。例如,
def
add(a, b)
:return a + b
res = add(3,
5)
上面這段**中a和b就是函式add()的形參,而3和5就是函式add()的實參。
注意:函式可以沒有實參和形參。
def
hello()
:print
("hello world"
)hello(
)
執行結果如下:
hello world
這個hello()函式是沒有形參的,同時在函式呼叫時,我們也無需給hello()函式實參。
2.2.1.位置引數
位置引數是python函式中最常用到的引數之一。位置引數要求實參順序必須和形參順序完全一致,並且一一對應。例如:
def
intro
(name, age)
:print
("我是{},今年{}歲了。"
.format
(name, age)
)intro(
"小明",18
)
執行結果如下:
我是小明,今年18歲了。
這個函式中name對應"小明",age對應18。如果顛倒過來就與函式本意不一致了。
2.2.2.關鍵字引數
與位置引數不同,關鍵字引數不要求實參與形參順序一致。函式呼叫時,實參以鍵值對的形式書寫,其中鍵是形參名。例如:
def
intro
(name, age)
:print
("我是{},今年{}歲了。"
.format
(name, age)
)intro(age=
18, name=
"小明"
)
執行結果如下:
我是小明,今年18歲了。
2.2.3.預設值
如果在函式定義時給形參乙個預設值,那麼在函式呼叫時,就可以不給這個形參傳值,可以簡化呼叫。例如:
def
intro
(name, ***, age=20)
:print
(name, ***, age)
intro(
'tom'
,'男'
)intro(
'tom'
,'男',25
)
執行結果如下:
tom 男 20
tom 男 25
可以看到,如果我們不給age形參傳值,age會預設為20。如果我們給age傳值,age會使用我們傳遞的數值。
注意:預設值引數必須放在最右邊,並且預設值最好是不可變物件並且只計算一次。
2.2.4.可變引數
有時我們無法確定函式所需的引數的數量,這個時候我們需要用到可變引數。
2.2.4.1.任意位置引數
任意位置引數可以接受任意數量的位置引數,並將其作為乙個元組來表示。
任意位置引數通過在函式名前加上"*"來表示。例如:
def
demo
(*args)
:print
(args)
demo(
)demo(1)
demo(1,
2)
執行結果如下:
()(
1,)(
1,2)
2.2.4.2.任意關鍵字引數
任意關鍵字引數可以接受任意數量的關鍵字引數,並將其作為乙個字典來表示。
任意位置引數通過在函式名前加上"**"來表示。例如:
def
demo6
(**kwargs)
:print
(kwargs)
demo6(
)demo6(a=1)
demo6(a=
1, b=
3)
執行結果如下:
2.2.5.引數的混合使用
位置引數、預設值和可變引數可以同時在函式定義**現。但是這些引數的混合使用要保證每乙個形參都必須有值於其對應。
一般來說,我們以位置引數、任意位置引數、預設值和任意關鍵字引數這樣的順序進行排列。
函式呼叫是我們使用定義好的函式的過程。
這裡我們要區別好函式定義和函式呼叫。
函式定義是乙個靜態的過程,定義函式的**不會被執行。
函式呼叫是乙個動態的過程。函式呼叫會先在記憶體中分配形參的空間,然後會將形參指向實參,之後會執行函式定義中的**體,最後會返回計算結果並**形參。
python中full函式 Python函式混亂
我正在學習 python.我有乙個函式readwrite filename,list filename的型別為string.list是乙個包含要在檔案中重寫的字串的列表.我有乙個簡單的函式呼叫,如下所示 fname hello.txt readwrite xx fname,datalist 我面臨的...
python中ascii函式 ascii函式
python內建了乙個ascii函式,此函式的作用於repr函式和str函式基本相同,不同的是,ascii函式只能返回ascii字元,對於非ascii字元,它會使用 x,u等escape的方式進行轉義。repr函式呼叫物件的 repr 函式 str函式呼叫物件的 str 函式。而ascii函式其實也...
python函式都有啥 python中的函式有哪些
函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。python中的函式有內建函式,也就是python自帶的 另一種是自定義函式,就是自己根據需要實現在的功能而建立的函式。函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建...