python学习记录_IPython基础,Tab自动完成,内省,%run命令_
这是我第一次写博客,之前也有很多想法,想把自己所接触的,以文本的形式储存,总是没有及时行动。此次下定决心,想把自己所学,所遇到的问题做个记录共享给诸位,与此同时自己作为备忘,感谢各位访问我的博客,欢迎指教。2018-03-27 12:34:31
学习书目《利用Python进行数据分析》
IPython 一种交互式计算和开发环境
linux 安装 sudo apt-get install ipython
IPython基础
~$ ipython asPython 2.7.12 (default, Dec 4 2017, 14:50:18) Type "copyright", "credits" or "license" for more information. IPython 2.4.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: from numpy.random import randn In [2]: import numpy as np In [3]: data = {i :randn() for i in range(7)} In [4]: data Out[4]: {0: -0.32421485650349186, 1: 0.752834410829907, 2: 1.0926380203566248, 3: -0.6641241145638012, 4: 1.0580982848912308, 5: -1.3974082670817336, 6: 0.08712617271950605} In [5]: print data {0: -0.32421485650349186, 1: 0.752834410829907, 2: 1.0926380203566248, 3: -0.6641241145638012, 4: 1.0580982848912308, 5: -1.3974082670817336, 6: 0.08712617271950605}
"""
numpy中有一些常用的用来产生随机数的函数,randn()和rand()就属于这其中。
numpy.random.randn(d0, d1, …, dn)是从标准正态分布中返回一个或多个样本值。
numpy.random.rand(d0, d1, …, dn)的随机样本位于[0, 1)中。
"""
Tab键自动完成
"""
Tab键自动完成功能是对标准Python shell的主要改进之一
在shell中输入表达式时,只要按下Tab键,当前命名空间中任何与已输入的字符串相匹配的变量就会找出来
"""
In [1]: an_apple = 7 In [2]: an_exampel = 42 In [3]: an an_apple an_exampel and any In [3]: b = [1, 2 ,3] In [4]: b.<Tab> b.append b.extend b.insert b.remove b.sort b.count b.index b.pop b.reverse In [4]: import datetime In [5]: datetime.<Tab> datetime.MAXYEAR datetime.datetime datetime.timedelta datetime.MINYEAR datetime.datetime_CAPI datetime.tzinfo datetime.date datetime.time
#<Tab>只是一个按键
"""IPython会默认隐藏那些带有下划线开头的方法和属性,若要访问直接加个_(下划线)就行"""
In [6]: datetime._ datetime.__class__ datetime.__new__ datetime.__delattr__ datetime.__package__ datetime.__dict__ datetime.__reduce__ datetime.__doc__ datetime.__reduce_ex__ datetime.__format__ datetime.__repr__ datetime.__getattribute__ datetime.__setattr__ datetime.__hash__ datetime.__sizeof__ datetime.__init__ datetime.__str__ datetime.__name__ datetime.__subclasshook__
"""
Tab键自动完成不仅可以用于搜索命名空间和自动完成对象或模板属性,当你输入类似路径的东西时,按下Tab键,就可以找到系统文件中与之对应的东西
"""
In [6]: /home/ /home/iostream/ /home/lost+found/
内省
In [1]: b = {1, 2 ,3} In [2]: b? Type: set String form: set([1, 2, 3]) Length: 3 Docstring: set() -> new empty set object set(iterable) -> new set object Build an unordered collection of unique elements. In [3]: b = [1, 2, 3] In [4]: b? Type: list String form: [1, 2, 3] Length: 3 Docstring: list() -> new empty list list(iterable) -> new list initialized from iterable's items
"""
在变量的前面或后面加上一个问号(?)就可以将有关该对象的一些通用信息显示出来,叫作对象的内省
"""
In [1]: def add_numbers(a, b): ...: """ ...: Add two numbers together ...: ...: Returns ...: ------- ...: the_sum : type of arguments ...: """ ...: return a + b ...:
"""
使用?显示这段docstring
"""
In [2]: add_numbers? Type: function String form: <function add_numbers at 0x7fb9308e7aa0> File: /home/iostream/<ipython-input-1-5628bd19e409> Definition: add_numbers(a, b) Docstring: Add two numbers together Returns ------- the_sum : type of arguments
"""
使用??显示该函数的源代码
"""
In [3]: add_numbers?? Type: function String form: <function add_numbers at 0x7fb9308e7aa0> File: /home/iostream/<ipython-input-1-5628bd19e409> Definition: add_numbers(a, b) Source: def add_numbers(a, b): """ Add two numbers together Returns ------- the_sum : type of arguments """ return a + b
"""
?还有一个用法,即搜索IPython命名空间
一些字符再配上通配符(*) 即可显示所有与该通配符表达式相匹配的名称
NumPy*命名空间中含有"load"的所有函数
"""
In [5]: import numpy as np In [6]: np.*load*? np.load np.loads np.loadtxt np.pkgload
%run命令
"""
在IPython会话环境中,所有文件可以通过%run命令当作Python程序运行
假如在ipythontest.py中存放脚本
"""
In [11]: c Out[11]: 7.5 In [12]: result Out[12]: 1.4666666666666666
"""
脚本是在一个空的命名空间中运行
其行为应该跟在标准命令行环境(python *.py启动的)中执行时一样
此后,该文件中定义的全部变量(还有各种import,函数和全局变量) 都可在IPython shell中访问
"""