為什麼覺得Python學習起來容易,但是實際開發應用難以掌握?

每日一發小視頻


這個感覺是對的,學起來容易用起來難。



Python作為編程語言裡比較容易上手的語言,他的語法就是一種腳本語言的特點,如果你玩過Linux中的shell腳本,敲命令的感覺與Python很相似。



語言只是一種工具,無論是Python還是Java,學只是學語法,實際上運用的話,Python涉獵還是很廣泛的。

比如大數據和人工智能兩大領域,Python在其中的難點不是怎麼用Python去完成這項功能,而是怎麼用Python去建模,去實現算法。



歸根結底,Python不難,難的根源還是這些數學問題。

用Python的很大一個原因也是因為他的簡單語法,使用者不需要過多關注怎麼寫更好,而可以把重心放在寫什麼的層面。

我是“極客宇文氏”,對編程感興趣的朋友可以關注我

極客宇文氏


其實很多人認為Python學起來容易,但是這緊緊限於入門學習,看起來簡單,但是學精並不是一件容易的事。

Python的入門的確是很簡單,我當初之所以能堅持自學就是被這種簡潔驚豔到了,沒有繁瑣的語法,格式也是優美的縮進方式,真的是可以像散文那樣讀寫。Python其實也可以稱之為腳本語言,一個腳本實現一個功能簡直不要太方便,還有許多人可能剛開始都會被爬蟲腳本著迷,日常一個小腳本實現一個想要的功能美滋滋。但是你覺得學成這樣就可以找工作了?圖樣圖森破?這樣還是僅僅在入門階段!

Python的高級語法遠比我們想的強大,比如類對象,進程,異步,裝飾器等等

日常小腳本根本很少會用到高級的語法,Python真正強大之處在於他是面相對象編程,類對象才是Python的大殺器,尤其是內置的強大的魔法方法,讓你眼花繚亂。我們日常使用的模塊基本上都是通過類來實現的,通過調用類來調用類方法,我們經常會遇到導入模塊的類,但是有的可以直接使用有的需要先實例化,這牽扯到類的三種方法,實例方法,類方法,靜態方法等。

比如Python中的線程進程還有異步,其內置了強大的功能模塊,雖說Python內置了全局鎖(GIL),但是進程和異步都是很有用的。

再比如Python中的騷操作~裝飾器,這玩意剛開始學的時候一直搞不懂這玩意在什麼地方會有什麼用?還有語法糖的寫法,就覺得很流弊的樣子!

再說說實際開發應用

其實Python還是可以做開發的,比如國內的豆瓣、知乎等都使用了Python開發。尤其是當你實際做開發項目的時候,你可能會有一種錯覺,我去,以前學的都是假Python嗎?還可以這樣寫,為毛現在都看不懂。

我現在在用Python做數據挖掘,曾經還專門報個班學Python開發,主要是後端開發,用的都是Python的高級用法。1~主要是通過Python類來實現功能。2~和數據庫交互的ORM模式,一個表就是一個類,表中一行數據就是一個類的實例。3~權限限制通過裝飾器實現,還有一類特殊的裝飾器property,讓你把類方法變成屬性的方式來調用,用來設置密碼,修改密碼,加密密碼十分的方便。4,通過魔法方法__str__,__repr__進行調試。

總的來說,Python的入門比較簡單,但是Python的進階就難了,掌握Python中精妙的用法才能體會到作者創造這門語言背後的哲學思想。



人生苦短,我用Python


愛數據的小司機


相對於C、C++、Java這些語言來說,python是比較簡單的,入門很容易。對有些基礎和毅力的同學來說,自學一個月左右就能入門了。

python能做後端開發、網絡爬蟲、數據分析、人工智能等項目。開發上面隨便一個項目,都不是件容易的事。

對於後端開發,你可以使用大包大攬的Django框架,可以使用支持高併發的Tornado框架,還可以使用易於擴展的Flask框架。對於這些框架的選擇就不是一件容易的事,剛入門的新手就更不用說。就算選好了框架,開始高興的擼代碼,這樣就開始了嗎?總得考慮代碼的擴展性、可維護性、邏輯是否嚴密等問題。寫代碼是件簡單的事,但要想把代碼寫好,卻是件非常不簡單的事。

對於做網絡爬蟲,把代碼寫出來就完了嗎?你不得考慮是否並行、防止反爬,你不得掌握瀏覽器的知識嗎?

