让代码更Pythonic

当然不要过分追求简洁,不然阅读的人就遭殃了,

部分逻辑复杂的情况还应按照清晰的逻辑脉络去写方便阅读,

毕竟我们是用代码实现功能然后维护,而不是单单的炫技。

##############

这里博主收集了一些比较常见的 Pythonic 写法,帮助你养成写优秀代码的习惯

1. 交换两个变量的值,正常都会想利用一个中间临时变量来过渡。

能用一行代码解决的(并且不影响可读性的),决不用三行代码

1 tmp =a2 a =b3 b =tmp4

5 ##############

6 a,b = b,a

2.在一个 for 循环中,如果逻辑比较简单,不如试用一下列表的列表推导式,虽然只有一行代码,但也逻辑清晰

1 my_list =[]2 for i in range(10):3 my_list.append(i*2)4

5 ##################

6 my_list = [i*2 for i in range(10)]

3.带索引遍历,更好的做法是利用 enumerate 这个内置函数

1 for i inrange(len(my_list)):2 print(i, "-->", my_list[i])3

4 ###############

5 for i,item inenumerate(my_list):6 print(i, "-->",item)

4.序列解包,使用 * 可以对一个列表解包

1 a, *rest = [1, 2, 3]2 #a = 1, rest = [2, 3]

3

4 #################

5 a, *middle, c = [1, 2, 3, 4]6 #a = 1, middle = [2, 3], c = 4

5.字符串拼接,一个列表(或者可迭代对象)中的所有元素都是字符串对象,想要将他们连接起来,更推荐的做法是使用 join 函数

1 letters = ['s', 'p', 'a', 'm']2 s=""

3 for let inletters:4 s +=let5

6 ###############

7 letters = ['s', 'p', 'a', 'm']8 word = ''.join(letters)

6.判断一个变量是否为真(假),新手习惯直接使用 == 与 True、False、None 进行对比,实际上,""、[]、{}这些没有任何元素的容器都是假值,可直接使用if not xx来判断。

1 if attr ==True:2 print('True!')3

4 if attr ==None:5 print('attr is None!')6

7

8 #################

9 ifattr:10 print('attr is truthy!')11

12 if notattr:13 print('attr is falsey!')

7.当直接使用[]来访问字典里的元素时,若key不存在,是会抛异常的,所以新会可能会先判断一下是否有这个 key,有再取,

更推荐的做法是使用get来取,如果没有该 key 会默认返回 None(当然你也可以设置默认返回值)

1 d = {'hello': 'world'}2 if d.has_key('hello'):3 print(d['hello']) #prints 'world'

4 else:5 print('default_value')6

7 ######################

8 d = {'hello': 'world'}9

10 print(d.get('hello', 'default_value')) #prints 'world'

11 print(d.get('thingy', 'default_value')) #prints 'default_value'

8.可以使用列表推导或者高阶函数 filter 来实现过滤列表元素,除了 filter 之外,还有 map、reduce 这两个函数也很好用

1 a = [3, 4, 5]2 b =[]3 for i ina:4 if i > 4:5 b.append(i)6 ##############

7 a = [3, 4, 5]8 b = [i for i in a if i > 4]9 #Or:

10 b = filter(lambda x: x > 4, a)11

12 a = [3, 4, 5]13 b = map(lambda i: i + 3, a)14 #b: [6,7,8]

9.文件读取是非常常用的操作,在使用完句柄后,是需要手动调用 close 函数来关闭句柄的,

如果代码写得太长,即使你知道需要手动关闭句柄,却也会经常会漏掉。因此推荐养成习惯使用with open来读写文件,上下文管理器会自动执行关闭句柄的操作

1 fp = open('file.txt')2 print(fp.read())3 fp.close()4

5 #############

6 with open('file.txt') as fp:7 for line infp.readlines():8 print(line)

10.代码续航,将一个长度较长的字符串放在一行中,是很影响代码可读性的(下面代码可向左滑动),

稍等注重代码可读性的人,会使用三个引号\来续写,也可以使用括号,导包的时候亦是如此

1 long_string = 'For a long time I used to go to bed early. Sometimes, when I had put out my candle, my eyes would close so quickly that I had not even time to say “I’m going to sleep.”'

2

3 ####################################

4 long_string = 'For a long time I used to go to bed early.'\5 'Sometimes, when I had put out my candle,'\6 'my eyes would close so quickly that I had not even time to say “I’m going to sleep.”'

7

8 #or

9 long_string =(10 "For a long time I used to go to bed early. Sometimes,"

11 "when I had put out my candle, my eyes would close so quickly"

12 "that I had not even time to say “I’m going to sleep.”"

13 )14 ###############################

15 from some.deep.module.inside.a.module import(16 a_nice_function, another_nice_function, yet_another_nice_function)

11.有时候出于需要,我们会使用一些特殊的魔法来使代码适应更多的场景不确定性,

但若非必要,请不要那么做。无端增加代码的不确定性,会让原先本就动态的语言写出更加动态的代码

1 def make_complex(*args):2 x, y =args3 return dict(**locals())4

5 ################

6 defmake_complex(x, y):7 return {'x': x, 'y': y}

12.对于暂不需要,却又不得不接收的的变量,请使用占位符

