zoukankan      html  css  js  c++  java
  • Python 5个必会小技巧

    很多时候学习是一种难者不会,会者不难的事情。

    下面的5个python技巧是性价比极高的知识点,一学就会,不难但是相当管用。

    使用交互模式

    使用python -i xxxx.py可以直接进入python的交互模式,可以很方便的调用xxxx.py中定义的方法和函数,特别适合调试没有main()方法的文件,强力推荐。

    使用pdb进行调试

    很多从c++/java转到python的同学可能对python没有断点功能相当失望。

    其实python自带的pdb库就可以解决这个问题。

    看这个例子。

    def sum(a, b):
        return a + b
    
    a,b = 1, 2
    import pdb
    pdb.set_trace()
    sum(a, b)
    

    运行这个文件,这时候就会进入调试模式,按n运行下一行,按pp打印出任何你想打印的变量和值,按q退出。

    -> sum(a, b)
    (Pdb) pp a
    1
    (Pdb) pp b
    2
    (Pdb) n
    --Return--
    > pdb_example.py(7)<module>()->None
    -> sum(a, b)
    (Pdb) q
    Traceback (most recent call last):
      File "pdb_example.py", line 7, in <module>
        sum(a, b)
      File "D:devpython3libdb.py", line 52, in trace_dispatch
        return self.dispatch_return(frame, arg)
      File "D:devpython3libdb.py", line 96, in dispatch_return
        if self.quitting: raise BdbQuit
    bdb.BdbQuit
    

    过程如上面所示,所以简单记住想调试的时候用下面这两行代码

    import pdb
    pdb.set_trace()
    

    这应该比pycharm香吧。

    使用pyenv

    pyenv可以创建隔离的python开发环境,你可以实现在本机同时安装多个版本的三方库功能。

    比如你可以在本机同时安装django0.1/django0.2诸如此类的版本,互不干扰。

    详细的就不说明了,资料很多,大家可以去搜索一下。

    列表/字典表达式

    这是python里相当实用的一个功能。

    比如下面这段代码

    l = [1, 3, 5, 7, 9, 11]
    
    res = []
    for item in l:
        res.append(item + 1)
    print(res)
    

    这里我们把列表l里的每个数都加了1。当然这样写是没错的了,不过有更简单的办法。

    print([i + 1 for i in l])

    一行搞定,成熟老练。

    我们甚至可以在列表表达式里增加条件判断,比如只把10以下的数加1并打印出来

    print([i + 1 for i in l if i < 10])

    相关资料也很多,强烈推荐去学习一下。

    lambda

    python里的匿名函数功能,熟悉js的同学应该感到亲切,特别适合用来做回调。

    比如我们要过滤列表中所有的奇数

    l = [i for i in range(1, 100)]
    print(l)
    
    def is_odd(num):
        return num % 2 != 0
    
    print([i for i in filter(is_odd, l)])
    
    

    这样定义了一个is_odd函数就显得啰嗦了,不如使用lambda这样来。

    print([i for i in filter(lambda x: x % 2 != 0, l)])

    是不是看上去好多了?

    总结
    这里5个小技巧能极大的提升大家python的开发效率,如果有其他特多技巧,欢迎留言讨论。

  • 相关阅读:
    关于c#.net 使用自动生成的TableAdapter类的Insert、update方法无效
    .net 字符流下载 迅雷下载问题
    win7 64位系统下使用Oracle的问题
    使用vs2010发布.net framework2.0的网站出现的 分析器错误
    c博客作业我的第一篇博客
    C博客作业01分支,顺序结构1
    机器学习特训营前四次课总结
    ASP.NET应用程序与页面生命周期
    asp.net 获取文件的详细属性,大小,修改日期,所在位置等
    Json string value cannot have line breaks(解决方法)
  • 原文地址:https://www.cnblogs.com/nbkhic/p/12967093.html
Copyright © 2011-2022 走看看