IDLE & IPython & 离线文档 & 优先级记忆口诀心法

IDLE

安装
  • Ubuntu14.04 LTS中的python是没有自带IDLE
  • sudo apt-get install idle-python3.4
  • sudo apt-get install idle-python2.7
  • idle-python2.7 & 运行

IPython

  • 部分转载自:here
  • 这个必须找时间单独开坑
  • IPython是一个增强的Python交互shell,它拥有很多有趣的特性包括被命名的输入与输出,可使用shell命令,增强的调试和许多其它特性。pylab是IPython的一种交互模式,当我们在命令参数中用–pylab,它容许交互的matplotlib会话有像Matlab/Mathematica样的功能
  • $ipython –pylab
安装
  • sudo apt-get install python-pip
  • pip install ipython
  • 或者包含Notebook的依赖
  • pip install “ipython[notebook]”
  • 也可以用下面的方式安装
  • sudo apt-get install ipython 安装ipython很简单
  • sudo apt-get install ipython3 默认的python为2,所以如果要使用ipython3
  • ipython 或 ipython3 运行
  • 在交互环境和在Python 默认交互环境中一样,编写代码进行调试、测试等。但比默认 Python 环境好的几点如下所示。
Magic
  • %ed 或 %edit 编辑一个文件并执行,如果只编辑不执行,用 ed -x filename 即可
  • %env 显示环境变量
  • %hist 或 %history 显示历史记录
  • %lsmagic 查看所有magic函数
  • %macro name n1-n2 n3-n4 … n5 .. n6 … 创建一个名称为 name 的宏,执行 name 就是执行 n1-n2 n3-n4 … n5 .. n6 … 这些代码。
  • %pwd 显示当前目录
  • %pycat filename 用语法高亮显示一个 Python 文件(不用加.py 后缀名)
  • %save filename n1-n2 n3-n4 … n5 .. n6 … 将执行过多代码保存为文件
  • %time statement 计算一段代码的执行时间
  • %timeit statement 自动选择重复和循环次数计算一段代码的执行时间,太方便了
  • iPython 有一些“magic”关键字:
%Exit, %Pprint, %Quit, %alias, %autocall, %autoindent, %automagic,
%bookmark,  %cd , %color_info, %colors, %config, %dhist, %dirs,  % ed,
 % edit,  %env, %hist, %logoff, %logon, %logstart, %logstate, %lsmagic,
%macro, %magic, %p, %page, %pdb, %pdef, %pdoc, %pfile, %pinfo, %popd,
%profile, %prun, %psource, %pushd, %pwd, %r, %rehash, %rehashx, %reset,
%run, %runlog, %save, %sc, %sx, %system_verbose, %unalias, %who,
%who_ls, %whos, %xmode
  • iPython 会检查传给它的命令是否包含magic 关键字。如果命令是一个magic 关键字,iPython 就自己来处理。如果不是magic 关键字,就交给 Python 去处理。如果automagic 打开(默认),不需要在magic 关键字前加%符号。相反,如果automagic是关闭的,则%是必须的。在命令提示符下输入命令magic 就会显示所有magic 关键字列表,以及它们简短的用法说明。
  • 良好的文档对于一个软件的任何一部分来说都是重要的,从在线iPython 用户手册到内嵌文档(%magic),iPython 当然不会在这方面有所缺失。下面介绍些常用的magic 函式,如:
  • %bg function 把function 放到后台执行,例如:%bg myfunc(x, y, z=1),之后可以用jobs 将其结果取回,myvar = jobs.result(5)或myvar = jobs[5].result。
  • 另外,jobs.status()可以查看现有任务的状态。
执行shell命令
  • iPython 中用!表示执行shell 命令,用$将Python 的变量转化成 Shell 变量。
  • ?dict 显示的比dir(dict) 好看
  • 通过这两个符号,就可以做到和Shell 命令之间的交互,可以非常方便地做许多复杂的工作。比如可以很方便地创建一组目录:
for i in range(10):
s = "dir%s" % i
!mkdir $s
  • 不过写法上还是有一些限制,$ 后面只能跟变量名,不能直接写复杂表达式,
$"dir%s"%i 就是错误的写法了,所以要先完全产生 Python 的变量以后再用。例如:
for i in !ls:
print i
这样的写法也是错的,可以这样:
a = !ls
for i in a:
print i
还有一点需要说明,就是执行普通的 Shell 命令中如果有 $ 的话需要用两个 $。比
如原来的echo $PATH 现在得要用两个连续的美元符
Tab 自动补全
  • iPython 一个非常强大的功能是tab 自动补全。标准Python 交互式解释器也可以tab 自动补全:
