Ⅰ python中的問題
上周旁聽了一個大學學長組織的線上Python交流會,里邊不乏充斥著各位行業大牛,講的內容確實精彩,可能對於Python經驗5年+的人來說,是受益匪淺,歡迎程度極高,恨不得跳出屏幕來表示贊同,畢竟很多提到的問題,我在工作中也很常見。
但是作為資歷一般的程序員,有一些理解起來還是有些困難,評論區里同時也還有另外一種聲音:聽不懂啊,還可以再細講一些嗎?
剛畢業,剛開始學Python,可以說說入門的嗎?
走了走了,零基礎滿臉懵……太難了,放棄Python了。我很能理解「另一種聲音」,我當初也是自學Python,剛開始的時候,我連循環結構和分支結構都搞不明白誰是誰,去找有經驗的人問,結果問了幾回人家就煩了,
後來自己從傻瓜式的資料庫軟體維格表入手,一步一步學習數據分析和處理。
再基於維格表學習Python,就容易很多。
所以,學習這種事,還是得靠自己。
根據我自己的經驗來說,想從零開始學Python,以後也確實想找相關的工作,基本是下邊這三種方式:
一、繼續上學。
報個這方面的專業,學上兩三年,老師就在身邊,有啥不懂的問題,直接辦公室走一趟,畢業的時候去找工作不成大問題;
二、看書自學。這塊可以看看GitHub【Python百天之路】,對細節把握很到位!
三、在網上找視頻課自學。
你可以利用碎片時間去學,時間上會更節省,我為了苦學Python大概買了十多門課吧。讀研讀博這件事時間成本比較高,我對自己沒有完全的自信,所以我思考再三,還是決定踏入社會浪潮了。(但是對於學習能力強,本科也比較優秀的學生,非常建議繼續讀研讀博,未來踏入社會起薪會非常高,我現在身邊就有兩個博士大神,我只能膜拜了。。。)
進入社會之後,我基本就是買書和看視頻自學,這回給你們來個全方位安利:
一、網站推薦
1、維格表
可視化資料庫、初學者的法寶,如果你想學習Python,最好還是先學會用這個軟體。在這里,你不僅可以學到什麼是可視化資料庫,還能掌握基本的數據分析和處理知識:篩選、排序、分組,不得不感嘆,功能太強大!
三、課程推薦
其實,除了學習網站和書籍,我還在網易雲課堂、51、慕課、CSDN學院買了不下10套關於Python入門的課,在得到也買了時間管理課。
我自己的話,因為我是想進行系統學習,也想節省一些學習時間,加上我也比較懶,非得有人督促著才能堅持不懈,所以我選了CSDN的Python訓練營。
Ⅱ 怎樣自學maya的python!
你可以先去【繪學霸】網站找「MAYA影視製作」板塊的【免費】視頻教程-【點擊進入】完整入門到精通視頻教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=307&zdhhr-11y04r-513039551
想要系統的學習可以考慮報一個網路直播課,推薦CGWANG的網路課。老師講得細,上完還可以回看,還有同類型錄播課可以免費學(贈送終身VIP)。
自製能力相對較弱的話,建議還是去好點的培訓機構,實力和規模在國內排名前幾的大機構,推薦行業龍頭:王氏教育。
王氏教育全國直營校區面授課程試聽【復制後面鏈接在瀏覽器也可打開】: www.huixueba.com.cn/school/3dmodel?type=3&zdhhr-11y04r-513039551
在「MAYA影視製作」領域的培訓機構里,【王氏教育】是國內的老大,且沒有加盟分校,都是總部直營的連鎖校區。跟很多其它同類型大機構不一樣的是:王氏教育每個校區都是實體面授,老師是手把手教,而且有專門的班主任從早盯到晚,爆肝式的學習模式,提升會很快,特別適合基礎差的學生。
大家可以先把【繪學霸】APP下載到自己手機,方便碎片時間學習——繪學霸APP下載: www.huixueba.com.cn/Scripts/download.html
Ⅲ 零基礎如何入門學習Python
Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。
Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、javaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。
Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。
Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。
Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。
Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、數據分析 、圖像識別、自然語言翻譯等。
Python全棧開發與人工智慧之自動化運維&開發學習內容包括:CMDB資產管理系統開發、IT審計+主機管理系統開發、分布式主機監控系統開發等。
Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。
Ⅳ python的應用領域有哪些
對於想要學習Python的同學來說,最該了解的就是其應用領域有哪些了,只有了解之後才能明確自己的目標,快來看看Python的應用領域都有哪些吧:
1、雲計算
PYTHON語言算是雲計算最火的語言,典型應用OpenStack。
2、Web前端開發
Python相比php、ruby的模塊化設計,非常利於功能擴展,多年來形成了大量優秀的web開發框架,且在不斷迭代。
目前優秀的全棧框架有django、框架flask、都繼承了python簡單、明確的風格,開發效率高,易維護,與自動化運維結合性較好。
3、人工智慧應用
基於大數據分析和深度學習而發展出來的人工智慧本質上已經無法離開python的支持,目前世界優秀的人工智慧學習框架如Google的TransorFlow 、FaceBook的PyTorch以及開源社區的神經網路庫Karas等是用python實現的。
甚至微軟的CNTK(認知工具包)也完全支持Python,而且微軟的Vscode都已經把Python作為第一級語言進行支持。
4、系統運維工程項目
Python在與操作系統結合以及管理中非常密切,目前所有linux發行版中都帶有python,且對於linux中相關的管理功能都有大量的模塊可以使用,例如目前主流的自動化配置管理工具:SaltStackAnsible(目前是RedHat的)。
目前在幾乎所有互聯網公司,自動化運維的標配就是python+Django/flask,另外,在虛擬化管理方面已經是事實標準的openstack就是python實現的,所以Python是所有運維人員的必備技能。
5、金融理財分析
量化交易,金融分析,在金融工程領域,Python語言不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤其擅長策略回測。
Ⅳ 談談Python要學多久才能勝任工作
零基礎報Python全棧脫產班,培訓周期一般是4至5個月,培訓費用在1.5至2萬,畢業之後就可以找工作,因為培訓班學習內容都比較貼合用人需求;如果自學的話,有足夠多的學習時間,足夠努力,學習能力超強,一般也得需要6至8個月吧,能否勝任工作,主要還需要看學習程度。
Ⅵ 如何零基礎入門 Python
第四:學習最忌三心二意
俗話說:「傷其十指不如斷其一指」,每門都學一點,還不如專心學好一個方向。這個道理誰都懂,可是又該學哪個方向呢?難道只能跟著感覺走嗎?不!最實際的方向,應該跟著工作走,工作需要什麼,我們就學什麼,把工作需要的技能熟練掌握,有很多好處。
首先,可以集中精力,集中在某一方面鑽研,這樣可以學得更快、更深入,因為學習更具有針對性,而且可以立即在工作中運用,可以馬上檢驗出學習的效果。對存在的問題進行深入研究,掌握的知識也會更加牢固。
其次,學習與工作結合在一起,工作時間也就成了學習時間,這樣就突破了三個8小時的限制:有人說,我們每天所擁有的時間可以分為三個8小時,工作8小時,睡覺8小時,另外還有8小時可以自己自由支配。工作和睡覺的兩個8小時大家都一樣,決定人生高度的是另外這個8小時。當我們把學習的焦點放到與工作相關的知識上時,工作時間中的很大一部分,同時也就成了寶貴的學習時間,這真是一舉兩得的美事啊。
最後,問題是最好的學習機會。工作就是不斷發現問題、分析問題、最終解決問題的過程,晉升之門將永遠為那些隨時解決問題的人敞開著。可見,工作過程中有問題是正常,沒有問題才是真正的問題。在發生問題時,能勇於面對問題、解決問題的人,才是公司真正的骨幹。
所以,學習與工作有關的內容不僅高效,可以在工作中實時檢查自己的學習效果,而且對增強自己的工作能力也有很大的作用。
工作後你可能會沒有更多的時間用來學習,但不提升自己又容易被淘汰,所以學習與工作相關的內容絕對是一舉兩得。
Ⅶ 從零基礎到入門,該如何學習python
1、選擇好學習方向:首先要記住學習Python主要目的是用語言來解決問題,而不是了解這門語言。
Python可以應用的方向有很多,Python基礎知識學習完之後,如果應用方向不同,需求也是不同的;雖然Python需要系統化的學習,但是在學習Python的時候,想要告訴大家還是需要提前確定一下自己感興趣的方向,有針對性的學習更為重要。
2、規劃好學習路線:當我們確定好自己的發展方向之後,下一步就是順著方向去學習,建立好自己的學習路線。
要有系統化的學習路線,需要完成什麼樣的目標,需要學習哪些知識,需要懂哪些知識,這樣每次學習一個部分,就可以有實際的結果輸出,結果的輸出才可以鼓勵我們進行下一步的學習。
3、合理的時間規劃:最後就是規劃好自己的學習時間,每天進度是什麼,每天學習幾個小時都是需要提前確定的,有計劃有規劃的去學習,堅持下來才會有意外的收獲。
Ⅷ 零基礎學習python需要怎麼入手
編程零基礎的學習Python全棧可以按照以下內容來:
階段一:Python開發基礎
Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
階段二:Python高級編程和資料庫開發
Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。
階段三:前端開發
Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、JavaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。
階段四:WEB框架開發
Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。
階段五:爬蟲開發
Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。
階段六:全棧項目實戰
Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
階段七:數據分析
Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。
階段八:人工智慧
Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、圖形識別、無人機開發、無人駕駛等。
階段九:自動化運維&開發
Python全棧開發與人工智慧之自動化運維&開發學習內容包括:CMDB資產管理系統開發、IT審計+主機管理系統開發、分布式主機監控系統開發等。
階段十:高並發語言GO開發
Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。
Ⅸ 你會碎片化學習嗎你知道哪些碎片化學習技巧呢
如果你想利用碎片時間來提升自己,卻總是有這樣的擔憂,工作太忙,沒時間學習,空閑時間太少,學了等於沒學,碎片化學習不能形成系統化知識。有這樣疑問的同學請在公屏上扣個一、這篇文章我會分享幾個碎片化學習方法,看到最後你會發現,原來碎片化學習也能掌握系統的知識。老規矩點贊在看是個好習慣。
Ⅹ Python面試題,線程與進程的區別,Python中如何創建多線程
進程和線程這兩個概念屬於操作系統,我們經常聽說,但是可能很少有人會細究它們的含義。對於工程師而言,兩者的定義和區別還是很有必要了解清楚的。
首先說進程,進程可以看成是 CPU執行的具體的任務 。在操作系統當中,由於CPU的運行速度非常快,要比計算機當中的其他設備要快得多。比如內存、磁碟等等,所以如果CPU一次只執行一個任務,那麼會導致CPU大量時間在等待這些設備,這樣操作效率很低。為了提升計算機的運行效率,把機器的技能盡可能壓榨出來,CPU是輪詢工作的。也就是說 它一次只執行一個任務,執行一小段碎片時間之後立即切換 ,去執行其他任務。
所以在早期的單核機器的時候,看起來電腦也是並發工作的。我們可以一邊聽歌一邊上網,也不會覺得卡頓。但實際上,這是CPU輪詢的結果。在這個例子當中,聽歌的軟體和上網的軟體對於CPU而言都是 獨立的進程 。我們可以把進程簡單地理解成運行的應用,比如在安卓手機裡面,一個app啟動的時候就會對應系統中的一個進程。當然這種說法不完全准確, 一個應用也是可以啟動多個進程的 。
進程是對應CPU而言的,線程則更多針對的是程序。即使是CPU在執行當前進程的時候,程序運行的任務其實也是有分工的。舉個例子,比如聽歌軟體當中,我們需要顯示歌詞的字幕,需要播放聲音,需要監聽用戶的行為,比如是否發生了切歌、調節音量等等。所以,我們需要 進一步拆分CPU的工作 ,讓它在執行當前進程的時候,繼續通過輪詢的方式來同時做多件事情。
進程中的任務就是線程,所以從這點上來說, 進程和線程是包含關系 。一個進程當中可以包含多個線程,對於CPU而言,不能直接執行線程,一個線程一定屬於一個進程。所以我們知道,CPU進程切換切換的是執行的應用程序或者是軟體,而進程內部的線程切換,切換的是軟體當中具體的執行任務。
關於進程和線程有一個經典的模型可以說明它們之間的關系,假設CPU是一家工廠,工廠當中有多個車間。不同的車間對應不同的生產任務,有的車間生產汽車輪胎,有的車間生產汽車骨架。但是工廠的電力是有限的,同時只能滿足一個廠房的使用。
為了讓大家的進度協調,所以工廠需要輪流提供各個車間的供電。 這里的車間對應的就是進程 。
一個車間雖然只生產一種產品,但是其中的工序卻不止一個。一個車間可能會有好幾條流水線,具體的生產任務其實是流水線完成的,每一條流水線對應一個具體執行的任務。但是同樣的, 車間同一時刻也只能執行一條流水線 ,所以我們需要車間在這些流水線之間切換供電,讓各個流水線生產進度統一。
這里車間里的 流水線自然對應的就是線程的概念 ,這個模型很好地詮釋了CPU、進程和線程之間的關系。實際的原理也的確如此,不過CPU中的情況要比現實中的車間復雜得多。因為對於進程和CPU來說,它們面臨的局面都是實時變化的。車間當中的流水線是x個,下一刻可能就成了y個。
了解完了線程和進程的概念之後,對於理解電腦的配置也有幫助。比如我們買電腦,經常會碰到一個術語,就是這個電腦的CPU是某某核某某線程的。比如我當年買的第一台筆記本是4核8線程的,這其實是在說這台電腦的CPU有 4個計算核心 ,但是使用了超線程技術,使得可以把一個物理核心模擬成兩個邏輯核心。相當於我們可以用4個核心同時執行8個線程,相當於8個核心同時執行,但其實有4個核心是模擬出來的虛擬核心。
有一個問題是 為什麼是4核8線程而不是4核8進程呢 ?因為CPU並不會直接執行進程,而是執行的是進程當中的某一個線程。就好像車間並不能直接生產零件,只有流水線才能生產零件。車間負責的更多是資源的調配,所以教科書里有一句非常經典的話來詮釋: 進程是資源分配的最小單元,線程是CPU調度的最小單元 。
啟動線程Python當中為我們提供了完善的threading庫,通過它,我們可以非常方便地創建線程來執行多線程。
首先,我們引入threading中的Thread,這是一個線程的類,我們可以通過創建一個線程的實例來執行多線程。
from threading import Thread t = Thread(target=func, name='therad', args=(x, y)) t.start()簡單解釋一下它的用法,我們傳入了三個參數,分別是 target,name和args ,從名字上我們就可以猜測出它們的含義。首先是target,它傳入的是一個方法,也就是我們希望多線程執行的方法。name是我們為這個新創建的線程起的名字,這個參數可以省略,如果省略的話,系統會為它起一個系統名。當我們執行Python的時候啟動的線程名叫MainThread,通過線程的名字我們可以做區分。args是會傳遞給target這個函數的參數。
我們來舉個經典的例子:
import time, threading # 新線程執行的代碼: def loop(n): print('thread %s is running...' % threading.current_thread().name) for i in range(n): print('thread %s >>> %s' % (threading.current_thread().name, i)) time.sleep(5) print('thread %s ended.' % threading.current_thread().name) print('thread %s is running...' % threading.current_thread().name) t = threading.Thread(target=loop, name='LoopThread', args=(10, )) t.start() print('thread %s ended.' % threading.current_thread().name)我們創建了一個非常簡單的loop函數,用來執行一個循環來列印數字,我們每次列印一個數字之後這個線程會睡眠5秒鍾,所以我們看到的結果應該是每過5秒鍾屏幕上多出一行數字。
我們在Jupyter里執行一下:
表面上看這個結果沒毛病,但是其實有一個問題,什麼問題呢? 輸出的順序不太對 ,為什麼我們在列印了第一個數字0之後,主線程就結束了呢?另外一個問題是,既然主線程已經結束了, 為什麼Python進程沒有結束 , 還在向外列印結果呢?
因為線程之間是獨立的,對於主線程而言,它在執行了t.start()之後,並 不會停留,而是會一直往下執行一直到結束 。如果我們不希望主線程在這個時候結束,而是阻塞等待子線程運行結束之後再繼續運行,我們可以在代碼當中加上t.join()這一行來實現這點。
t.start() t.join() print('thread %s ended.' % threading.current_thread().name)join操作可以讓主線程在join處掛起等待,直到子線程執行結束之後,再繼續往下執行。我們加上了join之後的運行結果是這樣的:
這個就是我們預期的樣子了,等待子線程執行結束之後再繼續。
我們再來看第二個問題,為什麼主線程結束的時候,子線程還在繼續運行,Python進程沒有退出呢?這是因為默認情況下我們創建的都是用戶級線程,對於進程而言, 會等待所有用戶級線程執行結束之後才退出 。這里就有了一個問題,那假如我們創建了一個線程嘗試從一個介面當中獲取數據,由於介面一直沒有返回,當前進程豈不是會永遠等待下去?
這顯然是不合理的,所以為了解決這個問題,我們可以把創建出來的線程設置成 守護線程 。
守護線程守護線程即daemon線程,它的英文直譯其實是後台駐留程序,所以我們也可以理解成 後台線程 ,這樣更方便理解。daemon線程和用戶線程級別不同,進程不會主動等待daemon線程的執行, 當所有用戶級線程執行結束之後即會退出。進程退出時會kill掉所有守護線程 。
我們傳入daemon=True參數來將創建出來的線程設置成後台線程:
t = threading.Thread(target=loop, name='LoopThread', args=(10, ), daemon=True)這樣我們再執行看到的結果就是這樣了:
這里有一點需要注意,如果你 在jupyter當中運行是看不到這樣的結果的 。因為jupyter自身是一個進程,對於jupyter當中的cell而言,它一直是有用戶級線程存活的,所以進程不會退出。所以想要看到這樣的效果,只能通過命令行執行Python文件。
如果我們想要等待這個子線程結束,就必須通過join方法。另外,為了預防子線程鎖死一直無法退出的情況, 我們還可以 在joih當中設置timeout ,即最長等待時間,當等待時間到達之後,將不再等待。
比如我在join當中設置的timeout等於5時,屏幕上就只會輸出5個數字。
另外,如果沒有設置成後台線程的話,設置timeout雖然也有用,但是 進程仍然會等待所有子線程結束 。所以屏幕上的輸出結果會是這樣的:
雖然主線程繼續往下執行並且結束了,但是子線程仍然一直運行,直到子線程也運行結束。
關於join設置timeout這里有一個坑,如果我們只有一個線程要等待還好,如果有多個線程,我們用一個循環將它們設置等待的話。那麼 主線程一共會等待N * timeout的時間 ,這里的N是線程的數量。因為每個線程計算是否超時的開始時間是上一個線程超時結束的時間,它會等待所有線程都超時,才會一起終止它們。
比如我這樣創建3個線程:
ths = [] for i in range(3): t = threading.Thread(target=loop, name='LoopThread' + str(i), args=(10, ), daemon=True) ths.append(t) for t in ths: t.start() for t in ths: t.join(2)最後屏幕上輸出的結果是這樣的:
所有線程都存活了6秒。
總結在今天的文章當中,我們一起簡單了解了 操作系統當中線程和進程的概念 ,以及Python當中如何創建一個線程,以及關於創建線程之後的相關使用。
多線程在許多語言當中都是至關重要的,許多場景下必定會使用到多線程。比如 web後端,比如爬蟲,再比如游戲開發 以及其他所有需要涉及開發ui界面的領域。因為凡是涉及到ui,必然會需要一個線程單獨渲染頁面,另外的線程負責准備數據和執行邏輯。因此,多線程是專業程序員繞不開的一個話題,也是一定要掌握的內容之一。