# 遞歸def recursion(movies): for item in movies: # isinstance是一個判斷類型的函數 if isinstance(item,list): recursion(item) else: PRint(item)#
正在學習python,記錄一下,話說這本書好像不太適合沒有編程基礎的人啊,上來就講列表和遞歸是鬧哪樣啊。
python是動態語言,即類型不用聲明(想C#里那樣List 、int什么的),比如列表要聲明可以直接 movies = ["西游記之大圣歸來","侏羅紀世界",1,["馬達加斯加的企鵝"]],這里還嵌套了列表,所以接下來就是用遞歸遍歷列表了。
學過c#的我認為上面那段代碼還是好懂的,def是聲明函數的關鍵字,括號里是參數,for..in..:類似c#里的foreach循環,然后用isinstance判斷是否是列表,是則再次調用函數,這是典型的遞歸了。
再次吐槽:這真的是入門教程嗎,不先介紹數據類型和一些基本關鍵字就直接開始解決問題(書里是為了解決問題:某人收藏了很多電影數據,要求管理一下),仔細想想,這樣似乎也不錯,就是完全沒有編程基礎的人可以要吃虧了。
然后把這段代碼打包成模塊發布(我怎么感覺有點跟不上了),模塊有點像是c#里的dll。
先建立文件夾,把源碼保存值文件夾內,然后新增一個setup.py的文件,
from distutils.core import setupsetup( name = '程序名稱', version = '1.0.0', py_modules = ['模塊名稱'], author = '作者', author_email= '郵箱@Gmail.com', url = '', description = 'a simple recursion', )
然后在命令行里進入文件夾,運行:python setup.py sdist 就可以打包你的模塊了,打包完成后:python setup.py install,安裝。這個時候在進入IDLE用import(相當于C#里Using)關鍵字導入模塊,再使用模塊名調用函數就可以了。
先總結一下內容:
1.一些術語:BIF內置函數,組(Suite)代碼塊,python里通過縮進來區分代碼分組
2.快捷鍵:在IDLE里Alt+P顯示上一段代碼,Alt+N顯示下一個,Tab鍵可以完成代碼,另外如果是從c#轉來的一定要注意:按Tab顯示出來的函數等代碼不要用回車確定要用Tab(有時可能需要按兩下Tab),我已經有很多次用回車結果python直接執行代碼了
3.定義變量不用聲明類型如:int a=1,可以直接a=1,python會識別類型。
4.print()函數會在屏幕上顯示一個消息。由于python可以直接執行,所以理論上來說這會是我們用的最多的函數。
5.列表是一個數據集合,但是列表里可以存放任何數據類型,如上一篇里的data=["aaa",1,[True]],這應該算是動態語言和靜態語言的區別了吧。另外列表可以自由伸縮,不用擔心長度問題
6.for xx in xxx:循環,如果xxx是列表,那就相當于c#里的foreach,如果xxx換成range(0,3)(這里表示0<=xx<3python里大部分這樣的截取都是包含左邊,不包含右邊)就是c#里的for循環了,還有別忘了冒號,定義函數,判斷語句,循環等都需要冒號來確定和分行
7.def關鍵字定義函數,不需要定義返回值類型和參數類型,參數可以設置默認值,比如def add(a,b=0)你可以只傳入一個參數,也可以傳兩個,但是要注意,如果有多個缺省參數而你只傳一個,一定要指定參數名,如:def add(a,b=0,c="a")調用add(1,c="b")這種方式可以非常容易實現重載,不過我還是不建議在一個函數里重載,會增加復雜度
8.isinstance(data, int)用于判斷數據類型
9.import關鍵字用于導入模塊(python里的模塊相當于c#里的類庫)
寫完發現這些其實是包含了一二章的內容,不過第二章主要介紹怎么打包python程序,所以放一起也不錯。
新聞熱點
疑難解答