~$ python
Python 2.5.1 (r251:54863, Mar 7 2008, 04:10:12)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import rlcompleter, readline
>>> readline.parse_and_bind('tab: complete')
>>> h
hasattr hash help hex
标准Python 交互式解释器和iPython 都支持“普通”自动补全和菜单补全。
使用自动补全,要先输入一个匹配模型,然后按Tab 键。如果是“普通”自动补全模式(默认),按Tab 键后会:
匹配模型按最大匹配展开;列出所有匹配的结果。
例如:
In [1]: import os
In [2]: os.po
os.popen os.popen2 os.popen3 os.popen4
In [2]: os.popen
输入os.po 然后按Tab 键,os.po 被展开成os.popen(就像在In [2]:提示符显示的那样),
并显示os 所有以po 开头的模块、类和函式,它们是popen、popen2、popen3 和popen4。
而菜单补全稍有不同。关闭默认Tab 补全,使用菜单补全,需修改配置文件
$HOME/.ipython/ipythonrc
注释掉:
readline_parse_and_bind tab: complete
取消注释:
readline_parse_and_bind tab: menu-complete
不同于“普通”自动补全的显示,当前命令所有匹配列表的菜单补全会随着每按一次Tab 键而循环显示匹配列表中的项目。例如:
In [1]: import os
In [2]: os.po
结果是:
In [3]: os.popen
接下来每次按Tab 键就会循环显示匹配列表中的其他项目:popen2、popen3、popen4,
最后回到po。菜单补全模式下查看所有匹配列表的快捷键是Ctrl+L。
历史
  • 当在iPython shell 下交互地输入了大量命令、语句等,就像这样:
In [1]: a = 1
In [2]: b = 2
In [3]: c = 3
In [4]: d = {}
In [5]: e = []
In [6]: for i in range(20):
...: e.append(i)
...: d[i] = b
...:
可以输入命令“hist”快速查看那些已输入的历史记录:
In [7]: hist
1: a = 1
2: b =2
3: c = 3
4: d = {}
5: e = []
6:
for i in range(20):
e.append(i)
d[i] = b
7: _ip.magic("hist ")
要去掉历史记录中的序号(这里是17),可使用命令“hist -n”:
In [8]: hist -n
a = 1
b =2
c = 3
d = {}
e = []
for i in range(20):
e.append(i)
d[i] = b
_ip.magic("hist ")
_ip.magic("hist -n")
  • 这样就可方便地将代码复制到一个文本编辑器中。要在历史记录中搜索,可以先输入一个匹配模型,然后按Ctrl+P 键。找到一个匹配后,继续按Ctrl+P 键就会向后搜索再上一个匹配,按Ctrl+N 键则是向前搜索最近的匹配。
编辑
  • 如果想在Python 提示符下试验一个想法,经常要通过编辑器修改源代码(甚至是反复修改)。在iPython 下输入edit 就会根据环境变量 EDITOR EDITOR 为空,则会调用vi(Unix)或记事本(Windows)。要回到iPython提示符,直接退出编辑器即可。如果是保存并退出编辑器,输入编辑器的代码会在当前名字空间下被自动执行。如果不想这样,可使用edit+X。如果要再次编辑上次最后编辑的代码,使用edit+P。在上一个特性里,提到使用hist−n 可以很容易地将代码拷贝到编辑器。一个更简单的方法是edit 加Python 列表的切片(slice)语法。假定hist 输出如下:
In [29]: hist
1 : a = 1
2 : b = 2
3 : c = 3
4 : d = {}
5 : e = []
6 :
for i in range(20):
e.append(i)
d[i] = b
7 : %hist
现在要将第456 句代码导出到编辑器,只要输入:
edit 4:7
Debugger 接口
  • iPython 的另一特性是它与Python debugger 的接口。在iPython Shell下输入magic 关键字pdb 就会在产生一个异常时开关自动debugging 功能。在pdb自动呼叫启用的情况下,当Python 遇到一个未处理的异常时Python debugger 就会自动启动。
  • debugger 中的当前行就是异常发生的那一行。iPython 的作者说有时候当他需要在某行代码处debug 时,他会在开始debug 的地方放一个表达式1/0。
  • 启用pdb,在iPython 中运行代码。当解释器处理到1/0 那一行时, 就会产生一个ZeroDivisionError 异常,然后它就从指定的代码处被带到一个debugging session 中了。
运行
  • 有时候在一个交互式Shell 中,如果可以运行某个源文件中的内容将会很有用。
  • 运行magic 关键字run 带一个源文件名就可以在iPython 解释器中运行一个文件了(例如run <源文件> <运行源文件所需参数>)。
  • 参数主要有以下这些:
-n 阻止运行源文件代码时{{{__name__}}}变量被设为"{{{__main__}}}"。这会防止if {{{__name__}}} == "{{{__main__}}}":块中的代码被执行。
-i 源文件在当前iPython 的名字空间下运行而不是在一个新的名字空间中。如果你需要源代码可以使用在交互式session 中定义的变量,它会很有用。
-p 使用Python 的profiler 模块运行并分析源代码。使用该选项的代码不会运行在当前名字空间。
  • 宏允许用户为一段代码定义一个名字,这样可在以后使用这个名字来运行这段代码。
  • 就像在magic 关键字edit 中提到的,列表切片法也适用于宏定义。假设有一个历史记录如下:
