亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

使用Python能做什么

發布時間:2022-01-11 09:57:21 來源:億速云 閱讀:144 作者:iii 欄目:編程語言

這篇文章主要介紹了使用Python能做什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇使用Python能做什么文章都會有所收獲,下面我們一起來看看吧。

一.多編程范式

Python是一門多范式的編程語言,所謂的過程式,面向對象和函數式的結合。

大部分人接觸編程語言都是從過程式開始的,原因是因為過程式的程序方式與計算機運行方式是統一的,指令序列與運行過程是統一的

如典型的C,我也是從C開始學習的,過程式的程序語言設計編寫程序較為簡單,但是符合人機交互思考方式。

Python雖然是一門面向對象語言,就連“ ”(空格)也可以看做是一個對象,但是Python勝任過程式是沒有問題的。

如不需要使用類的靜態方法:

def a_plus_b(a,b):  return a+b

python在設計的時候將其當做一門面向對象的方式編寫,且不說面向對象給軟件設計帶來的一些革命等,在python這樣的動態語言中面向對象有一個亮點就是Duck typing(鴨子類型)

關于鴨子類型,就是說,如果我認為一個抽象的東西會游泳會“嘎嘎”叫,我就可以把它當做鴨子。

def use_duck( Duck ):  Duck.swim()  Duck.gaga()  class Duck:  def swim(self):  ...  def gaga(self):  ...

如果這樣使用

little_duck Duck()  use_duck( little_duck )

關于Duck類,你可以給他取任何的名字,或者繼承它取另一個名字,只需要實現 swim() gaga() 你就可以把它當做鴨子

關于鴨子類型,很多人不理解為什么不需要提供一個接口來規定鴨子的行為,我既不支持也不反對,我的觀點是這樣的:

1.對于參數的檢查,不符合動態語言的特性

2.提供了接口規范,那就不是鴨子類型了,直接叫多態得了

關于python支持的函數式編程

首先是lambda 演算

函數式編程的定義是將函數看做是變量一樣的待遇,變量在程序中最簡單的有什么待遇呢

1.可以賦值

2.可以作為參數

3.可以改變值(Erlang例外)

4.且不說生命周期了和作用域了

λ演算背后蘊含著計算機可計算性的深厚知識,lambda也是圖靈模型,是停機問題的一個否定答案。不僅僅是一個匿名函數那樣簡單

關于lambda 演算,看看這個程序做了什么

map(lambda n:2*n,[1,2,3,4,5])

1.lambda n:2*n 本身作為一個匿名函數

2.lambda 本身作為一個參數傳入 map()函數 ,這也就是說我的高階函數,可以將函數變身看成是一個變量作為參數傳遞,這也是它作為函數受到的高等待遇

關于賦值和改變值,兩種方式:

1.f = fun() 不改變函數狀態,只改變名稱,但是說明函數是可以賦值的

2.可以使用閉包作為改變函數的狀態方式,或者使用裝飾器來完成函數狀態改變

函數式編程的使用也可以提高程序的可讀性和減少代碼,而且能夠清晰的表達函數的功能,如MapReduce就是來自函數式編程的思

Map(func,List)

作用是將func 作用于List中的每一個元素

以剛才的例子舉例

map(lambda n:2*n,[1,2,3,4,5])

此函數返回:[2,4,6,8,10]

重要的是在于知道這樣的方式帶給我們的清晰的設計方式

當然函數式編程不是那么幾句話就說完的,理解函數式編程的核心是理解 λ演算

二.一些有意思的特性

惰性計算:

看看完成一個斐波那契數列python 可以怎么做:

>>> def fib():      a , b = 0 ,1     while 1:          yield b          a , b = b ,a+b          >>> f = fib()

實際上由yield 生成了一個可迭代對象,每次調用

f.next()就可以產生一個斐波那契值,而函數的內部狀態是由迭代對象存儲的

至于返回一個可迭代對象,如果需要確定迭代到多少位,可以使用 itertools.islice

協程:

協程也是一個基于yield的概念,主要的模式是微線程的協作式工作模式:

def coroutine(func):       def ret():           f = func()           f.next()           return f       return ret    @coroutine  def consumer():       print "Wait to getting a task"      while 1:           n = (yield)           print "Got %s",n     import time   def producer():       c = consumer()       while 1:           time.sleep(1)           print "Send a task to consumer"          c.send("task")     if __name__ == "__main__":       producer()

協程帶來的好處是可以直接調度你的線程,這也是它為什么叫做協程而不是線程的原因,線程屬于搶占式并發,協程屬于協作式并發

三.動態語言帶來的好處

從程序設計帶來的快感(我相信只有熱愛這方面的人才有的感覺)來說,動態語言,比如python,節約了更多的時間可以用來陪女朋友或者老婆,或者老公

當然,作為互聯網時代快速開發來說,趕鴨子上線,也是《黑客與畫家》上面介紹的,快速開發很重要,當然需要符合這方面的需求

動態語言的CPU密集型運算必然比不過C/C++

關于“使用Python能做什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“使用Python能做什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

信宜市| 吴堡县| 丹凤县| 喀喇沁旗| 全州县| 团风县| 武安市| 纳雍县| 汾阳市| 鱼台县| 桃源县| 汉阴县| 梨树县| 樟树市| 广州市| 崇左市| 满城县| 潞城市| 大港区| 绥中县| 辽宁省| 凤城市| 镇江市| 广饶县| 葫芦岛市| 浑源县| 沧州市| 施甸县| 堆龙德庆县| 南投县| 连平县| 全南县| 明星| 西华县| 科尔| 广德县| 子长县| 阿尔山市| 略阳县| 阜新市| 福建省|