优雅的python_优雅的Python
for - else
什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看:
for i in [1,2,3,4]:
print(i)
else:
print(i, '我是else')
1
2
3
4
4 我是else
如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍:
for i in [1,2,3,4]:
if i > 2:
print(i)
else:
print(i, '我是else')
3
4
4 我是else
那么,如何拆散 for 和 else 这对冤家呢?只有当 for 循环被 break 语句中断之后,才会跳过 else 语句:
for i in [1,2,3,4]:
if i>2:
print(i)
break
else:
print(i, '我是else')
3
* 和 **
有没有发现,星(*)真是一个神奇的符号!想一想,没有它,C语言还有啥好玩的?同样,因为有它,Python 才会如此的仪态万方、风姿绰约、楚楚动人!Python 函数支持默认参数和可变参数,一颗星表示不限数量的单值参数,两颗星表示不限数量的键值对参数。
我们还是举例说明吧:设计一个函数,返回多个输入数值的和。我们固然可以把这些输入数值做成一个list传给函数,但这个方法,远没有使用一颗星的可变参数来得优雅:
>>> def multi_sum(*args):
s = 0
for item in args:
s += item
return s
>>> multi_sum(3,4,5)
12
Python 函数允许同时全部或部分使用固定参数、默认参数、单值(一颗星)可变参数、键值对(两颗星)可变参数,使用时必须按照前述顺序书写。
>>> def do_something(name, age, gender='男', *args, **kwds):
print('姓名:%s,年龄:%d,性别:%s'%(name, age, gender))
print(args)
print(kwds)
>>> do_something('xufive', 50, '男', 175, 75, math=99, english=90)
姓名:xufive,年龄:50,性别:男
(175, 75)
{'math': 99, 'english': 90}
三元表达式
熟悉 C/C++ 的程序员,初上手 python 时,一定会怀念经典的三元操作符,因为想表达同样的思想,用python 写起来似乎更麻烦。比如:
>>> y = 5
>>> if y < 0:
print('y是一个负数')
else:
print('y是一个非负数')
y是一个非负数
其实,python 是支持三元表达式的,只是稍微怪异了一点,类似于我们山东人讲话。比如,山东人最喜欢用倒装句:打球去吧,要是不下雨的话;下雨,咱就去自习室。翻译成三元表达式就是:
打球去吧 if 不下雨 else 去自习室
来看看三元表达式具体的使用:
>>> y = 5
>>> print('y是一个负数' if y < 0 else 'y是一个非负数')
y是一个非负数
python 的三元表达式也可以用来赋值:
>>> y = 5
>>> x = -1 if y < 0 else 1
>>> x
1
with - as
with 这个词儿,英文里面不难翻译,但在 Python 语法中怎么翻译,我还真想不出来,大致上是一种上下文管理协议。作为初学者,不用关注 with 的各种方法以及机制如何,只需要了解它的应用场景就可以了。with 语句适合一些事先需要准备,事后需要处理的任务,比如,文件操作,需要先打开文件,操作完成后需要关闭文件。如果不使用with,文件操作通常得这样:
fp = open(r"D:\1.py", 'r')
try:
contents = fp.readlines()
finally:
fp.close()
如果使用 with - as,那就优雅多了:
>>> with open(r"D:\1.py", 'r') as fp:
contents = fp.readlines()
列表推导式
在各种稀奇古怪的语法中,列表推导式的使用频率应该时最高的,对于代码的简化效果也非常明显。比如,求列表各元素的平方,通常应该这样写(当然也有其他写法,比如使用map函数):
>>> a = [1, 2, 3, 4, 5]
>>> result = list()
>>> for i in a:
result.append(i*i)
>>> result
[1, 4, 9, 16, 25]
如果使用列表推导式,看起来就舒服多了:
>>> a = [1, 2, 3, 4, 5]
>>> result = [i*i for i in a]
>>> result
[1, 4, 9, 16, 25]
事实上,推导式不仅支持列表,也支持字典、集合、元组等对象。
列表索引的各种骚操作
Python 引入负整数作为数组的索引,这绝对是喜大普奔之举。想想看,在C/C++中,想要数组最后一个元素,得先取得数组长度,减一之后做索引,严重影响了思维的连贯性。Python语言之所以获得成功,我个人觉得,在诸多因素里面,列表操作的便捷性是不容忽视的一点。请看:
>>> a = [0, 1, 2, 3, 4, 5]
>>> a[2:4]
[2, 3]
>>> a[3:]
[3, 4, 5]
>>> a[1:]
[1, 2, 3, 4, 5]
>>> a[:]
[0, 1, 2, 3, 4, 5]
>>> a[::2]
[0, 2, 4]
>>> a[1::2]
[1, 3, 5]
>>> a[-1]
5
>>> a[-2]
4
>>> a[1:-1]
[1, 2, 3, 4]
>>> a[::-1]
[5, 4, 3, 2, 1, 0]
如果说,这些你都很熟悉,也经常用,那么接下来这个用法,你一定会感觉很神奇:
>>> a = [0, 1, 2, 3, 4, 5]
>>> b = ['a', 'b']
>>> a[2:2] = b
>>> a
[0, 1, 'a', 'b', 2, 3, 4, 5]
>>> a[3:6] = b
>>> a
[0, 1, 'a', 'a', 'b', 4, 5]
lambda函数
lambda 听起来很高大上,其实就是匿名函数(了解js的同学一定很熟悉匿名函数)。匿名函数的应用场景是什么呢?就是仅在定义匿名函数的地方使用这个函数,其他地方用不到,所以就不需要给它取个阿猫阿狗之类的名字了。下面是一个求和的匿名函数,输入参数有两个,x和y,函数体就是x+y,省略了return关键字。
>>> lambda x,y: x+y
at 0x000001B2DE5BD598>
>>> (lambda x,y: x+y)(3,4) # 因为匿名函数没有名字,使用的时候要用括号把它包起来
匿名函数一般不会单独使用,而是配合其他方法,为其他方法提供内置的算法或判断条件。比如,使用排序函数sorted对多维数组或者字典排序时,就可以指定排序规则。
>>> a = [{'name':'B', 'age':50}, {'name':'A', 'age':30}, {'name':'C', 'age':40}]
>>> sorted(a, key=lambda x:x['name']) # 按姓名排序
[{'name': 'A', 'age': 30}, {'name': 'B', 'age': 50}, {'name': 'C', 'age': 40}]
>>> sorted(a, key=lambda x:x['age']) # 按年龄排序
[{'name': 'A', 'age': 30}, {'name': 'C', 'age': 40}, {'name': 'B', 'age': 50}]
再举一个数组元素求平方的例子,这次用map函数:
>>> a = [1,2,3]
>>> for item in map(lambda x:x*x, a):
print(item, end=', ')
1, 4, 9,
优雅的python_优雅的Python相关推荐
- python手机版怎么用-如何优雅的在手机上进行Python编程
原标题:如何优雅的在手机上进行Python编程 很多人都在学习Python,但是我们往往在清香于忙碌工作的同时的时候,很少有空余时间去学习py.今天就给大家推荐一个运行在android手机上的开发软件 ...
- 手机上有没有学python的软件-如何优雅的在手机上进行Python编程
原标题:如何优雅的在手机上进行Python编程 很多人都在学习Python,但是我们往往在清香于忙碌工作的同时的时候,很少有空余时间去学习py.今天就给大家推荐一个运行在android手机上的开发软件 ...
- 手机python代码写好了怎么运行-如何优雅的在手机上进行Python编程
原标题:如何优雅的在手机上进行Python编程 很多人都在学习Python,但是我们往往在清香于忙碌工作的同时的时候,很少有空余时间去学习py.今天就给大家推荐一个运行在android手机上的开发软件 ...
- python 手机编程termux_如何优雅的在手机上进行Python编程?
其实谈不上优雅,编程还是老老实实在电脑编程更实用,手机只是某种程度上做一些便捷性的操作. 回到主题,下面介绍两个常用的Python编程工具. 第一款:Termux Termux是一个安卓手机的 Lin ...
- python优雅编程_Python优雅编程——Collections模块中的高性能数据类型
Python中内置了4 种数据类型,列表(List),元组(Tuple),集合(Set),字典(Dict).这些数据类型都有其各自的特性,但是有些特性,比如字典无序,在一定程度上对数据类型的使用产生了 ...
- python优雅编程视频_日常 Python 编程优雅之道
3 个可以使你的 Python 代码更优雅.可读.直观和易于维护的工具. Python 提供了一组独特的工具和语言特性来使你的代码更加优雅.可读和直观.为正确的问题选择合适的工具,你的代码将更易于维护 ...
- python优雅代码大全_10个Python技巧帮你写出更优雅的代码
阅读本文需要 2 分钟,公众号 somenzz ,欢迎学习 Python 的朋友订阅. 现在写代码的门槛非常低了,少儿都开始编程了,但从代码的风格一眼看出编码水平.是的,写代码是容易的,写出易读的代码 ...
- 优雅地实现if-else(python版)
if-else版: def if_else(operator,x,y):if operator=='mul':return x*yelif operator=='add':return x+yelif ...
- 干货 |如何优雅的在手机上进行Python编程
大家都知道有安卓上有一个QPython,可以写Python,但是QPython已经好久没有更新了,官方也貌似没有更新的打算了.今天,给大家推荐另一款安卓工具.QPython支持的库也有限,不能很好的满 ...
最新文章
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
- webpack 3.1 升级webpack 4.0
- 让思考成为一种习惯:一位软件工程专业学生的大学生涯规划
- Git新建临时分支进行开发后合并至master
- ECharts 雷达图在类目值下面显示数值
- 小程序怎么打出横线效果_成都小程序开发:哪些因素会影响小程序的运营效果?...
- Halcon算子学习:图像阈值分割-threshold、binary_threshold、dyn_threshold算子
- android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例
- 【华为云技术分享】开发团队中的任务没人领取,你头疼吗?
- oracle查询时定义临时的变量,oracle学习笔记之临时变量的使用
- Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
- java 二叉树_拼多多Java开发1234面:二叉树+负载均衡+MySQL+Redis+高并发
- Linux应用调试-strace命令
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_6 Mybatis中使用Dao实现类的执行过程分析-增删改方法...
- Win10显示文件扩展名
- 【特征提取】基于matlab熵函数语音端点检测【含Matlab源码 1764期】
- AMOS问卷数据建模前传【SPSS 052期】
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
- 【数字信号处理】FIR 滤波器基础理论
- 心电电路算法滤波_心电仪滤波
热门文章
- Jmeter分布式集群
- 随机投点法计算定积分java_科学网—0026:蒙特卡洛求定积分三种方法的理解 - 何成文的博文...
- 远程开关机神器Wake On LAN,免费有中文版
- 双十一好物推荐:2022年好用的数码好物分享
- 电力系统分析-功率因素
- 对表格的td标签执行点击事件
- 判断当前设备是否为移动端/手机/IOS
- php 趋势图,PHP实现股票趋势图和柱形图
- 我的世界服务器无限刷雪傀儡,我的世界:都说雪傀儡百无一用?它建立的安全区堪比和平模式...
- Nexus9刷机步骤,google其他nexus手机或者平板设备步骤类似