91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python學習之 函數式編程

發布時間:2020-06-08 18:59:34 來源:網絡 閱讀:267 作者:ckllf 欄目:編程語言

  1 函數式編程

  1.1 匿名函數

  關鍵字lambda表示匿名函數,冒號前面的 x 表示參數。冒號后面只能有一個表達式,不寫return,返回值就是該表達式的結果。可以不必定義函數名,直接創建一個函數對象。返回函數的時候,也可以返回匿名函數。下面的代碼是一個例子:

  myabs = lambda x : -x if x < 0 else x

  myabs(-2)

  輸出如下:

  2

  1.2 返回函數

  Python的函數不但可以返回int、str、list、dict等數據類型,還可以返回函數!

  比如,定義一個函數 f(),我們讓它返回一個函數g,可以這樣寫:

  def f():

  print('call f()...')

  def g(): # 定義函數g

  print('call g()...')

  return g # 返回函數g()

  上述代碼中在函數f()內部又定義了一個函數g()。由于函數g() 也是一個對象,函數名g()就是指向函數g()的變量,所以,最外層函數f()可以返回變量g(),也就是函數g()本身.調用函數f(),我們會得到f()返回的一個函數:

  x = f() # 調用f()

  輸出如下:

  call f()...

  1.3 閉包

  在函數內部定義的函數和外部定義的函數是一樣的,只是他們無法被外部訪問:

  def g(): # 定義函數g

  print('call g()...')

  def f():

  print('call f()...')

  return g # 返回函數g()

  將g()的定義移入函數f()內部,防止其他代碼調用g():

  def f():

  print('call f()...')

  def g(): # 定義函數g

  print('call g()...')

  return g # 返回函數g()

  像這種內層函數引用了外層函數的變量(參數也算變量),然后返回內層函數的情況,稱為閉包Closure。閉包的特點是返回的函數還引用了外層函數的局部變量。所以,要正確使用閉包,就要確保引用的局部變量在函數返回后不能變。

  1.4 偏函數

  int()函數可以把字符串轉換為整數。當僅傳入字符串時,int()函數默認按十進制轉換:

  int('98')

  輸出如下:

  98

  函數還提供額外的base參數,默認值為10。如果傳入base參數,就可以做 N 進制的轉換:

  int('100', base = 8)

  輸出如下:

  64

  functools.partial就是創建一個偏函數的,可使用下面的代碼創建一個新的函數:

  import functools

  int2 = functools.partial(int, base = 2)

  int2('1000')

  輸出如下:

  8無錫看婦科的醫院 http://www.ytsgfk120.com/

  functools.partial可以把一個參數多的函數變成一個參數少的新函數,少的參數需要在創建時指定默認值,函數調用的難度就降低了。

  1.5 reduce函數

  使用reduce(),需要導入functools包下的reduce:

  from functools import reduce

  reduce()函數接收的參數是一個函數f和一個list,f必須接收兩個參數。reduce()對list的每個元素反復調用函數f,并返回最終結果值。

  下面是一個函數f:

  def f(x, y):

  return x + y

  調用reduce(f, [1, 3, 5, 7, 9])時,reduce函數將做如下計算:

  先計算頭兩個元素:f(1, 3),結果為4;

  再把結果和第3個元素計算:f(4, 5),結果為9;

  再把結果和第4個元素計算:f(9, 7),結果為16;

  再把結果和第5個元素計算:f(16, 9),結果為25。

  reduce()還可以接收第3個可選參數,作為計算的初始值。如果把初始值設為100,計算:reduce(f, [1, 3, 5, 7, 9], 100),結果將變為125,因為第一輪計算是:計算初始值和第一個元素:f(100, 1),結果為101。

  1.6 filter函數

  filter()函數接收一個函數f和一個list。函數f的作用是對每個元素進行判斷,返回 True或 False。filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。

  要從一個list[1, 4, 6, 7, 9, 12, 17]中刪除偶數,保留奇數,首先,要編寫一個判斷奇數的函數:

  def is_odd(x):

  return x % 2 == 1

  然后利用filter()函數過濾掉偶數:

  list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17]))

  輸出如下:

  [1, 7, 9, 17]

  利用filter(),可以完成很多有用的功能。例如,刪除None或者空字符串。下面的代碼是一個判斷字符串是否為空的函數:

  def is_not_empty(s):

  return s and len(s.strip()) > 0

  然后輸入:

  list(filter(is_not_empty, ['test', None, '', ' ', 'END']))

  輸出為:

  ['test', 'END']

  2 Python學習需要注意的點

  1、空值為None而不是NULL;

  2、True或者False首字母要大寫;

  3、print()會依次打印每個字符串,遇到逗號,的話,會輸出一個空格。下面的代碼是一個例子:

  print('A', 'B')

  輸出如下:

  A B

  4、Python把0、空字符串’'和None看成 False,其他數值和非空字符串都看成True。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲麻莱县| 襄城县| 北宁市| 乐亭县| 东安县| 蓝山县| 安西县| 蒲城县| 皋兰县| 昌黎县| 江永县| 谢通门县| 都江堰市| 仙居县| 两当县| 太康县| 藁城市| 乌鲁木齐县| 长治市| 渝北区| 阜新市| 许昌县| 新宁县| 长宁县| 格尔木市| 桃园市| 汉沽区| 霍山县| 蕉岭县| 高台县| 澄江县| 兴业县| 荆州市| 铜鼓县| 泽州县| 通渭县| 安阳县| 偏关县| 九龙城区| 河源市| 恭城|