同樣的,對於做數據分析和人工智能相關項目,你要學習概率、傅立葉變換、線性代數等知識;你要熟悉決策樹、隨機森林、貝葉斯等算法。

看到這裡,你是不是感覺開發應用非常複雜?對於剛入門的小夥伴來說,確實有些複雜;但是當你硬著頭皮幹下去的時候,你就會感覺越來越簡單,越來越得心應手。

對於碼農來說,還是要有信心的,不能畏手畏腳。不懂就要問,不懂就要查資料,大神就是這樣一步步走來的。


贊哥哥


先看下python官網中解釋人們偏向用python的原因:

Python is powerful... and fast;
plays well with others;
runs everywhere;
is friendly & easy to learn;
is Open.
These are some of the reasons people who use Python would rather not use anything else.

從某種程度上說, Python的強大(Powerfull), 和容易學習(easy to learn)是有點矛盾的,這麼NB的一個玩意兒, 讓你幾天就全部解鎖所有功能,怎麼可能?


再說下我這些年來學python的幾個階段性體會:

剛開始花幾天時間鼓搗python,就開始用機械鍵盤碼python代碼了,和C比起來,感覺飛起來了,感覺自己可以在python的海洋裡任意遨遊了,總之很膨脹。(python的皮毛學起來很容易,這些皮毛也能解決絕大多數問題)


過了一段時間,發現自己的代碼跑得很慢(遊得很慢),才發現簡單的語句下很多坑:比如python的list的append和extend,內部實現差別很大,一不留心就跑慢了,開始沮喪。這時候開始看python的內部實現,結合數據結構和算法來理解python。(python的內部實現,和數據結構和算法密不可分)


又過了一段時間, 自己的代碼總算跑得比較快了,開始學習大牛寫的Python代碼。發現很多語法沒見過,發現代碼也可以這樣寫,再回頭看自己的自己的歷史代碼,自己讀起來都覺得很噁心(遊得很醜)。(大神寫的python很優雅)

Python的大型開發很多都用python, 比如tensorflow, pytorch等等,套路基本都是核心代碼用c、c++實現, 非核心代碼、API用python包裝一下。


總之: python入門容易,準確的說是一些基本語法容易學習,並且用這些基本語法能實現絕大多數功能性需求。而python的難以掌握,是指需要長時間的積累(算法、設計模式等),才能寫出高性能、優雅的代碼。


PS: 所有的語言語法都是嚴謹的,建議找個順手點的編輯器,就能解決很多縮進的問題。


平凡科技


感覺Python很簡單,可是實際開發應用的時候覺得都是報錯,這種情況我帶過的很多學生出現過。因為在這之前沒有相關領域的經驗,沒開發過軟件的時候,我們很那理解oop。學習重要的是一個過程,下面一一回答題主的一些問題。

Python學習起來容易,但是實際開發應用難以掌握?

在說這個話題之前,首先我們要知道Python重要優勢就在於語法簡潔,而簡潔是要付出代價的。就是犧牲了一些看起來不是很重要的細節,比如函數的參數類型和返回類型。但是缺少了這些看起來不抬起眼的細節以後,程序員就會容易出現題主所說的很多BUG,而且這些Bug是很難發現的那種。

跟傳統的實際開發語言不同,使用python做大型開發很少?

如果我們對Python更容易寫出來一些很難發現的BUG沒有太多的異議的話,我們可以繼續說了。(很多人會在這時候說可以小心就沒問題了,都是自己沒有注意等等的言論)這邊給大家找了PegasusWang的對於在大型項目上,Python是個爛語言的採訪中的回答:

我們對編程語言和使用進行了大規模的研究,因為它涉及到軟件質量。我們使用的 Github 上的數據,具有很高的複雜性和多個維度上的差異的特性。我們的樣本數量允許我們對編程語言效果以及在控制一些混雜因素的情況下,對編程語言、應用領域和缺陷類型之間的相互作用,進行一個混合方法的研究。研究數據顯示,函數式語言是好於過程化語言的;不允許隱式類型轉換的語言是好於允許隱式類型轉換的語言的;靜態類型的語言是好於動態類型的語言的;管理內存的語言是好於非管理的語言的。進一步講,編程語言的缺陷傾向與軟件應用領域並沒有關聯。另外,每個編程語言更多是與特定的 bug 類別有關聯,而不是與全部 bug。

