Google提供的虛擬機(colaboratory),提供CPU, GPU給有google帳戶的人使用。
連結:https://colab.research.google.com
環境是使用jupyter notebook,登入google帳戶後直接到連結網址就可以開始寫python了!
還可以跑Machine learning又不用擔心房間過熱!
參考網站:python_org_tutorial
網站目錄:https://docs.python.org/3/tutorial/index.html
python與swift很像…
- 安裝Python 3
- Anaconda
- 特點
- 任何資料皆為"物件",變數皆為"參考"(也就是類似c語言的pointer,但可能有快取),包括常數,資料型態,函式定義,類別,…
- 例如:要製作函式別名,def b(): ......
只要用 c = b, 就可以使用c()代表b() - OOP
- 弱資料型別,不用特別宣告資料型態
- 冪次運算元 - "**"
- 除法後取整數之運算元(floor division) - "//"
- 特別資料型態:decimal, fraction(分數),複數
- 字串
- 單引號與雙引號功能一致(與shell script不同)
- 用三個引號可以寫出多行的字串
- 運算子: '*', '+'
- 取得子字串[i:j] (得到i to j-1 的字串)
- 為immutable,不能直接修改內容值
- (201908)字串處理:
https://www.pythonforbeginners.com/basics/string-manipulation-in-python - 陣列索引值可為負數 (從陣列結尾開始算)
- 變數賦值寫在同一行 ex: a,b =3,4
- if寫法為:
單行的語句可寫成倒裝,但一定要有else statement:
Example 1
Example 2
- for 迴圈可加上'else'僅在for迴圈執行完才執行(若break就不會執行到)
- pass 指令,因為python的while, for不能只寫一行,所以要用pass!
- 函式定義keyword - def functionName(parameters):
- list comprehension 的組成,是包含著一個 expression(運算式)和一個
for
語句 - 常用資料型態(相關連結)
- Integer, Floating, String
- list - 用中括號. ex: a = [1,2,3]
- tuple - 用小括號. ex: a = (1,2,3)
- Set (集合) -- 無序,資料不重複,要用set()宣告
- dictionary - 用大括號 ex: b = {'a': 3, 'b':4, 'c':5...} ==> b['a'] == 3
- literal modifier - String 也有prefix (ex: r'...'代表該字串內為純文字,沒有跳脫字元)
- list 用 []賦值 -- list是mutable
- tuple用 () 賦值或是直接逗號分隔 -- tuple是immutable (所以沒有append...insert...)
- module --一個script檔,包含許多functions,也可以在其中寫會被執行的script。
上述寫法可以避免當此module被import時,import, fib()....被執行 - package - 一包module
需要 __init__.py module讓python知道此為一個package - 從package import一個module, function, ...可以寫 from ..package.. import ..module..
- try: ...
except (ErrorType):
else:
- 類別 class
- 參考C++, Modula --
屬性可以是RO或RW
也可以定義 global, nonlocal, local
定義function要加上(self)參數!
class Class1:
def func1(self):
.... - 建構子: __init__(self, ....):
self就代表此實體的物件,名稱空間 - 實體化就用 b = ClassName(...) <-- ...為建構子的參數
- class variable 是在class中定義的靜態attribute -- 各實體皆一致(初始),
instance variable 是由class的function初始的變數 -- 各實體即不一致。
此機制會造成class variable裡有mutable attribute時,會改到其它instance的class variable - Class 繼承
語法: class DerClassName(BaseClass1, BaseClass2...):
優先權DerClass > BaseClass1 > BaseClass2 ... (找function的順序就是Der --> BaseClass1 --> BaseClass2 ...
覆寫函式要呼叫BaseClass - BaseClassName.FunctionName(self, arguments...)
super()是一個BaseClass1的物件 - 要讓class可以用在for ... in ,要實作iter()函式,回傳一個實作__next__()函式的iterator object,__next__()就是回傳下一個iteration要用的資料
另一個可以用在for ... in的是執行yield函式產生資料(iterator)。
- (201908補充) @ Property函式 及語法:
@Property 修飾的function可被外部用Attribute的方式呼叫:
可用A.B_func的方式呼叫B_func。
https://openhome.cc/Gossip/Python/Property.html - generator expression
一段簡單表示法可以產生一個generator物件,讓其它可以吃generator class的函數使用。
例:
- 查詢函式庫中有哪些"物件":
dir(), help()... - 標準函式庫 -- stdlib.html, 目錄:
- os
- shutil
- glob (搜尋檔案及匹配檔名)
- sys
- re - regular expression
- math
- 額外資源:
https://docs.python.org/3/tutorial/whatnow.html - 常用函式庫
- json
網路資源整理:
- https://scipy.org/ - scipy
- https://docs.python.org/3/tutorial/index.html
- Python 多執行序(Multi-threading) - https://blog.gtwang.org/programming/python-threading-multithreaded-programming-tutorial/
- Python 物件序列化(Object serialization) - https://docs.python.org/3/library/pickle.html
沒有留言:
張貼留言