⑴ 請問,用python作web有什麼弊端,這些弊端需要通過什麼技術來解決
性能比較差,出現bug難以調試
⑵ Python有什麼缺點呢
1. - 運行速度慢,因為Python是解釋型語言,是一種高級語言,代碼會在執行的時候,一行一行的使用解釋器翻譯成底層代碼,翻譯成機器碼,而這個過程非常耗時,所以他運行過程中,比很多語言的代碼都慢了很多。
- 線程不能利用多CPU,這是Python最大的確定,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任何時刻僅有一個線程在執行,Python的線程是操作系統的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即使在多核CPU平台上,由於GIL的存在,所以禁止多線程的並行執行。
Python的優缺點可以看看傳智播客的社區,裡面很多技術老師寫的相關文章。並且有學習線路圖適合小白學習,每個板塊下面都有配套視頻。
⑶ Python 有什麼缺點
python的整個系統,我其實有非常多的不滿。但是用任何一門語言都是取捨問題,如果有一門語言,庫夠多,已讀,易用,性能高,我毫不猶豫立刻轉過去。python的強處在於龐大的庫,還有非常好的易讀和易用性。但是相比來說,性能一直是個問題。python的實現性能大約和C相差五倍上下。如果是大規模計算問題,大約能差10倍以上。當然,我們可以寫C擴展,但是這就不是使用python了。我們也可以說,很多時候我們不需要這么快的速度。這是個事實,但是不改變python性能差的事實。 python不但性能差,還有GIL這個玩意。以至於我現在對高並發計算都採取多進程的模式。多進程模式的通訊效率肯定比多線程低,而且麻煩。
另外,python在底層設計上,也表現出很強的實用主義傾向。這是比較外交術語的詞彙,更加直白的說法應當是,混亂,不知所謂。在閉包設計上採用free variable設計,而不是lisp中的environs設計。區別?你試試看在外層閉包中from lib import *。由於引入不定個數名稱,free variable無法處理。類似的問題還有LEGB規則,新手往往要花很長時間研究這個例子究竟是怎麼錯的: a = 1 def f(): print a a = 2 我勒個去,這種反直觀反人類的事情都有,還敢說自己易讀。
還有坑爹的元編程,這東西根本是坑爹中的坑爹貨。如果你用過多重繼承,大概就知道python的整個OO系統看起來根本是大型的模擬,到處都是亂糟糟的。C++怎麼解決多重繼承的?你最好別用(真心說,這可比python更加坑爹)。java怎麼解決多重繼承的,只能繼承Interface。其實這是變相的變成了Interface-Implement模式。python怎麼解決的?MRO!為什麽一個類加個__metaclass__就會改變性質啊,為什麽一個類去生成另一個類的寫法是——我基本不記得了,反正web.py裡面有用到,需要的話去炒栗子吧。為什麽方法要隱藏居然要改名字加__啊。你到底是在做OO還是在看起來像OO的東西上狂打補丁啊魂淡。
lambda表達式弱智。我和人討論過,lambda是否是圖靈完備的。結論還是完備的,不過需要藉助Y combinator。何必呢?由於強調lambda的快速特性,因此將lambda強制在一行以內(沒有結束標記),導致python其實是沒有匿名函數的。一個callback數組寫的難過死。
語法糖太多了點,當然,這是純粹的個人感覺。語法糖是把雙刃劍,用的好,可以簡化編寫和閱讀,但是太多,往往容易引入語法混亂和額外的約束。
另外,語言的自構建特性混亂。雖說不是每門語言都強調自構建特性,但是通常而言,都是使用C實現一個內核,由內核實現一些基礎操作。再由基礎操作實現更復雜的操作。每層的邊界都是比較清晰的。誰來告訴我,python中有多少庫在移植時是由純python實現的?庫的相互依賴層級是?
python的沙盒化也是個問題,如果沙盒做的夠好,我完全可以把python作為一個客戶級別的平台。用C寫一個很簡單的類似瀏覽器的東西,下載一個URL的python包回去運行(或者僅僅檢查更新)。從而保證本地效果/跨平台/安全性。現在?一個都保證不了。我連把一個python包轉移到另一台同構設備上都很麻煩(如果兩者不是嚴格匹配,例如系統差異,系統版本差異)無論是web開發還是移動終端開發都必須走傳統模式。
⑷ 做為一個寬客,應該選擇Matlab還是Python呢各有什麼利弊
我平時工作都是寫python, 我的畢業設計是MATLAB。我是寫Java Web入行的
1. Python免費,MATLAB收費。
2. 以前MATLAB比較擅長的有大量矩陣和向量的數值計算,但是效率不一定最高。
Python也有非常豐富的數學數字的庫。效率還可以。大部分工作Python都可以完成
3. Python學起來入門比較低,寫起來方便。MATLAB反正我學的時候覺得比Python難
4. 使用人數,Python遠高於MATLAB,有問題的時候很容易檢索到解決方案。
主要還是看你自己的需求吧。推薦使用Python。nostmabole手打望採納
⑸ 做為一個寬客,應該選擇Matlab還是Python呢各有什麼利弊
我自己曾經把一個策略框架用Matlab和Python同時寫了一遍。
Matlab的優點是數據格式規范,工具包調用簡單,包之間完全不存在相互沖突。
Python的優點在於我能較方便的寫出一個可以獨立運行的GUI,而且數據讀取、處理更順手。基本都是膠水語言的優點。
而且,該框架Python的運行速度比Matlab快五倍左右(粗略估計)。
但是,我很確定的發現,Matlab更適合我這樣的策略研究者,在Matlab下不會被策略之外的bug頻繁打斷邏輯思路。
我現在研究策略主要用Matlab,Python會用來讀取和清洗數據,如果對運行速度有要求,會使用其他解決方案或者Python。
註:曾經因為一個工具包而使用R,感覺結果不對勁,發現工具包本身有錯誤。和包的作者溝通後確定了。從此對R再也提不起興趣。不知道Python甚至Matlab是否也存在這種問題。總之,調用工具包都要小心。
⑹ 零基礎,毫無編程經歷自學python怎麼樣
完全沒有問題,但有兩個前提和一個弊端!
前提:
1. 十足的意願及興趣
2. 拒絕浮躁
第一條好理解,第二做到不易
弊端:
由於資料及教程的缺失(或太多)導致沒有清晰的知識地圖,及路線圖,也就是坑太多及試錯成本太高!
自學能力是程序員的必要技能,但目的為掌握或入門也不必排斥培訓!
⑺ 有沒有人覺得python的縮進很不爽
初學python,總是不是很能接受python的縮進規定,主要主要,lz是一個對自己的代碼規范很糾結的人
首先,lz最最無法接受的是,代碼塊分隔完全靠縮進和空行了,C裡面用的大括弧沒有了啊!(T_T),現在好了,縮進基本是死的,代碼塊視覺上的
分隔靠空行,但是但是,條件語句循環語句之前要空行(更糾結的人break、continue這些都要空行),return語句前要空行,語句間邏輯分隔
要空行,函數分隔要空行,class分隔要空行⋯⋯視覺上就是一片的不爽,然後為了更清楚,只能某些空兩行,但是又不想空再多比如三行四行⋯⋯
為了滿足單行字元數限制,有時候不能寫很長的類似a().b().c().d().e().f().g()這樣的代碼了,這個東西是一句,分兩行
寫的話風格上一定要縮進⋯⋯就⋯⋯你知道,不能縮進;分兩個語句寫,又糾結多定義一個非常臨時的變數(變數命名很多時候也是很糾結的事情)⋯⋯
然後惡意吐槽:好像很多人認為規定縮進可以使寫出來的代碼更可讀,但是因為解析器會報錯而造成的好處被人津津樂道總是讓人很想吐槽,在lz看來,
單個函數語句數量限制、單行字元長度限制、tab不使用空格代替、尾空格這些,都是無法接受的,既然解析器這么牛還能代碼規范都管了(雖然作者可能並沒有
這樣的意思),那何不把上面這些都管管啊?
⑻ python較於php做網站來說有什麼優點或缺點嗎
你這個問題有點大。。。
說說我的想法,也不一定對。我當時做個人網站的時候,也考慮過用哪種語言,最後選擇了python,說說我的理由:
1、python能幹很多事,python不能完成的,可以用C/C++做成動態鏈接庫,然後用python調用。
2、有pypy等實現,將python代碼編譯為二進製程序,運行效率高。可以用低配置的VPS,承受更高配置的VPS才能承載的業務量。
3、Tornado支持微線程,可以在只有1個CPU核心的VPS上實現低消耗的高並發。
對PHP不大熟,不過PHP非常流行,流行就代表教程多,幾乎所有的坑都被人踩過了,遇到問題了網上一搜都能得到答案。
⑼ Python怎麼解決不聲明變數類型的弊端
方法如下: type(變數),輸出的結果就是變數的類型; 在Python裡面變數在聲明時,不需要指定變數的類型,變數的類型是動態指定的; 也就是說變數的類型,根據給出的賦值語句決定。
⑽ python用pop函數獲取值,有什麼弊端
修改了原來列表值