-
1 # 水母星人
-
2 # 千鋒頭號粉絲
零基礎入門Python,需要了解什麼呢?接下來,就分享一些常見知識點給大家!看看你都掌握了嗎?
1.Python是如何被解釋執行的?
Python是一種解釋型語言,它可以直接從原始碼執行程式。程式設計師編寫的原始碼首先轉變成一種中間語言程式碼,然後再被轉換成能夠直接執行的機器語言程式碼。
2.Python是如何進行記憶體管理的?
Python記憶體空間是以Python私有堆的形式進行管理的。所有的Python物件和資料結構都存放在一個私有堆中。直譯器可以訪問私有堆,而程式設計師不可以。
將Python堆空間中的記憶體分配給Python物件的工作是由Python記憶體管理器完成的。而核心API則會提供給程式設計師一些相關的工具來完成涉及到記憶體的編碼工作。
3.能夠找到程式中的bug進行靜態分析的工具有哪些?
PyChecker是一種能夠發現Python原始碼中的bug並對其中的程式碼風格和複雜度進行警告的靜態分析工具。另外一種工具是Pylint,它能夠驗證模組是否滿足編碼標準。
4.什麼是Python裝飾器?
一個Python裝飾器是我們在符合Python語法的同時又方便地對函式做的一些特定的修改。
5.列表和元組的區別是什麼?
列表和元組的區別是列表是可變的,而元組不可以。而且元組可以被雜湊,例如作為字典的鍵。
6.Python的迭代器是什麼?
Python中的迭代器是用來迭代包含一組元素的容器的,如列表。
-
3 # 鋼鐵機械俠
為大家詳細介紹了Python入門必須知道的11個知識點,幫助更好地瞭解python,感興趣的小夥伴們可以參考一下
Python 簡介
Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向物件的指令碼語言。
Python 的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構。
Python 是一種解釋型語言: 這意味著開發過程中沒有了編譯這個環節。類似於PHP和Perl語言。
Python 是互動式語言: 這意味著,您可以在一個Python提示符,直接互動執行寫你的程式。
Python 是面嚮物件語言: 這意味著Python支援面向物件的風格或程式碼封裝在物件的程式設計技術。
Python 是初學者的語言:Python 對初級程式設計師而言,是一種偉大的語言,它支援廣泛的應用程式開發,從簡單的文字處理到 WWW 瀏覽器再到遊戲。
Python 發展歷史
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國家數學和計算機科學研究所設計出來的。
Python 本身也是由諸多其他語言發展而來的,這包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的指令碼語言等等。
像 Perl 語言一樣,Python 原始碼同樣遵循 GPL(GNU General Public License)協議。
現在 Python 是由一個核心開發團隊在維護,Guido van Rossum 仍然佔據著至關重要的作用,指導其進展。
Python 特點
1.易於學習:Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。
2.易於閱讀:Python程式碼定義的更清晰。
3.易於維護:Python的成功在於它的原始碼是相當容易維護的。
4.一個廣泛的標準庫:Python的最大的優勢之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh相容很好。
5.互動模式:互動模式的支援,您可以從終端輸入執行程式碼並獲得結果的語言,互動的測試和除錯程式碼片斷。
6.可移植:基於其開放原始碼的特性,Python已經被移植(也就是使其工作)到許多平臺。
7.可擴充套件:如果你需要一段執行很快的關鍵程式碼,或者是想要編寫一些不願開放的演算法,你可以使用C或C++完成那部分程式,然後從你的Python程式中呼叫。
8.資料庫:Python提供所有主要的商業資料庫的介面。
9.GUI程式設計:Python支援GUI可以建立和移植到許多系統呼叫。
10.可嵌入: 你可以將Python嵌入到C/C++程式,讓你的程式的使用者獲得"指令碼化"的能力。
1、Python適用於哪些應用場景?
這個沒有固定答案,很多人都說Python不適合開發GUI的程式,但Python自己的IDE——IDEL和第三方的IDE——Eric就是Python寫的。
目前看到的更多的人是拿來寫Web,使用如Django、web.py框架,沒記錯Flask也是。
也有一個情況用的比較多,用Python當膠水,與各種語言結合,共同完成某軟體功能,注意觀察也許你會發現在安裝一些軟體的時候會有Python的身影。
另外大資料分析Python也是比較適合的,從載入到分析,再到儲存結果等,Python有一整套的模組應對。
2、Python能夠勝任大資料嗎?
Python很適合做大資料相關的分析,內建的C編譯的模組能應對常見的操作,個別極端的演算法建議用C重寫相關模組。
Python本身的特點更多的是高效率的開發和簡單的維護,速度交給C去吧,更多的問題其實出自寫程式碼的人沒有更好的使用,而不是效率不夠高。比如排序,本來Python有非常高效的內建C編譯的模組,卻非要自己寫演算法,這樣的結果不慢都是奇怪的。
另外還要看需求是CPU密集型,還是IO密集型,如果是CPU密集型建議這部分操作由C實現,IO密集型的效率不會因為Python而有多少改變。
C的效率是高,但框架搭起來也費勁,所以還是結合著來吧,也因此,Python被稱為膠水語言。
3、Python是否可以完全代替Shell?
完全可以,Shell的功能Python均可實現,而且程式碼量更少、結構更優、可閱讀性更好,而Python可實現的功能Shell卻不一定能,如運維中會用到的用於網路通訊的Socket模組、用於WEB的Django框架、用於效能採集的psutil模組等,而且Shell對作業系統的命令依賴性較強,Python可在更大程度上規避。
在一個Shell的IDE是個很大的問題,雖然Python的原生IDE不怎麼樣,但第三方的IDE還是功能十分強大的,雖然不能和微軟的Virtual Studio相媲美,但也是能完全滿足Python的開發需求的。
再說下Python的效率問題,Python支援多程序、多執行緒以及協程(比執行緒更小一級),程式併發度是在Shell之上的。Python的核心模組基本都是用C實現的,因此效率更高。如有必要也可能將需要用Python實現的Python模組用C重寫以提高效率,當然也可以直接用C Python,一個直接完全用C實現的Python直譯器。
4、Python是否可以訪問常見的資料庫?
可以,Python可以訪問常見的各種資料庫,如Oracle、MySQL、Vertica、SQLServer等,載入相應的模組即可,模組列表如下:
Oracle:cx_Oracle
MySQL:MySQLdb
5、Python開發是面向過程、函式還是物件?
Python雖然是解釋型語言,但從設計之初就已經是一門面向物件的語言,對於Python來說一切皆為物件。正因為如此,在Python中建立一個類和物件是很容易的,當然如果習慣面向過程或者函式的寫法也是可以的,Python並不做硬性的限制。
Python的面向物件特徵如下:
封裝
面向物件程式設計中的術語物件(Object)基本上可以看做資料(特性)以及由一系列可以存取、操作這些資料的方法所組成的集合。傳統意義上的“程式= 資料結構+演算法”被封裝”掩蓋“並簡化為“程式=物件+訊息”。物件是類的例項,類的抽象則需要經過封裝。封裝可以讓呼叫者不用關心物件是如何構建的而直接進行使用。
繼承
類繼承:
繼承給人的直接感覺是這是一種複用程式碼的行為。繼承可以理解為它是以普通的類為基礎建立專門的類物件,子類和它繼承的父類是IS-A的關係。
多重繼承:
不同於C#,Python是支援多重類繼承的(C#可繼承自多個Interface,但最多繼承自一個類)。多重繼承機制有時很好用,但是它容易讓事情變得複雜。
多型
多型意味著可以對不同的物件使用同樣的操作,但它們可能會以多種形態呈現出結果。在Python中,任何不知道物件到底是什麼型別,但又需要物件做點什麼的時候,都會用到多型。方法是多型的,運算子也是多型的。
6、如何快速掌握Python?
閱讀官方文件即可滿足日常需求,官方文件有中文翻譯,更加方便學習。但這些都是基礎的語法和常見的模組,Python學習重要的是模組,快速、高效的開發依賴的是模組的應用,站在前人的肩膀會省時省力的多。
但學習Python其實最重要的是學習模組,而非語法本身,Python的語法十分簡單,只要大學學過C或者資料結構課程,甚至完全沒學過的人也是可以輕鬆掌握的。掌握了語法已經可以實現Shell的功能,但要想提高模組的學習必不可少,如運維人員經常用的有:
psutil:獲取效能資訊
socket:基本網路通訊
IPy:IP地址相關處理
dnsptyhon:域名相關處理
difflib:檔案比較
pexpect:螢幕資訊獲取,常用於自動化
paramiko:SSH客戶端
XlsxWriter:Excel相關處理
其他還有很多很多功能模組,每天也不斷的有新的模組、框架、元件產生,如用於與Java 做橋接的PythonJS,甚至Python還可以編寫Map和Reduce。
7、Python是否有專用的IDE工具?
有,IDEL用Python實現的Python的IDE工具,但說實話,功能真心不咋地。我個人常用的IDE如下:
PyCharm
PyCharm是JetBrains開發的Python IDE。PyCharm用於一般IDE具備的功能,比如,除錯、語法高亮、Project管理、程式碼跳轉、智慧提示、自動完成、單元測試、版本控制……另外,PyCharm還提供了一些很好的功能用於Django開發,同時支援Google App Engine,更酷的是,PyCharm支援IronPython!
Wing IDE
Wingware的Python IDE相容Python 2.x和3.x,可以結合Django,matplotlib,Zope, Plone,App Engine,PyQt,PySide,wxPython,PyGTK,Tkinter,mod_wsgi,pygame,Maya,MotionBuilder,NUKE,Blender和其他Python框架使用。Wing支援測試驅動開發,集成了單元測試,nose和Django框架的執行和除錯功能。Wing IDE啟動和執行的速度都非常快,支援Windows,Linux,OS X和Python versi。
NotePad++
簡單、方便,但僅適合臨時性的更改。
其他的還有:Eclipse withPyDev、Sublime Text、Komodo Edit、Pyer、The Eric Python IDE、Interactive Editor for Python
8、運用Python實現系統自動化監控有哪些常用方法?
準確的說應該是有哪些模組,健康監控肯定要有psutil來監控效能,還會用到通訊的Socket,登陸的Paramiko、telnetlib,ftp的ftplib。
原理基本就是採集資料——本地處理資料——傳輸資料,如果做的比較完善可以再做個呈現資料,也可以吧資料傳送給Zabbix等開源工具。
個人還用一個開源監控網路刺探的,超過指定次數就自動封殺。
9、Python可執行在那些平臺?跨平臺性如何?
支援常見的主流平臺,如AIX、HPUX、Solaris、Linux、Windows等,除Windows外常見的Unix、Linux平臺均帶有原生的Python,但版本一般較低。關於跨平臺和他跨平臺語言一樣,要注意有些個別模組是單一平臺特有的,整體的跨平臺性還是很好的,不必為適應多平臺寫多套程式碼。
但這不是說一點限制都沒有:首先,同一個版本的中間檔案.py和.pyc以及.pyo是跨平臺的;其次,PC與移動終端,如:手機、Pad不可跨平臺(原因見下一條);最後,不能跨處理器構架,如:Intel與ARM,64位與32位。
10、如何利用Python提高開發效率?
因為Python很多底層的東西不用自己寫,模組資源豐富,運用得當開發效率當然會提升,而且各種框架也為快速開發提供了基礎。
11、Python執行速度如何?
通常Java的速度比Python快些。Python呼叫C擴充套件除外(也可以直接用CPython)。
對於Python速度太慢的批評,Python語言作者Guido van Rossum說:
如果你開發的系統發現了效能瓶頸,通常最有效率的做法是找到出問題的程式碼塊,用速度較快的語言如C或C++寫一些程式碼替換該功能或該模組,而不是用C或C++重寫整個系統,因為對大部分程式碼而言,語言的速度是無關緊要的。
學習是一個人最大的修養,透過學習不僅可以提升自己的境界,還能豐富知識,為以後的就業打下基礎,學習Python更是一個發展自己的好機會,畢竟人工智慧時代已經到來,Python作為人工智慧時代的主力軍是非常有前景的,夢想沒有腐朽,一路還有汗流。加油!
-
4 # 重慶小U
python是一門簡單易學、功能強大、高效靈活的程式語言。它能夠把用其他語言製作的各種模組很輕鬆地聯結在一起,常被暱稱為“膠水語言”。現在python這門語言的魅力和影響力已經遠超Java、C、C++等程式語言前輩,越來越多的人選擇python作為自己的職業發展方向。
對於準備學習python的小夥伴來說,最重要的是要弄清楚學python有哪些方向,這樣才能更好的進行學習,下面重慶優就業老師給準備學python的小夥伴理一理方向。
python的應用範圍很廣,這也就使得python的就業方向相對來說還是比較多的,首先是web方向,因為python學習的其中一個階段就是python全棧開發,主要是學後端框架+專案實戰,透過這一階段的學習,學生不僅能夠掌握js在網路前端中的使用,還能夠把js作為一門通用語言來運用,為學生將來從事全棧工作打下堅實的基礎,以後學員選擇做一名web全棧開發工程師也是完全可以的。
學python以後也可以選擇人工智慧方向發展,人工智慧的各種演算法都是基於python編寫的,說白了如果你想學人工智慧卻不懂python,就相當於想學英語而不認識單詞,所以說趁現在AI大勢所趨,各位小夥伴們抓緊時間行動來學習python吧。
學python的另一個方向是資料分析方向,掌握資料分析涉及到的相關概念,瞭解如何獲取資料以及特徵工程,熟悉相關模組的使用,這些都會在python學習中掌握,而且現在資料分析工程師的薪資待遇特別好,想要幹活不累掙錢還多的小夥伴可以選擇這個方向。
掌握了python以後還可以選擇的方向就是網路爬蟲,python學習中的一個模組就是關於網路爬蟲的學習,包括爬蟲的工作原理和設計思想、反爬蟲機制、分散式爬蟲框架等,未來小夥伴們可以從事網路爬蟲工程師或者是資料採集工程師。
-
5 # 騰訊技術工程
文章不旨在概念的介紹和深挖,或者酷炫的第三方庫介紹。更多是站在實用性角度簡明快速羅列自認為頗為有用的知識點或者技巧。為提高程式碼的效率或可讀性,便利性等添磚加瓦。經驗之談,歡迎交流和拍磚。字串
字元拼接,join。
這裡需要強調下,任何字元相關的可迭代物件都可以使用join。除了set,tuple外,類控制代碼物件同樣可以使用join。
關鍵字格式化
除了我們常用的 %s進行格式化外,其實還可以按照關鍵字格式化,對於比較多變數時的情況,有利於提高程式碼的可讀性。
當然 format可以類似地
行分割
字元分隔
split(rsplit)其實時有第二個引數的,表示按順序分隔幾次,類似 ‘指定數目的非貪婪分隔’
內容重複的字串
多行縮排處理
標準庫textwrap還有其他一些方法處理文字格式,例如fill 設定行寬度和首行縮減,indent 新增行字首等等。
字典setdefault
給字典設定(增加)新的鍵,存在就不設定(獲取當前key對應的值),不存在就設定並返回當前key對應的值
update,更新字典
fromkeys(seq [, value])
建立一個新字典,序列seq的元素為鍵,value為字典所有鍵對應的初始值(不指定為None)。
類似的功能其實也可以透過defaultdict來實現,後面會舉例。
標準庫collections 的 defaultdict 和 OrderedDict
defaultdict類接受一個型別作為引數,當所訪問的鍵不存在的時候,可以例項化一個指定型別空值作為預設值
統計詞頻
defaultdict類還使用任何不帶參的函式,該函式的返回值作為預設值,這樣可以實現多層key預設值的指定。
所以defaultdict可以覆蓋setdefault的使用場景,人傾向使用defaultdict,更加方便簡潔
模仿 fromkeys
OrderedDict
python的字典是無序的, OrderedDict可以保留key的順序資訊
OrderedDict的Key會按照插入的順序排列
json化後可以保留順序
列表生成式
生成式中的判斷
生成式多層巢狀
但是多層生成式不推薦過度使用,可能會導致可讀性更差。列表的索引有不少靈活的用法:
元素重複的序列
* 運算子可生成 元素重複的序列
在for迴圈中一同拿到索引和元素
其實 enumerate 函式的可使用範圍也包括所有的可迭代物件
例如檔案控制代碼
在列表中查詢
除了使用index()方法返回查詢元素的索引外。對於複雜點的元素可以使用生成器及其next方法
Set集合生成式
實際上{1,2,3} 相當於 set([1,2,3])
set支援 len in join
對集合新增多項
集合運算
推薦使用運算子而不是set方法函式,運算子看起來更簡潔,有更好的可讀性
-
6 # 程式設計師開源社群
有段時間沒推薦一些好的資源給大家了,明天就是週末了,又能愉快的玩耍了!今天推薦一些 Python 相關的書籍和教學影片,目的很簡單,就是防止你週末過度浪,週末留給自己一些學習的時間也是蠻好的,你和大牛的差距不是在正常上班的8小時,而是在另外16小時上 。說了這麼多,你懂的 。
《Python學習手冊(第3版)》
內容簡介:學習Python的主要內建物件型別:數字、列表和字典。使用Python語句建立和處理物件,並且學習Python的通用語法模型。使用函式構造和重用程式碼,函式是Python的基本過程工具。學習Python模組:封裝語句、函式以及其他工具,以便構建較大的元件。學習Python的面向物件程式設計工具,用於組織程式程式碼。學習異常處理模型,以及用於編寫較大程式的開發工具。瞭解高階Python工具,如裝飾器、描述器、元類和Unicode處理等。
《“笨辦法”學Python(第3版)》
是一本Python入門書籍,適合對計算機瞭解不多,沒有學過程式設計,但對程式設計感興趣的讀者學習使用。這本書以習題的方式引導讀者一步一步學習程式設計,從簡單的列印一直講到完整專案的實現,讓初學者從基礎的程式設計技術入手,**終體驗到軟體開發的基本過程。
Python網路程式設計(第3版)
針對想要深入理解使用Python來解決網路相關問題或是構建網路應用程式的技術人員,結合例項講解了網路協議、網路資料及錯誤、電子郵件、伺服器架構和HTTP及Web應用程式等經典話題。具體內容包括:全面介紹Python3中新提供的SSL支援,非同步I/O迴圈的編寫,用Flask框架在Python程式碼中配置URL,跨站指令碼以及跨站請求偽造攻擊網站的原理及保護方法,等等。
用Python寫網路爬蟲 第2版
本書是使用Python 3.6的新特性來爬取網路資料的入門指南。本書講解了從靜態網站提取資料的方法,以及如何使用資料庫和檔案快取技術來節省時間並管理伺服器負載,然後介紹瞭如何使用瀏覽器、爬蟲和併發爬蟲開發一個更為複雜的爬蟲。
藉助於PyQt和Selenium,你可以決定何時以及如何從依賴JavaScript的網站上爬取資料,以及更好地理解在受CAPTCHA保護的複雜網站上提交表單的方法。本書還講解了使用Python包(比如mechanize)進行自動化處理的方法、使用Scrapy庫建立基於類的爬蟲的方法,以及如何在真實的網站上實施所學的爬蟲技巧。
Python的書籍還有很多,目前蒐集到的電子書主要是以下幾本,相信有這幾本書籍助力,你的Python學習將會進步的更快!
另外,可能有些人是初學者,可能需要點基礎影片,可能學的更好,我也已經整理好了,可以一起下載,影片和電子書!
回覆列表
感覺知識點和小技巧得從書上和老師的講解中,總結筆記得到了。實用度一般和自己的操作熟練度也有關係。我感覺還是先學會基礎的內容比較好,基礎紮實才能靈活運用,才有技巧產生。我現在也是惆悵基礎部分,高樓大廈平地起,lz有進展可以互相交流下呀