• python的小技巧 让你的代码更美观


    持续更新..

    1,活用lambda表达式

      匿名函数 lambda 可以提供很多便利.下面是举例.

    dic = {1:lambda a,b : a+b}
    print(dic[1](1,3))    #4

    2,代码一行化.

      当逻辑语句后只有一行代码的时候,可以写在一行.没什么具体作用,可以用来装逼.

    while 1:
        if a>0:break
    
    for i in range(1,10) :print (i)

     3,while 死循环

      我们的while死循环一直都是 用while True 来规定,这样就可以延伸出来,只有是布尔类型为True就可以表示为死循环,那么根据这个特性就可以得出一下两个编写方法.

    while 1:    #死循环
        print(123)
    
    flag = 1        #flag可以写成任何表示为真的数据类型
    while flag:
        print(1)
        if 1:
            flag = False        #相当于break,这里的False可以换成任意的表示假的数据类型,如空字符串,空元组,None

    4,列表,字典,集合 推导式.

      列表推导式 [元素  循环  判断]

      集合推导式 {元素 循环 判断}

      字典推导式{key:value  循环  循环}

      注 : 没有元组推导式,用()的叫做生成器表达式  

    lst = [i for i in range(0,5) if i%2==0]    #[0, 2, 4]
    print(lst)                            
    set_ = {i for i in range(0,5) if i%2==1}    #{1, 3}
    print(set_)
    dic = {i:j for i in lst for j in len(lst)}    #{0: 2, 2: 2, 4: 2}
    print(dic)

    5,按位置赋值.(解构)

      这里需要注意的是等号两边的元素个数要相等 , 并且等号后面 不一定是元组,只要是能够表示位置的都可以 .比如列表 , 当然 这里也可以使 a 和 b的值进行互换.a,b = b,a

    a , b = (2 , 3)
    print (a)      #2           
    print (b)     #3

    6,解构的应用 (进阶)

      解构是一种非常好用的赋值方法.注意灵活运用.

    #轻松提取字典的键值对
    dic = {1:"小明",2:"小李",3:"小王"}
    for i,j in dic.items():
        print(i,j)    #1 小明 2 小李 3 小王
    def func()
        return 1,2,3
    x,y,z = func()
    print(x)        #1
    print(y)        #2
    print(z)     #3

    7,修改递归默认最大次数

      我们都知道递归的默认最大执行次数是998,通过  sys.getrecursionlimit()可以进行修改, 详情参见这一条博客https://www.cnblogs.com/cuiyuanzhang/p/9483002.html

    print(sys.getrecursionlimit())    #1000
    sys.getrecursionlimit(2000)
    print(sys.getrecursionlimit())    #2000

    8,枚举

      通过枚举可以轻易的得到到索引和元素,也可以规定索引从哪开始.返回的是元素和索引组成的列表.

    lst = ["小明","小李","小王"]
    for i in enumerate(lst):
        print(i)    #(0,"小明")  (1,"小李") (2,"小王")
    for i in encumerate(lst,1):
        print(i)    #(1,"小明")  (2,"小李") (3,"小王")

    9,字符串的多行表示

      使用三引号时 , 字符串就是以多行形式存在的     使用 时, 字符串还是以一行存在的.

    print("我有点
        小帅")        #我有点小帅
    print("""我有点
        小帅""")        #我有点
                         #小帅

    10,链状比较

    n = 2
    print (1<n>7)    #False
    print(1<n<=2)    #True

    11,三元运算

      [如果为真 执行这条语句] if  [条件]  else  [如果为假 执行这条语句]

    a,b = 2,3  #解构赋值print (a) if a > b else print(b)    #3

    12,print 打印 模块的绝对路径

    import random
    print(random)

    13,map 内置函数

      传入两个参数,参数1是即将运行的函数,参数2是一个迭代器.

    a = map(lambda x :x+1,[1,2,3])
    print(a)    #<map object at 0x000001F86C278860
    for j in a:
        print(j)    # 2 3 4

    14,property和setter

      __变量使其变为私有,然后通过两个同名方法在外对其赋值和查看。

    class Foo:
        def __init__(self,x):
            self.__x=x
        @property
        def func(self):
            return self.__x
        @x.setter
        def func(self):
            self.__x=x
  • 相关阅读:
    [node] 如何安装node.js环境(ubuntu16.04)
    [go] 如何安装go环境(ubuntu16.04)
    github如何从提交代码到远程
    angular6 表单验证
    angular6 使用tooltip
    angular6 导出Excel文件
    angular6 页面加载数据时的loading提示
    angular6 使用daterangepicker的注意事项
    angular6 监听url查询参数变化刷新页面
    python使用gevent实现协程
  • 原文地址:https://www.cnblogs.com/cuiyuanzhang/p/9452874.html
Copyright © 2020-2023  润新知