Python的學習須要自主探索各類類型,函數和方法的文檔。python
在IPython(Jupyter Qtconsole)上,能夠經過%run
命令執行文件中的代碼shell
In [16]: %run hellow.py 1,2,3 10 1,2,3 10
在變量先後使用問號?,能夠顯示對象的信息:數組
In [17]: b = [1, 2, 3] In [18]: b? Type: list String form: [1, 2, 3] Length: 3 Docstring: Built-in mutable sequence. If no argument is given, the constructor creates a new empty list. The argument must be an iterable if specified.
若是對象是一個函數或實例方法且文檔字符串已經寫好,則文檔字符串會顯示出來。函數
In [19]: def f(x): """ this is a function """ return x + 1 In [20]: f? Signature: f(x) Docstring: this is a function File: d:\python_data\<ipython-input-19-c86e88907f7c> Type: function
??能夠顯示源碼學習
In [23]: f?? Signature: f(x) Source: def f(x): """ this is a function """ return x + 1 File: d:\python_data\<ipython-input-19-c86e88907f7c> Type: function
?還有一個用途,就是像Unix或Windows命令行同樣搜索IPython的命名空間。字符與通配符結合能夠匹配全部的名字。ui
In [22]: np.fi*? np.fill_diagonal np.find_common_type np.finfo np.fix
文件中全部定義的變量(import、函數和全 局變量,除非拋出異常)在運行後,均可以在IPython shell中隨後訪問:this
假如Python腳本須要命令行提供參數(經過sys.argv獲取),則須要在命令的文件路徑後面加上參數進行傳遞。命令行
import sys fi = sys.argv[1] se = sys.argv[2] print(fi) print(se) """ %run file.py [a1, a2, .., an] [b1, b2, .., bn] """
若是要在 Jupyter 中你想要將腳本導入一個代碼單元,可使用%load
魔術函數。code
經過Ctrl + C
結束運行。orm
%magic
展現
有時候你不關心某個對象是什麼類型,你只關心它是否擁有某個特殊的方法或行爲。
例如你想驗證一個對象是否實現了迭代器協議,那麼它必須能夠迭代。
def isiterable(obj): try: iter(obj) return True except TypeError: # 不可遍歷 return False
一般在編寫接受多種類型輸入的函數時,可使用這些功能。
eg:要接受任意序列類型(列表,元組,n維數組),你能夠先判斷是否爲一個列表(或者爲Numpy數組)不然將其轉化爲列表:
if not isinstance(x, list) and isiterable(x): x = list(x)
In [9]: a = [1, 2, 3] In [10]: b = a In [11]: c = list(a) In [12]: a is b Out[12]: True In [13]: a is not c Out[13]: True
值得注意的是list函數老是建立一個新的Python列表(即一份拷貝)。
且is
和==
是不一樣的,c is a
爲False,c == a
爲True。
還值得注意的是//
整除符號。若是須要風格的整除除法(去除非整數部分的小數部分),則能夠用整除操做符
字符串是不能夠修改的!!
在遇到有大量反斜槓字符串時能夠經過添加r"XXX"
代表該字符串爲原生字符。
字符串格式化,字符串擁有一個format
方法。
例如:In [64]: template = '{0 : .2f} {1 : s}, are worth US${2 : d}'
。在這字符串中
{0 : .2f}
表示格式化第一個參數爲帶有兩位小數的浮點數。
{1 : s}
表示格式化第二個參數爲字符串。
{2 : d}
表示格式化第三個參數爲一個整數。
熟練掌握兩個方法:
第一個strftime
將datatime類型轉爲字符串:
In [102]: from datetime import datetime, date, time In [103]: dt = datetime(2011, 10, 29, 20, 30, 21) ... In [108]: dt.strftime('%m/%d/%Y %H:%M') Out[108]: '10/29/2011 20:30'
strptime
能夠將字符串轉換成 datetime 對象:
In [109]: datetime.strptime('20091031', '%Y%m%d') Out[109]: datetime.datetime(2009, 10, 31, 0, 0)
語法以下:
value = 'true-expr' if condition else 'false-expr'