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

Python看似简单,但实则变化万千,笔者总都能看到一些代码以近乎不可能的方式呈现。这些功能很精妙,以至于我无法想象没有Python时该怎样生活。

本文会涉及其中几个不常用却很有用的功能,包括:

变量赋值——运用*args和**kwargs(包括字典合并)

不可变集合——是什么,为什么有用

多因素条件——更清晰的逻辑

检查变量是否存在——在本地和全局范围内

胜过lambda函数——编写Python风格和函数风格的一行式代码

变量赋值

正如函数*args和**kwargs,在变量赋值中可以运用相同的语法:

合并两个字典

合并字典时运用可迭代变量赋值法中的**kwargs语法:

需要小心的是,如果字典间有公共键,后一个键值对(y中的)会替代前者。据即将发行的最新Python版本(3.9),可以用一个全新的语法来规避这个问题,即字典合并,并更新操作符:

z = x | y # 合并——如上所述的行为模式

x |= y # 更新——替代字典合并

不可变集合

在Python中,可以运用集合,也就是不同对象的无序集合。这些集合是可变的,意味着能用add()和remove()进行变换——这说明可变集合是不可哈希的。

反之,可以运用不可变集合frozenset()——一种无法改变值的集合。但正因不可变,它是可哈希的——当把set和frozenset同时作为字典的键时,这一点就体现出来了:

把frozenset作为字典的键似乎并不实用,但是frozenset的作用是提供更详细、更具目的性的代码。这提醒了未来的代码阅读者——如果改变我,一切都会崩溃。

多因素条件

清理那些杂乱的if语句,而不是:

if 0 <= xandx <= 1:

print('value is %')

可以写成:

if (0 <= x <= 1):

print('value is %')

再深入一点,可以添加更多的条件语句,并用逐位运算符把它们串起来:

