• 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的开发效率,如果有其他特多技巧,欢迎留言讨论。

  • 相关阅读:
    【算法】二分图的判定
    【模板】并查集 两种路径压缩写法(类模板和函数模板)
    【模板】堆的结构
    新疆大学OJ(ACM) 1099: 数列有序!
    新疆大学OJ(ACM) 1047: string 字符串排序
    新疆大学(新大)OJ xju 1010: 四个年级 C++ STL map 将4层循环优化成2层循环可解
    新疆大学(新大)OJ xju 1009: 一带一路 prim求最短路径+O(n)素数筛选
    新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘
    【算法】第二类斯特林数Stirling
    【复习资料】编译原理中:短语,直接短语,句柄
  • 原文地址:https://www.cnblogs.com/nbkhic/p/12967093.html
Copyright © 2020-2023  润新知