Python_函數

一、認識函數

print()

round(a, n) :四舍五入保留小數點的n位

help(函數名):查看內置函數的使用方法 (首先在命令行輸入 python進入后)

import this:搜索Python之禪

1. 功能性

2. 隱藏細節 ??

3. 避免編寫重復的代碼

組織代碼 自定義函數

二、函數的定義

1. 使用 def 來定義函數

① 參數列表可以沒有

② 使用 return ? value ?返回函數值;None(沒有return)

③ return :只有return,return之后后面的語句是不會執行的

可以返回任意類型的變量,不需要定義

注:

1. 函數需要先定義,再調用

2. 自定義函數名不要和Python系統內置的函數名或者變量名重復

三、讓函數返回多個結果

return的幾種用法

1. 返回一個或多個變量時,只需在return后面用都好隔開多個變量,此時默認多個變量組成一個tuple

2. 空值(默認)

3. 只有return,后面不接變量時,函數運行終止,即不運行return后面部分

4. 當return返回多個值時,如何取出每一個值,雖然可以用 damages[0] 這種在序列中索引的方法取出每一個值,但可讀性差,且每次提取都要重復代碼。

最好是給元祖中的每一個元素賦予有意義的新變量名用于接收,下圖

這種方法叫做序列解包!

序列解包

把一個tuple拆開,就叫做序列解包,比如:

d = 1, 2, 3 ? ? // 此時 d 是一個 tuple

a, b, c = d ? ? // 給a,b,c 賦值,這就叫做序列解包

注??!元素的格式要相等

鏈式賦值: a = b = c = 1

四、參數

1. 必須參數:

函數參數列表中定義的必須賦值的參數(形參)。必須放在參數列表的前面

形參:

實參:調用函數時,輸入的參數

2. 關鍵字參數:

不用考慮傳參的順序,實現函數的調用。可以在函數調用時明確指出實參是傳給哪個形參的

(代碼的可讀性)

def ?add ( x, y):

? ? ? ...

? ? ? return result

c = add ( y = 3, x = 2)

3. 默認參數:

不必每次輸入相同的參數

注意!

1. 所有非默認參數必須在所有默認參數錢,不論定義函數還是調用時都是一樣

2. 參數順序要一致,如果順序不一致,想向某一特定的默認參數傳遞參數應該使用關鍵字參數指定要改變的默認參數,否則將根據默認參數順序依次匹配。

3. 默認參數和關鍵字參數不能混合調用

4. 可變參數:

① 在參數列表前加一個“ * ” ,python可以自動把可變參數的實參組裝成tuple,輸出一個元組。

?。?!但是就不能這樣傳:demo((1,2,3,4,5,6)),這樣會得到二維元組

* 的作用是把每個元素拿出來平鋪輸出 (下圖)

② 或者不加 * ,那么在調用函數時用tuple類型。

1 = 2
2 = 1

各種參數調用的順序:可變參數可以和其他類型的參數結合起來,注意必須參數必須放在最前面,也可使用關鍵字參數。

但是函數的參數列表盡量簡單,不要有多重參數類型混合。?。?!

可變參數可以用 for 循環來進行遍歷調用 ?(下圖)

squsum(1,2,3) ?等于 ? squsum(*[1,2,3])

5. 關鍵字可變參數:

格式:def demo(**param) ? ? ? ? pass

? ? ? ? ? ? 或 def demo(**param) ? ?調用時 a = (......) ? ? ? ? ?demo(**param)

這樣在調用時可以傳遞多個關鍵字參數,此時python會將其轉化為字典類型dict。

遍歷字典類型數據的方法:(下圖)

for? key,value ?in ?param.items():

? ? ? ? print(key,':',value)

五、變量的作用域

全局變量、局部變量

在函數體內部,局部變量是不分層級的,不能形成塊級作用域,可以互相引用。

外部無法使用局部變量。

鏈式,作用域鏈:具有鏈式的特征,具有逐級尋找的過程

注釋 c=3 ? >>> 2

注釋 c=2 ? >>> 1

global?關鍵字:

在函數內部加上global 關鍵字,就可以在函數外部訪問內部的變量值 ? >>> ? 變成全局變量

也可以實現調用模塊

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文翻譯自Functional Programming Howto 本文將介紹Python中函數式編程的特性。在對...
    大蟒傳奇閱讀 2,645評論 4 14
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,886評論 18 139
  • 函數和對象 1、函數 1.1 函數概述 函數對于任何一門語言來說都是核心的概念。通過函數可以封裝任意多條語句,而且...
    道無虛閱讀 4,635評論 0 5
  • 1.四舍五入:- (void)priceTextValueChange{ float f =[string fl...
    煙雨平生花飛舞閱讀 497評論 0 0
  • 從心里的非你不可,到腦子里的可有可無,這就是曾經對你最好的對待。從什么都沒有的地方,到什么都沒有的地方,其實都是沒...
    夢里終是夢閱讀 336評論 0 1