自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對Python動態(tài)類型語言解析

開發(fā) 后端
Python動態(tài)類型語言和線程安全很多人不是很了解,通過本文,希望能讓大家對Python的GIL等內(nèi)容有所幫助,本文還將就主要談下筆者對線程安全的一些理解。

其實Python動態(tài)類型語言與C++的性質(zhì)非常相似,有些變化引起的錯誤卻很嚴(yán)重,本文就對于大多數(shù)用戶頭疼的Python動態(tài)類型語言進(jìn)行詳細(xì)的剖析與介紹,僅供大家學(xué)習(xí)思考。

Python的創(chuàng)始人是Guido van Rossum,在發(fā)明Python語言之前Guido曾參與過一門稱作ABC的語言的設(shè)計,ABC是專門為非專業(yè)程序員設(shè)計的;Guido在Python 語言的設(shè)計過程中吸收了ABC語言的許多優(yōu)點。

諸如ABC的數(shù)據(jù)類型(列表、元組、文本等),變量無需聲明,內(nèi)建的功能強大的字符串處理以及簡單的控制結(jié)構(gòu)等特性;同時摒棄了ABC語言的一些缺陷,其中最主要的就是使Python更易擴展。

這也是Python語言現(xiàn)在如此流行的原因之一,Python的第一個實現(xiàn)是在mac機上,Python語言的設(shè)計還受到Modula-3(另一種優(yōu)美強大的語言)的影響,并結(jié)合了Unix Shell和C的習(xí)慣。#t#

現(xiàn)在Python是OpenSource的項目,同時Python社區(qū)非常的活躍,極大促進(jìn)了Python動態(tài)類型語言的發(fā)展。目前 Python語言最新的版本是2.4.2。 Python的特性 Python是面向?qū)ο蟮模缙脚_的,可擴展的解釋型通用編程語言,它支持模塊和包;Python的代碼類型有三種:.py .pyc .pyo,分別是字節(jié)代碼。

二進(jìn)制代碼,優(yōu)化代碼,都可以直接運行,無需編譯或者鏈接的步驟,而且Python還提供交互執(zhí)行環(huán)境;Python動態(tài)類型語言,不需要類型聲明;提供自動內(nèi)存管理;內(nèi)置高級數(shù)據(jù)類型和操作支持;Python可擴展,可嵌入;語法簡單清晰,強調(diào)代碼可讀性;可動態(tài)加載C模塊;可動態(tài)裝載Python模塊;

Python屬動態(tài)語言,允許在程序運行期間動態(tài)添加刪除函數(shù),對類和實例可以在運行時動態(tài)添加修改方法;Python 是具有內(nèi)省性的語言;提供標(biāo)準(zhǔn)的GUI框架開發(fā)圖形界面程序;支持標(biāo)準(zhǔn)Internet協(xié)議;支持內(nèi)建的和第三方提供的庫,豐富的庫支持;免費使用且完全開放源代碼。

  1. >>> type([])   
  2.  
  3. <type 'list'>   
  4.  
  5. >>>import sys   
  6.  
  7. >>> type(sys)   
  8.  
  9. <type 'module'>   
  10.  
  11. >>> type(dir)   
  12.  
  13. <type 'builtin_function_or_method'>   
  14.  
  15. hasattr()函數(shù)和getattr()函數(shù)檢索一個對象擁有的屬性   
  16.  
  17. >>> import os   
  18.  
  19. >>> hasattr(os.dup, '__doc__')   
  20.  
  21. True   
  22.  
  23. >>> print getattr(os.dup, '__doc__')   
  24.  
  25. dup(fd) -> fd2   
  26.  
  27. Return a duplicate of a file descriptor.   
  28.  
  29. callable()函數(shù)測試對象的可調(diào)用性:   
  30.  
  31. >>> callable('string')   
  32.  
  33. False   
  34.  
  35. >>> callable(callable)   
  36.  
  37. True   

Python動態(tài)類型語言不提供顯式的內(nèi)存分配回收API,完全自動的內(nèi)存管理;Python memory manager實現(xiàn)了對程序運行時堆的管理,包括內(nèi)存的分配,垃圾回收機制等;垃圾回收(garbage collection,一下簡稱GC)在當(dāng)前的版本中使用的是引用計數(shù)垃圾收集和可選的循環(huán)結(jié)構(gòu)垃圾空間掃描技術(shù)。

一旦對象變得‘不可達(dá)’的時候就會被回收,但是不保證能夠回收包含循環(huán)引用計數(shù)的內(nèi)存垃圾。引用計數(shù)的算法比較直觀:在每個存儲片中記錄了指向其的指針數(shù)目;在對存儲片進(jìn)行某些操作時,對引用計數(shù)進(jìn)行更新。

分配一個存儲片時引用計數(shù)初始化為1,只要存儲片的引用被復(fù)制,引用計數(shù)加1,存儲片的引用被刪除時,引用計數(shù)減1,如果引用計數(shù)減為0,則存儲片會由于不可達(dá)而被回收。很明顯引用計數(shù)算法不能回收循環(huán)的數(shù)據(jù)結(jié)構(gòu);設(shè)想一個簡單的場景:對象a一個成員指向?qū)ο骲,同時b也有一個成員指向a,而且代碼中只有引用a的部分。

b對象只是輔助a對象而生成的,如果后來a對象被刪除了,那么a和b作為一個整體都變成內(nèi)存垃圾了,理論上應(yīng)該都被內(nèi)存管理器刪除,但是由于引用計數(shù)算法每次只考察一個結(jié)點,因此對于循環(huán)的數(shù)據(jù)結(jié)構(gòu)無法回收。所以在編程時應(yīng)盡量避免循環(huán)引用的情況出現(xiàn)。

【編輯推薦】

  1. 如何使Python嵌入C++應(yīng)用程序?
  2. 深入探討Ruby與Python語法比較
  3. Python學(xué)習(xí)資料介紹分享
  4. Python學(xué)習(xí)經(jīng)驗談:版本、IDE選擇及編碼解決方案
  5. 淺析Python的GIL和線程安全
責(zé)任編輯:chenqingxiang 來源: 博客園
相關(guān)推薦

2010-02-23 14:55:00

Python動態(tài)語言

2017-09-13 00:07:05

Python編程語言動態(tài)語言

2010-03-23 09:16:43

Python源碼剖析

2011-08-22 09:34:50

Objective-C多態(tài)動態(tài)類型

2014-12-23 09:34:47

動態(tài)語言

2020-08-31 19:17:24

Python強類型語言弱類型語言

2010-02-22 10:18:29

Python代碼

2010-03-01 14:28:46

Python進(jìn)程

2012-03-26 10:06:13

語言開發(fā)

2025-03-14 10:34:22

2010-03-01 18:21:08

Python測試

2010-02-26 10:07:55

Python編程語言

2010-02-23 10:44:00

Python 編程語言

2010-03-01 14:02:26

Python批處理語言

2010-03-17 16:50:51

2010-02-26 14:50:17

Python操作語言

2010-02-23 15:29:43

Python 編輯器

2021-07-21 09:15:57

Python工具編程語言

2010-02-24 09:18:15

Python操作語言

2010-02-23 16:46:27

Python設(shè)計語言
點贊
收藏

51CTO技術(shù)棧公眾號