|
|
51CTO旗下网站
|
|
移步端
  • 迎战“不可能”的编码:你不知晓的Python效益

    Python看似简单,但实则变化万千,作者总都能收看局部代码以近乎不可能的措施呈现。该署功能很精妙,以至于我无法想象没有Python时该怎样生活。

    笔者:读芯术 来源:读芯术| 2020-07-31 17:13

    本文转载自公众号“读芯术”(ID:AI_Discovery)

    Python看似简单,但实则变化万千,作者总都能收看局部代码以近乎不可能的措施呈现。该署功能很精妙,以至于我无法想象没有Python时该怎样生活。

    本文会涉及其中几个不适用却很得力之效应,包括:

  • 增量赋值——采用*args和**kwargs(包括字典合并)
  • 不可变集合——是什么,为什么有用
  • 多因素条件——更鲜明的逻辑
  • 检查变量是否存在——在地方和全局范围内
  • 征服lambda函数——编纂Python作风和函数风格的一条龙式代码
  • 增量赋值

    正如函数*args和**kwargs,在产量赋值中得以行使相同的语法:

    迎战“不可能”的编码:你不知晓的Python效益

    统一两个字典

    统一字典时使用可迭代变量赋值法中的**kwargs语法:

    迎战“不可能”的编码:你不知晓的Python效益

    要求注意的是,如果字典间有集体键,此后一个键值对(y中的)会替代前者。据即将发行的流行Python本子(3.9),可以用一个崭新的语法来规避这个题目,即字典合并,并更新操作符:

    z = x | y # 统一——看来的所作所为模式

    x |= y # 创新——代表字典合并

    不可变集合

    在Python官方,可以行使集合,也就是不同对象的有序集合。该署集合是可变的,意味着能用add()和remove()拓展更换——这表明可变集合是不足哈希之。

    反之,可以行使不可变集合frozenset()——一种无法改变值的集聚。但正因不可变,他是可哈希之——顶把set和frozenset同时表现字典的键时,这一点就体现出来了:

    迎战“不可能”的编码:你不知晓的Python效益
    迎战“不可能”的编码:你不知晓的Python效益

    把frozenset表现字典的键似乎并不适用,但是frozenset的企图是提供更详细、更具权威性的编码。这提醒了未来的编码阅读者——如果改变我,任何都会崩溃。

    多因素条件

    清理那些杂乱的if说话,而不是:

          
    1. if 0 <= x and x <= 1: 
    2. print('value is %'

    可以写成:

          
    1. if (0 <= x <= 1): 
    2. print('value is %'

    再深入一些,可以添加更多的尺度语句,合同逐位运算符把它们串起来:

          
    1. if (0 <= x < 1) | (7 <= x < 8) | (x == 10): 
    2.     print('passed'

    检查变量是否存在

    我急需检查变量是否存在吗?

          
    1. if "var_name" in globals(): 
    2.     print("var_nameexists!")elif "var_name" in locals(): 
    3.     print("var_name existslocally!")else
    4.     print("var_name does notexist."

    可以分别利用 globals()和 locals()在全局和地面范围内检查变量。

    迎战“不可能”的编码:你不知晓的Python效益

    检查变量test1和test2只是在全局或地方

    globals和locals这两个作用域函数都会回来字典——故此也实行上述的辞典合并语法{**x, **y}。代码在统一范围后的辞典中同时检查了test1和test2。

    征服lambda函数

    采取lambda函数编写一行简单快捷的顺序是很常见的,但是它很少用来建立多指数函数。普通情况如下:

          
    1. do_something = lambda x: x**2 / (1 - x) 

    但lambda函数也可用于构建简练之一条龙式函数:

    迎战“不可能”的编码:你不知晓的Python效益

    采用lambda函数构建一个带有Cochran方

    在各地运用lambda函数之前,你要掌握这是Python语法中最忌讳的用法之一。PEP 8——Python的编码风格指南——异常不鼓励把lambda函数作为命名函数。同时,特别是对于数字公式,一行式函数看起来会很奇怪。

    故此,可以编写一行式的def 说话来替代lambda:

    迎战“不可能”的编码:你不知晓的Python效益

    采用单行的def说话构建一个带有Cochran

    采用哪一种办法取决于你。除非是想得到消极的举报,这就是说请用lambda,否则还是用def吧。

    这是五项特别实用之Python效益,如果你不知晓的话,就赶快积累起来吧!

    【编纂推荐】

    1. 穿过VSCode RTOS硬件使用Python为物联网系统编写程序
    2. 5分钟内搭建你的程序一个Python聊天机器人
    3. 一种简易而智能的主意:Python也能展开面部识别
    4. GitHub 热点速览 Vol.30:该署提升效率的小工具们
    5. 你知道Python有内置必发娱乐登录吗?Python内置库SQlite3采用指南
    【义务编辑: 华轩 TEL:(010)68476606】

    点赞 0
  • Python  付出  工具
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    大数据安全运维实战

    大数据安全运维实战

    CDH+Ambari
    共20章 | 数据陈浩

    91人口订阅学习

    实操老:Jenkins接轨交付和后续部署

    实操老:Jenkins接轨交付和后续部署

    微服务架构下的无部署
    共18章 | freshman411

    185人口订阅学习

    思科交换网络安全指南

    思科交换网络安全指南

    安全才能无忧
    共5章 | 思科小牛

    110人口订阅学习

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微