1 filename = 'foobar.txt' 2 basename, _, ext = filename.rpartition('.')

13.对于简单的判断并赋值,其实是可以使用三目运算,一行搞定

1 age = 20

2 if age > 18:3 type = "adult"

4 else:5 type = "teenager"

6

7 ###############

8 age = 20 b = "adult" if age > 18 else "teenager"

python代码画简单动物_Python代码简化相关推荐

  1. python代码画小狗_python代码画小狗_皮皮康之Python编程初探2:python函数的使用

    Hello 大家好,我是皮皮康. 相信此刻的你已经通过昨天的资料学会了如何使用python库以及对turtle库有了一定的了解,今天我们就结合turtle库讲述python函数的使用. [函数是什么? ...

  2. 代码画简单动物_[500行代码学懂OpenGL]之六数学知识

    数学知识 之前我们说有三个方向可以走 - 光.纹理.数学.然后我们简单看了一个光的例子来学习z-buffer和纹理,现在我们来看一下相关的数学知识.这些也很重要. 需要了解的概念包括: 矩阵是如何变换 ...

  3. python plot画简单的曲线图

    python plot画简单的曲线图 ubuntu jupyter notebook 画简单的曲线图,但显示中文时有问题,以下画曲线图指令和中文显示解决方法: 1.简单代码 import matplo ...

  4. python代码画皮卡丘_Python气象绘图实例我们一起画台风(代码+数据)

    前段时间袭击中国的超强台风"利奇马",以及这两天袭击美国的五级飓风"多利安",让我们感受到了大自然的力量.所以,今天分享一个简单的Python实例,也算是延续前 ...

  5. python代码画樱花-你用代码写作业,他用Python让樱花绽放,美哭了!

    在中国冠状病毒已然开始退却,但是周边邻邦与地区并不轻松,大洋彼岸欧美国家的病情开始漫延,Sars2-Covid-9出现变种,疫情此消彼涨,人们在焦虑中不断平静,因为人们终将胜利,世界终将复归美好. 不 ...

  6. python turtle画滑稽表情_python使用turtle库绘制奥运五环

    python使用turtle库绘制奥运五环 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令 ...

  7. python3爬虫小型代码_python3简单爬虫实现代码

    分享一个python实现的网络爬虫代码.转自:http://www.cnblogs.com/yes123/p/3761388.html 写了个python3的.代码非常简单就不解释了,直接贴代码. # ...

  8. python canvas画移动物体_Python GUI编程入门(25)-移动Canvas对象

    Canvas对象生成之后,有时会希望调整对象的位置.例如前面文章中提到的时钟小程序,我们稍加改造可以另外实现一个指针式时钟: 在这个小程序中增加的功能就是根据具体时间计算每个指针的坐标信息,这部分功能 ...

  9. python程序画漂亮图片_Python能画美观的专业插图吗 ?当然!

    原标题:Python能画美观的专业插图吗 ?当然! 文末领取[Python绘图代码] 冯昱尧| 方法一作者 阿昆 | 方法二作者 极市平台 | 编译 知乎 | 来源 1 方法一 强烈推荐 Python ...

最新文章

  1. Blender中的大师级3D环境场景制作学习教程
  2. 一文详解点云分割算法
  3. 一文带你学会国产加密算法SM4的java实现方案
  4. Property or field 'username' cannot be found on null
  5. python不简单_不简单的python- 01基础
  6. 基于javaweb(springboot+mybatis)网站建设服务管理系统设计和实现以及文档报告设计
  7. 完美解决Mac电脑睡眠之后苹果电脑没有声音的方法
  8. Docker本地私有仓库的建立
  9. html两行文字右侧对齐,HTML在同一行左右对齐文本
  10. wenbao与数论(大白书)
  11. 二维数组作为形参,传递二维数组的值
  12. Linux 查看磁盘容量、查找大文件、查找大目录
  13. 自学篇之----html的所有input标签 以及post和get提交之间的区别
  14. 外部接口需求怎么写_怎么写财务工作报告?送你16套高逼格财务工作报告范文PPT模板,满足不同行业会计需求!...
  15. GUN/LINUX的文件类型
  16. 小程序开发视频教程免费下载
  17. linux redis命令客户端,Redis客户端与基本命令
  18. 自动化车辆的开发、测试和验证场景
  19. 一根网线实现双机互联共享文件
  20. Unity3D 《拥挤城市》3D房子建筑透视效果实现

热门文章

  1. 2019上半年中小学教资考试教育知识与能力试题(中学)——主观题
  2. 串口收发乱码解决方案
  3. 华为发布鸿蒙支持手机,华为鸿蒙下月正式发布 华为鸿蒙系统支持的手机型号公布...
  4. 打开计算机页面闪,电脑打开网页屏幕闪烁怎么办?-解决电脑打开浏览器网页闪烁的方法 - 河东软件园...
  5. <NUC> 安装Windows10系统
  6. 403 Forbidden错误的原因和解决方法
  7. ACS Sustainable Chemistry Engineering期刊投稿分享
  8. url 转义 java_Java 特殊字符URL转义 | 学步园
  9. Oracle行转列(pivot)和Oracle列转行(unpivot)
  10. 创意界面设计_每个创意者都应该知道的设计基础