日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python学习笔记(七)函数

發布時間:2024/1/23 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python学习笔记(七)函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 定義函數

定義函數的格式為:

def 函數名(參數 1,參數 2,...,參數 n):函數體(語句塊)

是不是樣式很簡單呢?

幾點說明:

  • 函數名的命名規則要符合 Python 中的命名要求。一般用小寫字母和單下劃線、數字等組合
  • def 是定義函數的關鍵詞,這個簡寫來自英文單詞 define
  • 函數名后面是圓括號,括號里面,可以有參數列表,也可以沒有參數
  • 千萬不要忘記了括號后面的冒號
  • 函數體(語句塊),相對于 def 縮進,按照 Python 習慣,縮進四個空格
2. 函數的返回值

使用return 返回。

3.參數收集

既然有很多不確定性,那么函數的參數的個數,也當然有不確定性,函數怎么解決這個問題呢?Python 用這樣的方式解決參數個數的不確定性:

def func(x,*arg):print x #輸出參數 x 的值result = xprint arg #輸出通過 *arg 方式得到的值for i in arg:result +=ireturn resultprint func(1,2,3,4,5,6,7,8,9) #賦給函數的參數個數不僅僅是 2個

運行此代碼后,得到如下結果:

1 #這是函數體內的第一個 print,參數x得到的值是 1 (2, 3, 4, 5, 6, 7, 8, 9) #這是函數內的第二個 print,參數 arg 得到的是一個元組 45 #最后的計算結果

從上面例子可以看出,如果輸入的參數個數不確定,其它參數全部通過 *arg,以元組的形式由 arg 收集起來。對照上面的例子不難發現:

  • 值 1 傳給了參數 x
  • 值 2,3,4,5,6.7.8.9 被塞入一個 tuple 里面,傳給了 arg

為了能夠更明顯地看出 args(名稱可以不一樣,但是 符號必須要有),可以用下面的一個簡單函數來演示:

>>> def foo(*args): ... print args #打印通過這個參數得到的對象 ...

下面演示分別傳入不同的值,通過參數 *args 得到的結果:

>>> foo(1,2,3) (1, 2, 3)>>> foo("qiwsir","qiwsir.github.io","python") ('qiwsir', 'qiwsir.github.io', 'python')>>> foo("qiwsir",307,["qiwsir",2],{"name":"qiwsir","lang":"python"}) ('qiwsir', 307, ['qiwsir', 2], {'lang': 'python', 'name': 'qiwsir'})

如果用 **kargs 的形式收集值,會得到 dict 類型的數據,但是,需要在傳值的時候說明“鍵”和“值”,因為在字典中是以鍵值對形式出現的。

看官到這里可能想了,不是不確定性嗎?我也不知道參數到底會可能用什么樣的方式傳值呀,這好辦,把上面的都綜合起來。

>>> def foo(x,y,z,*args,**kargs): ... print x ... print y ... print z ... print args ... print kargs ... >>> foo('qiwsir',2,"python") qiwsir 2 python () {} >>> foo(1,2,3,4,5) 1 2 3 (4, 5) {} >>> foo(1,2,3,4,5,name="qiwsir") 1 2 3 (4, 5) {'name': 'qiwsir'}

很 good 了,這樣就能夠足以應付各種各樣的參數要求了。

def foo(**args)

這種方式跟上面的區別在于,必須接收類似 arg=val 形式的。

4.lambda

lambda 函數,是一個只用一行就能解決問題的函數,聽著是多么誘人呀。看下面的例子:

>>> def add(x): #定義一個函數,將輸入的變量增加 3,然后返回增加之后的值 ... x += 3 ... return x ... >>> numbers = range(10) >>> numbers [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #有這樣一個 list,想讓每個數字增加 3,然后輸出到一個新的 list 中>>> new_numbers = [] >>> for i in numbers: ... new_numbers.append(add(i)) #調用 add() 函數,并 append 到 list 中 ... >>> new_numbers [3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 在這個例子中,add() 只是一個中間操作。當然,上面的例子完全可以用別的方式實現。比如: >>> new_numbers = [ i+3 for i in numbers ] >>> new_numbers [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

首先說明,這種列表解析的方式是非常非常好的。

但是,我們偏偏要用 lambda 這個函數替代 add(x),如果看官和我一樣這么偏執,就可以:

>>> lam = lambda x:x+3 >>> n2 = [] >>> for i in numbers: ... n2.append(lam(i)) ... >>> n2 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

這里的 lam 就相當于 add(x),請看官對應一下,這一行 lambda x:x+3 就完成 add(x) 的三行(還是兩行?),特別是最后返回值。還可以寫這樣的例子:

>>> g = lambda x,y:x+y #x+y,并返回結果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回 4 的平方 16

通過上面例子,總結一下 lambda 函數的使用方法:

  • 在 lambda 后面直接跟變量
  • 變量后面是冒號
  • 冒號后面是表達式,表達式計算結果就是本函數的返回值


總結

以上是生活随笔為你收集整理的python学习笔记(七)函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。