想變成Python高手要了解的問題
發布時間:2023-05-26 13:28:33 已幫助:1人 來源:北京猿來教育
很多初學Python的學員不知道該怎樣進行有效的學習,對于初學者而言,要做的就是專注于Python這一門語言,Python不僅可以用于開發應用程序,還可以用于解決算法和數據結構問題,那么想變成Python高手要了解的問題呢?
使用縮進分組非常優雅,提高了普通Python程序的清晰度;由于沒有開始/結束括號,因此解析器感知分組與人類讀者之間不會存在分歧;
2、為什么Python字符串不可變?
我們可以在創建時為它分配空間,并且存儲需求固定不變;Python中的字符串被視為與數字一樣“基本”,任何動作都不會將值8更改為其他值。
3、為什么必須在方法定義和調用中使用“self”?
首先,明顯顯示出,使用的是方法或實例屬性而不是局部變量;這意味著如果要顯式引用或從特定類調用該方法,不需要特殊語法;最后,它解決了變量賦值的語法問題。
4、為什么不能在表達式中賦值?
大多數是為了少打一些字的黑客方案,但使用任意或隱含的語法或關鍵詞,并不符合語言變更提案的簡單標準:它應該直觀地向尚未被介紹到這一概念的人類讀者提供正確的含義。
5、為什么lambda表達式不含語句?
因為Python的語法框架不能處理嵌套在表達式內部的語句。然而,在Python中,這并不是一個嚴重的問題。
與其他語言中添加功能的lambda表單不同,Python的lambdas只是一種速記符號,如果您懶得定義函數的話。
6、為什么可以將Python編譯為機器代碼,C或其他語言?
Cython將帶有可選注釋的Python修改版本編譯到C擴展中。Nuitka是一個將Python編譯成C++代碼的新興編譯器,旨在支持完整的Python語言。要編譯成Java,可以考慮VOC。
7、為什么CPython不使用更傳統的垃圾回收方案?
在獨立的Python中,可以用GC庫提供的版本替換標準的malloc()和free(),嵌入Python的應用程序可能希望它自己替代malloc()和free(),而可能不需要Python的?,F在CPython可以正確地實現malloc()和free()。
8、CPython退出時為什么不釋放所有內存?
當Python退出時,從全局命名空間或Python模塊引用的對象并不總是被釋放。如果存在循環引用,則可能發生這種情況C庫分配的某些內存也是不可能釋放的。但是Python在退出時清理內存并嘗試銷毀每個對象。
如果要強制Python在釋放時刪除某些內容,請使用atexit模塊運行一個函數,強制刪除這些內容。
9、為什么有單獨的元組和列表數據類型?
雖然列表和元組在許多方面是相似的,但它們的使用方式通常是完全不同的。可以認為元組類似于Pascal記錄或C結構;可以作為一個組進行操作。元組是不可變的。
列表更像其他語言中的數組。它們傾向于持有不同數量的對象,所有對象都具有相同的類型,并且逐個操作。列表是可變的。
10、列表如何在CPython中實現?
當添加或插入項時,將調整引用數組的大小。并采用了一些巧妙的方法來提高重復添加項的性能;當數組必須增長時,會分配一些額外的空間,以便在接下來的幾次中不需要實際調整大小。