動態語言“靈活快速”表達能力強還不用寫類型標註自己就可以scale,但是不存在的,scale起來還是得當靜態語言寫,該加的約束一樣不漏的加回來。

使用python需要掌握數理邏輯方面的知識

之前使用Python的話基本上是關於Python網頁開發等。但是近幾年由於大數據、人工智能比較火,所以使用的側重點就不一樣了。如果你要是單純的做個web是可以的,但是要深入的話,需要掌握數理邏輯方面的知識。學習步驟如下:

  • 學習Python課程(視頻)--->入門書籍---->論壇+技術博客

  • 在社區找到志同道合或者一起學習的小夥伴

  • 項目實踐,從小到大的項目用來練手

上述學習路線的配套視頻都可以直接找我要,上述有關知識點是很系統全備的。如果要做到數據挖掘方面的工作的話,那麼一直到第七個階段都要全部學習的。如果還想要發展人工智能方面最後一個階段也要拓展學習。那麼深度學習和機器學習相關的內容就要多多看書了。其實有關數據方面的工作,數學基礎並不是很難的,相對來說就是高數相關的代數等等會公式推導。


傳智播客


路子走錯了,Python開發是培訓機構用來騙錢才這樣說。Python主要功能是用來計算的。

  • 傳的最多的是ig用Python開發的,其實,只是一開始,人家早已轉其他語言。

  • 真正用來開發的web或者軟件的是Java。

  • 學習Python不是要掌握數理邏輯方面的知識,而是把數理模型用python表達出來,或者調用別人的包來表達出來。

  • python做編程效率高是因為有很多的包供可以調用,覺得沒有掌握,主要是使用的少,看的資料少,需要的包都不知道叫什麼還在埋頭造輪子。

  • 多上同性交友網站GitHub。


技術信仰


是不是可以這樣理解,就像下棋,玩撲克麻將,炒股,規則很容易懂,但是想贏,想賺錢就沒那麼容易了


猩猩點不著燈


幾乎所有的人都說Python易學,容易理解,可以說是所有的編程語言裡面最簡單的了。


為什麼會有學起來容易,而在實際的項目中用起來難的感覺呢?究其原因:


1、基礎掌握的不夠牢固,平時練習的少,很多人在學習的編程的時候,看書或者是看視頻教程都能夠很好的理解,但是真正做練習,做項目的時候就不知道如何下手了,所以說在學習的過程中加強實踐。


2、項目經歷的較少,對編程不是那麼敏感,就需要時間倆彌補了。你要是不經歷幾個項目,怎麼知道Python為什麼容易學,怎麼知道python好理解,怎麼知道python有哪些超級好用的框架,比如django,tonado之類的。可能是做的項目少,做項目是最快的提高方式了,解決任何實際的需求,都是煎熬和提高的過程。


所以說,要想很好的掌握Python,除了日常的學習之外,更多的是需要多操作,多實踐,提升自己的實踐能力,去檢驗自己的理論成果,提升自己的項目經驗,才能體會作者創造Python這門語言背後的哲學思想。


玩著學編程


剛寫完一個應用花了10個小時。其它行業用python做些小應用是完全足夠了。專業人士只會python真的不夠。各語言要互補。下面這個程序,python在進程調度上怎麼做都不完美。調用幾行C的代碼。輕鬆搞定。但是C來寫整個程序。開發效率完全比不了python。





Jeff大牛


其實,python是一種相當高級的計算機程序設計語言。通俗來講的話,就是編程語言。而我們需要注意的是,在計算機編程語言中,越低級的語言是越難學的,而越高級的編程語言是越容易學的。這個原因有點複雜,我就不多說了。但是越容易學的就一定能很好掌握嗎? 答案當然不是! 就像我們從小學到大的語文這一門科目,你想語文不像英語看不懂,那應該好學吧。但是有多少人敗在了語文上。

語文入門很簡單,認字就行了,但是認知會讀就能學好嗎,當然不是啦。 python就像是這樣,學起來容易,運用起來很難,實際開發應用需要很好的操作才可以做到,這就像是入淺出深。

總的來說,還是要努力鑽研,找到合適的應用方法,學以致用,學和用是兩個方面,兩個都要做到並不簡單,但是隻要努力,沒有不可能。


分享到:


相關文章: