久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

為什么Python類語法應該不同?

如果您已經使用了任何編程語言很長一段時間,您就會發現您想要的東西跟它原有的是不同的。Python對我來說是真的是這樣。如果可以的話,對于Python中很多的我想要改的東西,我有很多的想法。現在我向您講述其中一個:類定義的語法。

但是,讓我們先從定義函數的語法開始。它有一個非常好的特性:函數定義看起來像它們相應的函數調用。函數定義如下:

def func_name(arg1, arg2):

當您調用該函數時,您使用類似的語法:函數名稱和括號中以逗號分隔的參數列表:

x = func_name(12, 34)

只需調整調用中的標點符號,使其與函數定義中的位置一致,就可以看到arg1為12,而arg2為34.很好。

好了,現在讓我們來看一下如何定義一個帶有基類的類:

class MyClass(BaseClass, AnotherBase):

要創建此類的實例,請使用類的名稱和括號,但現在并行性已經消失。您并沒有傳遞BaseClass來構造MyClass:

my_obj = MyClass(...)

如果只是看一下這個類,您并不知道要向括號中傳入什么來構造一個MyClass對象。因此“def”和“class”具有非常相似的語法,而且函數調用和對象創建具有非常相似的語法,但在創建對象時,模仿函數調用中能引導您得到正確結果的寫法,則完全行不通。

這是專家很容易一眼就帶過的事情。它們習慣于使用神秘的語法,類似的東西在稍不同的語境中具有不同的含義。而且很多東西在編程語言中是不可避免的:有很多符號,還有更多的概念。必然會有重疊。

但是我們可以做得更好。為什么使用看起來像函數調用的括號來表示基類?這里有一個更好的語法:

class MyClass from BaseClass, AnotherBase:

這不僅避免了誤導性的標點符號并行,甚至還借用了我們用來討論類的英語:MyClass派生自BaseClass和AnotherBase。而且“from”已經是Python中的關鍵字。

順便說一下,即使是專家也會偶爾會犯錯誤,將想用”class“的地方寫成了”def“,類似的語法意味著代碼是有效的。回溯之前不會發現錯誤,這可能令人困惑。

我并不是要嚴肅地提議改變Python。不是因為這不會更好(或者這會更好),而是因為這樣的改變在晚期是不切實際的。我想它可以添加成一種替代語法,但是很難確定,對于初學者來說,為類提供兩種語法會更好。

但我認為,嘗試像困惑的初學者一樣來看我們熟悉的情景,這很有益處。替代語法僅有助于向他們解釋它,并可能幫助我們在未來做出更好的選擇。

好啦!今天的分享到這里結束了,希望大家持續關注馬哥教育官網,每天都會有大量優質內容與大家分享!版權聲明:轉載文章來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯系刪除或授權事宜。

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 永川市| 锦屏县| 观塘区| 靖江市| 横山县| 广平县| 五原县| 凤山市| 曲周县| 清镇市| 阜南县| 贺兰县| 全椒县| 平南县| 和林格尔县| 杨浦区| 麻城市| 唐河县| 三穗县| 贵德县| 沿河| 巩留县| 乡宁县| 灯塔市| 佳木斯市| 张家港市| 安国市| 咸阳市| 龙口市| 绥中县| 宁陕县| 聊城市| 广宗县| 北海市| 和平区| 孙吴县| 揭东县| 玉林市| 开封市| 广昌县| 抚顺市|