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'