编程语言   发布时间:2022-06-23  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python:实用的IPython(一种交互式开发环境)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

用习惯了CentOS突然又用Windows࿰c;写Python想在控制端写怎么办?别急࿰c;一招教你在Windows终端写出一手舒服的代码! 欢迎光临࿰c;我的主页。更多干货࿰c;等你来学: 不许代码码上红 警句:莫道君行早࿰c;更有早行人。

Python:实用的IPython(一种交互式开发环境)

文章目录

@H_801_19@
  • @H_801_19@
  • 一、什么是IPython
  • 二、IPython标准键盘快捷键表
  • 三、 @R_618_10112@'s 魔术命令?Oh,GOOD!!!
  • @H_801_19@
  • 1、普通的魔术命令
  • 2、与操作系统的交互
  • 四、sHell命令
  • 五、IPython的目录书签系统
  • @H_801_19@
  • 1、什么是IPython目录书签系统?
  • 2、定义一个书签
  • 3、解决书签冲突问题
  • 4、查看所有书签
  • 六、作为软件开发工具
  • @H_801_19@
  • 1、交互式调试器
  • 2、测试代码执行时间
  • @H_801_19@
  • %time:
  • %timeit:
  • 3、性能分析
  • @H_801_19@
  • Profile 和 cProfile
  • 七、IPython的个性化配置
  • 一、什么是IPython

    说到IPython你肯定会奇怪࿰c;Python前面怎么多了一个“I”?当然࿰c;如果你对wxPython有了解的话也就见怪不怪了。IPython 是一个 python 的交互式 sHell࿰c;比默认的python sHell 好用得多࿰c;支持变量自动补全࿰c;自动缩进࿰c;支持 bash sHell 命令࿰c;内置了许多很有用的功能和函数。 IPython 是基于BSD 开源的。 IPython 为交互式计算提供了一个丰富的架构࿰c;包含:

    1、强大的交互式 sHell Jupyter 内核 2、交互式的数据可视化工具 3、灵活、可嵌入的解释器 4、易于使用࿰c;高性能的并行计算工具

    二、IPython标准键盘快捷键表

    快捷键说明
    (ctrl+p) or 上箭头键后向搜索命令历史中以当前输入的文本开头的命令
    (ctrl+n) or 下箭头键前向搜索命令历史中以当前输入的文本开头的命令
    ctrl+r按行读取的反向历史搜索
    ctrl+shift+v从剪切板黏贴文本
    ctrl +c中止当前正在执行的代码
    ctrl+a将光标移动到行首
    ctrl+e将光标移动到行尾
    ctrl+k删除从光标开始到行尾的文本
    ctrl+u清除当前行所有文本
    ctr+f将光标向前移动一个字符
    ctrl+b将光标向后移动一格字符
    ctrl+l清屏

    三、 @R_618_10112@’s 魔术命令?Oh,GOOD!!!

    1、普通的魔术命令

    IPython中有一些特殊的命令(被称为魔术命令(Magic Command))࿰c;它们有的为常见任务提供便利࿰c;有的则能使你轻松控制IPython系统的行为。魔术命令是以百分号%为前缀的命令。 常见的魔术命令:

    命令说明
    %quickref显示IPython的快速参
    %magic显示所有魔术命令的详细文档
    %debug从最新的异常跟踪的底部进入交互式调试器
    %hist打印命令的输入(可选的输入)历史
    %pdb在异常发生后自动进入调试器
    %paste执行剪切板中的Python代码
    %cpaste打开一个特殊提示符以便手工黏贴待执行的Python代码
    %reset删除interactive命令空间中的所有变量
    %time statement计算一段代码的执行时间
    %timeit statement自动选择重复和循环次数计算一段代码的执行时间。

    2、与操作系统的交互

    IPython另一个重要的特点是它跟操作系统的sHell结合的非常紧密。 跟系统相关的魔术命令:

    命令说明
    !cmd在系统sHell中执行cmd
    output=!cmd args执行cmd࿰c;并将stdout放在output中
    %alias alias_name cmd为系统sHell命令定义别名
    %bookmark使用IPython的目录书签系统
    %cd directory将系统工作目录更改为directory
    %pwd返回系统的当前工作目录
    %pushed directory将当前目录入栈࿰c;并转向目标目录
    %popd弹出栈顶目录࿰c;并转向该目录
    %dirs返回一个含有当前目录栈的列表
    %dhist打印目录访问历史
    %envDict形式返回系统环境变量

    四、sHell命令

    python sHell不是特指某一项命令࿰c;而是一种命令行环境࿰c;我们可以在sHell里面调用库以及执行语句࿰c;常见的有ipython环境。 在IPython中࿰c;以感叹号(!)开头的命令行表示其后的所有内容需要在系统sHell中执行。 例如:另外再启动一个Python编译器:

    !python

    Python:实用的IPython(一种交互式开发环境)

    五、IPython的目录书签系统

    1、什么是IPython目录书签系统?

    IPython有一个简单的目录书签系统࿰c;它可以帮助你很快速地写出以前在IPython中写过的命令。 例如:

    Python:实用的IPython(一种交互式开发环境)

    因为之前执行过“!python”࿰c;所以借助目录书签系统很快就会显示出来。

    2、定义一个书签

    定义一个书签example在目录Userdell下࿰c;输入cd example便可以使用这些书签了:

    Python:实用的IPython(一种交互式开发环境)

    3、解决书签冲突问题

    如果书签与当前工作目录中的某个目录名冲突࿰c;可以通过-b标记(覆盖)使用目录书签。

    4、查看所有书签

    %bookmark -l

    Python:实用的IPython(一种交互式开发环境)

    六、作为软件开发工具

    1、交互式调试器

    IPython的调试器增强了pdb࿰c;如Tab自动完成、语法高亮、为异常追踪的每条信息添加上下文参。调试代码的最佳时机之一就是在错误刚刚发生那一会儿。 命令(在异常发生后马上输入):

    %debug

    将会调用那个“事后”调试器࿰c;并直接跳转到异常发生的那个栈频(stack frame)。

    2、测试代码执行时间

    %time:

    如果使用内置的time模块里面的time.clock和time.time函数手工测试代码运行的时间࿰c;需要编写这样一些代码࿰c;十分的繁琐:

    import time
    start=time.time()
    for i in range(x):
    	#需要执行的代码
    	print("hello,world!")
    	elapsed_per=(time.time()-start)/x
    

    用IPython的魔术命令%time来测试代码执行时间:

    Python:实用的IPython(一种交互式开发环境)

    可是࿰c;多次执行后我们发现Wall time时会发生变化的。所以࿰c;%time计算的时间还是不太准确

    Python:实用的IPython(一种交互式开发环境)

    %timeit:

    在大型应用程序的数据分析中࿰c;像%time出现的微小的时间不准确现象是会累积的࿰c;对于那些执行时间非常短的分析语句和函数而言࿰c;%timeit是非常有用的。

    Python:实用的IPython(一种交互式开发环境)

    3、性能分析

    代码的性能分析和代码运行时间密切相关࿰c;只不过它关注的是耗费时间的位置。

    Profile 和 cProfile

    在 Python 标准库里面有两个模块可以用来做性能测试。

    1. 一个是 Profile࿰c;它是一个纯 Python 的实现࿰c;所以会慢一些࿰c;如果你需要对模块进行拓展࿰c;那么这个模块比较合适。

    2. 第二个是 cProfile࿰c;从名字就可以看出这是一个 C 语言的实现版࿰c;官方推荐在大多数情况下使用。 这两者的接口和数据的输出格式是完全一样的࿰c;你可以在这两者之间自由的切换。

    🎈🎈🎈run方法: 在 cProfile 中࿰c;进行性能测试十分简单࿰c;只需调用 run 方法࿰c;并将需要测试的函数及参数传递给它即可。

    import cProfile
    def @H_262_499@fib(n):
        if n == 0:
            return 0
        if n == 1:
            return 1
        return fib(n - 1) + fib(n - 2)
    
    
    if __name__ == '__main__':
        cProfile.run('fib(3)')
    

    在PyCharm中:

    Python:实用的IPython(一种交互式开发环境)

    在IPython中:

    Python:实用的IPython(一种交互式开发环境)

    其中:

    1. ncalls, 函数总共调用次数;
    2. tottime, 这个函数调用总共花费时间;
    3. percall, 每个调用的平均花费时间;
    4. cumtime, 总共累计花费时间;
    5. percall, 每个调用的平均累计时间;
    6. filename:lineno(function), 对应函数信息。

    同时࿰c;不难发现c;在图中耗时几乎都在fib上࿰c;而且函数调用数过多࿰c;主要是因为函数是递归调用的࿰c;并且会产生很多

    冗余分支:多余重复的分支代码(依我的理解)

    所以程序需要进行优化 优化方案:

    Python 3 里有一个简单的装饰器叫做lru_cache࿰c;可以自动的帮你缓存函数的值࿰c;而不需要自己手动存储。

    优化后:

    import cProfile
    import functools
    
    
    @functools.lru_cache(@H_401_405@maxsize=None)
    def @H_262_499@fib(n):
        if n == 0:
            return 0
        if n == 1:
            return 1
        return fib(n - 1) + fib(n - 2)
    if __name__ == '__main__':
     cProfile.run('fib(30)')
    

    PyCharm中:

    Python:实用的IPython(一种交互式开发环境)

    IPython中:

    Python:实用的IPython(一种交互式开发环境)

    fib 函数只调用了 31 次࿰c;几乎所有额外的调用都命中了缓存࿰c;远远小于前面的调用次数࿰c;运行时间也得到了相当明显的提升。 🎈🎈🎈runctx 方法:

    Python:实用的IPython(一种交互式开发环境)

    与run方法返回的值一样࿰c;另外允许提供一些上下文参数。

    七、IPython的个性化配置

    一般情况下配置文ipython_config.py件位于(Windows):

    D:pythonLib site-packagesjupyter_coretestsdotipython_emptyprofile_default

    通过配置能够做的事情: 1、修改颜色 2、修改输入输出提示符 3、去掉out提示符跟下一个in提示符之间的空行 4、启用IPython扩展 5、定义自己的魔术命令或者系统别名 专门为某个程序或者项目量身定做配置:

    ipython profile create secret_project

    大佬总结

    以上是大佬教程为你收集整理的Python:实用的IPython(一种交互式开发环境)全部内容,希望文章能够帮你解决Python:实用的IPython(一种交互式开发环境)所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。