In [3]: hist
1: l = []
2:
for i in l:
print i
可以这样来定义一个宏:
In [4]: macro print_l 2
Macro `print_l` created. To execute, type its name (without quotes).
Macro contents:
for i in l:
print i
运行宏:
In [5]: print_l
------> print_l()
在这里,列表l 是空的,所以没有东西被输出。但这其实是一个很强大的功能,赋予
列表l 某些实际值,再次运行宏就会看到不同的结果:
In [7]: l = range(5)
In [8]: print_l
------> print_l()
0
1
2
3
4
  • 当运行一个宏时就好像你重新输入了一遍包含在宏print_l 中的代码。它还可以使用新定义的变量l。
  • 由于Python 语法中没有宏结构(也许永远也不会有),在一个交互式shell 中它更显得是一个有用的特性。
环境(Profiles)
  • 就像早先提到的那样,iPython 安装了多个配置文件用于不同的环境。
  • 配置文件的命名规则是ipythonrc-。要使用特定的配置启动iPython,需要这样:
  • ipython –p
  • 一个创建自己环境的方法是在$HOME/.ipython 目录下创建一个iPython 配置文件,名字就叫做ipythonrc-,这里是你想要的环境名字。如果同时进行好几个项目,而这些项目又用到互不相同的特殊的库,这时候每个项目都有自己的环境就很有用了。
  • 也可以为每个项目建立一个配置文件,然后在每个配置文件中import 该项目中经常用到的模块。
使用操作系统的Shell
  • 使用默认的iPython 配置文件,有几个Unix Shell 命令(当然,是在Unix 系统上),cd、pwd 和ls 都能像在bash 下一样工作。
  • 运行其他的shell 命令需要在命令前加!或!!。
  • 使用magic 关键字%sc 和%sx 可以捕捉shell 命令的输出。
  • pysh 环境可以被用来替换掉shell。使用-p pysh 参数启动的iPython,可以接受并执行用户$PATH 中的所有命令,同时还可以使用所有的Python 模块、Python 关键字和内置函式。
例如,想要创建500 个目录,命名规则是从d_0_d 到d_499_d,可以使用 -p pysh 启动iPython,然后就像这样:
[~/ttt]|1> for i in range(500):
|.> mkdir d_${i}_d
|.>
这就会创建500 个目录:
[~/ttt]|2> ls -d d* | wc -l
500
  • 注意这里混合了Python 的range 函式和Unix 的mkdir 命令。虽然ipython -p pysh 提供了一个强大的shell 替代品,但它缺少正确的job 控制。
  • 在运行某个很耗时的任务时按下Ctrl+Z 键将会停止iPython session 而不是那个子进程。
  • 最后,退出iPython。可输入Ctrl+D 键(会要求你确认),也可以输入Exit 或Quit(注意大小写)退出而无须确认。
小结

离线文档

  • Python 的文档非常的全
  • 对于 Python 这样的语言,你觉得你学到什么时候算是完全掌握呢?你也许会想也许哪一天你记得大部分函数的名字很怎么用,不用打几行就 Google 搜一下的时候,就算学会了。这样的理解对了一半,等你熟悉 Python 以后你的却不应该常搜索;但前一半却不一定,我个人认为你并不需要记住庞大的标准库中的内容,很多时候你只要清楚要在哪里能找到相应的文档就行了。
  • Python 在这方面可以说是做的非常非常非常好。在真正着手开发之前,你应该在下载一份离线的文档。在(如果打不开的话试试,你懂的)下载一份 HTML 格式的,比如是 2.7.3 版那么对应的文档名字应该是 python-2.7.3-docs-html.zip。下好后把它在一个你喜欢的地方解压出来,打开其中的 index.html,这就是这个文档的主页。你可以看到他分为很多部分,包括语言的参考,标准库和其他很多方便的文档。
  • 如果你一下不知道从哪里看起,这份文档还有一个非常棒的功能。看到左边的 Quick Search 栏,我在上图中也有标注起来。当你需要对某个函数或者标准库进行进一步了解的时候,你可以在这边来进行搜索。这里的搜索是火星科技驱动的离线状态下也能够使用的!比如输入 urllib.urlencode,你可以很方便的找到它对应的页面。基本有了这份文档,你可以避免掉很多疯狂搜索的情况。同样的,当你使用某个第三方库的时候,你最好也在他的站点上找找有没有一份离线文档,因为 Python 项目很多都有着很赞的文档。
  • 官方下载地址为https://docs.python.org/2/download.html

优先级记忆口诀

  • 函数寻址下标一
  • 幂运算小二小嘻嘻
  • 全体单元第三位 #比如翻转运算~、正负号等。单元运**算符,就是一个操作对象的运算符
  • 乘除求余四千里

  • 乘除完了五加减

  • 六娃玩耍左右移
  • 七是按位或跟与 #同时包括异或
  • 八仙生气要比敌 #比较运算符

  • 倒数第一逻辑或非与 #lambda要排最后,但出现的少,所以或非与排最后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值