if (0 <= x

print('passed')

检查变量是否存在

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

if"var_name"inglobals():

print("var_nameexists!")elif"var_name"inlocals():

print("var_name existslocally!")else:

print("var_name does notexist.")

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

检查变量test1和test2是否在全局或本地

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

胜过lambda函数

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

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

但lambda函数也可用来构建简练的一行式函数:

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

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

因此,可以编写一行式的def 语句来替代lambda:

运用单行的def语句构建一个带有Cochran

运用哪一种方法取决于你。除非是想得到消极的反馈,那么请用lambda,否则还是用def吧。

这是五项非常有用的Python功能,如果你不知道的话,就赶快积累起来吧!

【编辑推荐】

【责任编辑:华轩 TEL:(010)68476606】

点赞 0

python 功能 代码_挑战“不可能”的代码:你不知道的Python功能相关推荐

  1. python测验5 函数和代码_测验5: 函数和代码复用 (第5周)-单选题

    1.以下选项不是函数作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ A. 提 ...

  2. python爆破端口_挑战全网多线程批量扫描爆破弱办事端口工具,Python制造专属!...

    挑战全网多线程批量扫描&爆破弱办事端口工具,Python制造专属!-1.jpg (29.47 KB, 下载次数: 0) 2018-8-16 17:05 上传 前言 你学习Python的目的是什 ...

  3. python的简单程序代码_怎么样都要学几个python的简单小程序

    虹之菌BUG之前在学Python的时候,参考书上或网上的代码写了几个小程序,发出来算个学习笔记,也请朋友们帮着给找找代码中错误和不严谨的地方. 一.一个简单的下载程序 用过Curl后觉得它的下载功能很 ...

  4. python数字大小写转换代码_【经验分享】20个Python代码段,好用到哭!

    Python是一种非BS编程语言.设计简单和易读性是它广受欢迎的两大原因.正如Python的宗旨:美丽胜于丑陋,显式胜于隐式. 记住一些帮助提高编码设计的常用小诀窍是有用的.在必要时刻,这些小诀窍能够 ...

  5. python3.4勾股定理代码_趣味编程,用Scratch和Python画勾股树

    趣味编程,用Scratch和Python画勾股树 - 少儿编程网​www.kidscoding8.com 勾股树,又称为毕达哥拉斯树.它是由古希腊数学家毕达哥拉斯根据勾股定理画出的一个可以无限重复的图 ...

  6. python简单好玩的代码_只需要9步100行Python代码就可以实现一个简单又好玩的弹球游戏...

    今天给大家分享一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python写小游戏还是蛮方便的,蛮有意思的~~ 需要本文源码:私信回复[源码]即可获取 ...

  7. c++编写手机小游戏代码_只需22行代码,用python编写自己的小游戏

    假期最后一天,有些人在外面玩累了,有些人躺在家里快发霉了,闲暇时候不如动动手做个小游戏玩一玩吧! 本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 1 import ...

  8. 读懂python代码_读懂花里胡哨的14行Python代码!

    最近在项目里发现一段代码,初看比较难看懂,细看,也还是比较难看懂.遂研究了一下,证实了这段代码确实,没啥作用,遂删之.记录在下. 去掉几个用于封装的函数,保留最小代码后,剩下以下14行代码.你能说出这 ...

  9. python怎么输入程序代码_学习用 Thonny 写代码: 一个面向初学者的Python IDE

    学习编程很难.即使当你最终怎么正确使用你的冒号和括号,但仍然有很大的可能你的程序不会如果所想的工作. 通常,这意味着你忽略了某些东西或者误解了语言结构,你需要在代码中找到你的期望与现实存在分歧的地方. ...

最新文章

  1. The Tower(HDU6559+2018年吉林站+数学)
  2. [转载]windows7中没用boot.ini文件而是改用BCDEDIT来配置了
  3. (1) 使用supervisor提高nodejs调试效率
  4. ZOJ Problem Set - 1067 Color Me Less
  5. ZOJ 1057 Undercut(简单模拟)
  6. 第9章matlab符号计算答案,第9章 MATLAB符号计算_MATELAB课程设计_ppt_大学课件预览_高等教育资讯网...
  7. android 结束if循环_几款Android反编译器对循环结构的还原能力测试记录
  8. 萌新的Python练习菜鸟100例(十)暂停一秒输出,并格式化输出当前时间
  9. oracle物理,Oracle物理结构概述
  10. VISIO各种图标超全(IT行业专用网络及硬件)_几招教你如何轻松解决视频行业痛点...
  11. andorid使能ftrace失败
  12. 三菱四节传送带控制梯形图_四节传送带控制
  13. amd RX6800和rtx3070哪个好
  14. SaaS、PaaS、DaaS、IaaS四种云系统说明
  15. android 自动背光闪烁,Android 背光流程小结
  16. 通过Pinterest号召性用语分享图片
  17. Excel VBA实现从多篇Word文档内抓取文本框内内容(书接上一篇博客)
  18. SU+GIS,让SketchUp模型在地图上活起来
  19. WIN10开机前自启进程
  20. 梦幻西游三维获取服务器信息,《梦幻西游三维版》2020服务器互通功能说明

热门文章

  1. 特征工程(feature engineering)是什么?特征工程(feature engineering)包含哪些方面?
  2. R探索新数据分析(Exploratory Data Analysis,EDA)
  3. python和R对dataframe的分组聚合操作:dplyr、groupby、agg、group_by、nunique、reset_index、rename、summarise、n_distinct
  4. python代码使用正则化模块re检查字符串是否只含有要求指定的字符
  5. 深度摄影风格转换--Deep Photo Style Transfer
  6. 目标检测- YOLO v1--You Only Look Once
  7. Android中onClick(DialogInterface dialog,int which)函数和onClick(View v)函数
  8. windows开启ssh当跳板机
  9. python获取图片像素矩阵_用python处理图片实现图像中的像素访问
  10. 女朋友求爱c语言程序,[转载]一个程序员写的求爱程序