python中类型错误、计数不采用关键字的错误怎么改_Python设计错误
你要求鏈接或其他來(lái)源,但實(shí)際上沒(méi)有。這些信息散布在許多不同的地方。什么才是真正構(gòu)成設(shè)計(jì)錯(cuò)誤的因素?您是只考慮語(yǔ)言定義中的語(yǔ)法和語(yǔ)義問(wèn)題,還是包括諸如平臺(tái)和標(biāo)準(zhǔn)庫(kù)問(wèn)題以及特定實(shí)現(xiàn)問(wèn)題等實(shí)用問(wèn)題?您可以說(shuō),從性能的角度來(lái)看,Python的動(dòng)態(tài)性是一個(gè)設(shè)計(jì)錯(cuò)誤,因?yàn)樗茈y實(shí)現(xiàn)一個(gè)簡(jiǎn)單高效的實(shí)現(xiàn),而且很難(我沒(méi)有說(shuō)完全不可能)生成一個(gè)包含代碼完成、重構(gòu)和其他好東西的IDE。同時(shí),你也可以為動(dòng)態(tài)語(yǔ)言的優(yōu)點(diǎn)辯護(hù)。
也許開(kāi)始考慮這個(gè)問(wèn)題的一種方法是看the language changes from Python 2.x to 3.x。當(dāng)然,有些人會(huì)爭(zhēng)辯說(shuō),print作為一個(gè)函數(shù)是不方便的,而另一些人則認(rèn)為這是一個(gè)改進(jìn)。總的來(lái)說(shuō),并沒(méi)有那么多的變化,而且大多數(shù)變化都是非常小和微妙的。例如,map()和filter()返回迭代器而不是列表,range()的行為類似于xrange()過(guò)去,而dict方法類似于dict.keys()返回視圖而不是列表。還有一些與整數(shù)相關(guān)的變化,其中一個(gè)大的變化是二進(jìn)制/字符串?dāng)?shù)據(jù)處理。現(xiàn)在是文本和數(shù)據(jù),文本總是Unicode。有幾個(gè)語(yǔ)法變化,但它們更多的是關(guān)于一致性,而不是修改整個(gè)語(yǔ)言。
從這個(gè)角度來(lái)看,至少?gòu)?.x開(kāi)始,Python就在語(yǔ)言(語(yǔ)法和語(yǔ)義)級(jí)別上設(shè)計(jì)得非常好。你可以一直爭(zhēng)論基于縮進(jìn)的塊語(yǔ)法,但我們都知道這不會(huì)導(dǎo)致任何結(jié)果。。。;-)
另一種方法是查看其他Python實(shí)現(xiàn)試圖解決的問(wèn)題。它們中的大多數(shù)以某種方式解決性能問(wèn)題,一些解決平臺(tái)問(wèn)題,還有一些添加或更改語(yǔ)言本身以更有效地解決某些類型的任務(wù)。Unladen swallow希望通過(guò)優(yōu)化運(yùn)行時(shí)字節(jié)編譯和執(zhí)行階段,顯著提高Python的速度。Stackless通過(guò)添加諸如微線程和微線程的結(jié)構(gòu)、允許雙向微線程通信的通道、協(xié)作或搶先運(yùn)行微線程的調(diào)度以及暫停和恢復(fù)微線程執(zhí)行的串行化,為高效、重線程應(yīng)用程序添加功能。Jython允許在Java平臺(tái)上使用Python,在.Net平臺(tái)上使用IronPython。Cython是一種Python方言,它允許調(diào)用C函數(shù)和聲明C類型,允許編譯器從Cython代碼生成有效的C代碼。{a7}將隱式靜態(tài)類型引入到Python中,并為獨(dú)立程序或擴(kuò)展模塊生成C++。PyPy在Python的一個(gè)子集中實(shí)現(xiàn)Python,并更改一些實(shí)現(xiàn)細(xì)節(jié),例如添加垃圾收集而不是引用計(jì)數(shù)。其目的是讓Python語(yǔ)言和實(shí)現(xiàn)開(kāi)發(fā)由于使用了更高級(jí)的語(yǔ)言而變得更加高效。Py V8通過(guò)V8 JavaScript引擎連接Python和JavaScript——可以說(shuō)它解決了一個(gè)平臺(tái)問(wèn)題。Psyco是一種特殊的JIT,它動(dòng)態(tài)地為當(dāng)前正在處理的數(shù)據(jù)生成運(yùn)行代碼的特殊版本,這可以提高Python代碼的速度,而無(wú)需編寫優(yōu)化的C模塊。
其中,可以通過(guò)查看PEP-3146來(lái)說(shuō)明Python的當(dāng)前狀態(tài),它概述了Unladen Swallow如何合并到CPython中。這個(gè)PEP被接受了,因此Python開(kāi)發(fā)人員可以判斷目前最可行的方向是什么。注意,它關(guān)注的是性能,而不是語(yǔ)言本身。
所以我真的想說(shuō),Python的主要設(shè)計(jì)問(wèn)題是性能領(lǐng)域的問(wèn)題,但這些基本上都是任何動(dòng)態(tài)語(yǔ)言都必須面對(duì)的挑戰(zhàn),Python語(yǔ)言家族和實(shí)現(xiàn)正在嘗試o解決問(wèn)題。至于像Javascript: the good parts中所列的那種徹底的設(shè)計(jì)錯(cuò)誤,我認(rèn)為需要更明確地定義“錯(cuò)誤”的含義,但您可能需要查看以下的想法和意見(jiàn):
總結(jié)
以上是生活随笔為你收集整理的python中类型错误、计数不采用关键字的错误怎么改_Python设计错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微型计算机接口与技术期末,微机原理与接口
- 下一篇: scanf和printf在c语言中的作用