1.Mutable and immutable types

Python有两种内置或用户定义的类型

可变类型是允许就地修改内容的类型。典型的可变列表是列表和词典:所有列表都有变异方法,如 list.append()或list.pop(),并且可以在适当的位置进行修改。词典也是如此。

不可变类型不提供改变其内容的方法。例如,设置为整数6的变量x没有“增量”方法。如果要计算x + 1,则必须创建另一个整数并为其指定名称。

体会一下这Best这招,选择是使用map函数,它可以将内置函数类型str映射到迭代器range。这会生成一个map对象,然后就可以像其他示例一样join。在某些情况下,map函数甚至可能比列表理解更快,更简洁!

2.One statement per line

每一行一个语句,尤其在复杂的逻辑表达式的时候,这样会清晰很容易阅读

虽然列表推导等一些复合语句因其简洁性和表达性而被允许和赞赏,但在同一行代码上有两个脱节语句是不好的做法

3.Explicit code

Python因为技巧性非常高,有的时候滥用一些黑魔法,过度的使用技巧而反而失去了代码本身的直观性。

字典的更新有几种方法,dict(**locals)本意是想生成一个新的字典返回。在上面的好代码中,显式地从调用者接收x和y,并返回显式字典。使用此函数的开发人员通过读取第一行和最后一行就能确切地知道要做什么,而不是像坏例子的那种情况,比较晦涩难懂,不直接。

4.Returning values

关于返回值的处理

当函数的复杂性增加时,在函数体内使用多个return语句并不罕见。但是,为了保持清晰的意图和可持续的可读性水平,最好避免从体内的许多输出点返回有意义的值。

在函数中返回值有两种主要情况:函数在正常处理时返回的结果,以及指示错误输入参数的错误情况或函数无法完成其计算的任何其他原因或任务

def complex_function(a, b, c):

if not a:

return None # Raising an exception might be better

if not b:

return None # Raising an exception might be better

# Some complex code trying to compute x from a, b and c

# Resist temptation to return x if succeeded

if not x:

# Some Plan-B computation of x

return x # One single exit point for the returned value x will help

# when maintaining the code.

当一个函数在其正常过程中有多个主要出口时,调试返回的结果变得很困难,因此最好保留一个退出点。这也将有助于分解一些代码路径,如果函数有多个出口点,说明你的代码要进一步的重构。

5.Unpacking

如果知道列表或元组的长度,则可以通过解压缩为其元素指定名称。比如enumerate()将为列表中的每个项提供两个元素的元组,一个下标一个值:

for index, item in enumerate(some_list):

# do something with index and item

也可以使用它来交换变量:

a, b = b, a

嵌套解包也适用Py3.x

a, (b, c) = 1, (2, 3)

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

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

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

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

6.Searching for an item in a collection

有时我们需要搜索一系列的东西。让我们看看两个选项:列表和集合。

以下面的代码为例:

s = set(['s', 'p', 'a', 'm'])

l = ['s', 'p', 'a', 'm']

def lookup_set(s):

return 's' in s

def lookup_list(l):

return 's' in l

即使两个函数看起来都相同,因为lookup_set利用了Python中的集合是哈希表的事实,两者之间的查找性能是非常不同的。

要确定项目是否在列表中,Python必须遍历每个项目,直到找到匹配的项目。

这很费时,特别是对于长列表。另一方面,在集合中项目的哈希将告诉Python在集合中的哪个位置寻找匹配项目。因此,即使集合很大,也可以快速完成搜索

7.Check if variable equals a constan

检查变量是否等于常数

您不需要显式地将值与True或None或空进行比较 - 您只需将其添加到if语句即可。

8.Access a Dictionary Element

访问字典元素

不要使用该dict.has_key()方法。相反使用语法或传递默认参数 比如x in dict ,dict.get(k,default_value)

9.Filtering a list

过滤列表坏的做法,或者初学者经常会犯的错误。

好的做法是使用filter函数,从Python 3.0开始,该filter()函数返回迭代器而不是列表。如果你真的需要一个列表,前面加一个list()即可!

10.Read From a File

使用语法从文件中读取,这将自动为您关闭文件,一定要用with open

11.Line Continuations

代码长度的持续

当我们的逻辑代码行长于可接受的限制时(PEP8规定是79个字符),需要将其拆分为多个物理行。

如果行的最后一个字符是反斜杠,Python解释器将连接连续的行。这在某些情况下很有用,但通常应该避免因为它的脆弱性。

在反斜杠之后添加到行尾的空格会破坏代码并可能产生意外结果。

Bad :

my_very_big_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.”"""

from some.deep.module.inside.a.module import a_nice_function, another_nice_function, \

yet_another_nice_function

Good :

my_very_big_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.”"

)

from some.deep.module.inside.a.module import (

a_nice_function, another_nice_function, yet_another_nice_function)

更好的做法是在元素周围使用括号。在行尾留下一个未闭合的括号,Python解释器将加入下一行,直到括号被关闭。对于大括号和方括号,同样的行为也适用。

Invoking Descriptors - Python 描述符的用法建议

描述符用法建议, 内置的 property 类创建的是'覆盖型'(date descriptor), 实现了 __set__ 和 __get__. 特性 property 的 __set__ 方法 默 ...

Python写代码的时候为什么要注释?Sun因此被Oracle收购

导读: 此块分为:1.注释的重要性 2.如何正确注释 注释的重要性 在我们看代码的时候,会遇到很多看不懂得代码,特别是在做项目的时候,代码的注释以及命名习惯的重要性就有了为什么这么说呢? 因为在很多情 ...

python 写代码笔记 2017.6.15

其实并不是越复杂的代码越好,简单高效才是好. 关键是思路和逻辑,还有多看别人写的代码. 学习到了:)

细说Python的lambda函数用法,建议收藏

细说Python的lambda函数用法,建议收藏 在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Pyth ...

《编写高质量代码:改善Python程序的91个建议》读后感

编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断 ...

Python写出LSTM-RNN的代码

0. 前言 本文翻译自博客: iamtrask.github.io ,这次翻译已经获得trask本人的同意与支持,在此特别感谢trask.本文属于作者一边学习一边翻译的作品,所以在用词.理论方面难免会 ...

写代码中遇到的问题(php接收不到传过来的json数据,php使用utf8的用法)

今天写代码用python处理完数据,传给php服务器后,发现接收不到数据,因为是跨域,所以加了消息头:header('Access-Control-Allow-Origin:*');但是并没有什么卵用 ...

震惊!!!python可以用中文来写代码

python可以用中文来写代码 说明: 偶尔间试了一下,python可以用中文来写代码,除了一些python内置函数,和运算符不能用中文外,其它的比如新定义的类名.函数名.变量名,甚至是函数间传的参数 ...

用Python写一个将Python2代码转换成Python3代码的批处理工具

之前写过一篇如何在windows操作系统上给.py文件添加一个快速处理的右键功能的文章:,作用就是为了将Python2的文件升级转换成P ...

随机推荐

Struts 2 数据校验要用到的类和两种校验方式以及一些校验问题的解决

通过继承ActionSupport类来完成Action开发,ActionSupport类不仅对Action接口进行简单实现, 同时增加了验证.本地化等支持 .真实开发中自定义Action都需要继承该类 ...

SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试(转)

python写了代码_Python写代码的用法建议相关推荐

  1. python抢红包random实现_python写红包的原理流程包含random,lambda其中的使用和见简单介绍...

    Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...

  2. python可以用来写什么工具_python写工具

    谷歌开源 Python Fire:可自动生成命令行接口 今天我们很高兴地宣布 Python Fire 开源.Python Fire 可从任何 Python 代码生成命令行接口(command line ...

  3. python折叠代码_Python实现代码块儿折叠

    Python实现代码块儿折叠 在python中方法和类都是可以折叠的,但是很多时候需要按照实现的功能将一部分代码折叠起来. 可以用着样的注释代码实现: # ''' your code ''' # 很简 ...

  4. python画画的代码_python画画代码

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! life is short, just use python.自从08年接触py ...

  5. python 物理引擎 摩擦力_Python 愤怒的小鸟代码实现:物理引擎pymunk使用

    游戏介绍 最近比较忙,周末正好有时间写了python版本的愤怒的小鸟,使用了物理引擎pymunk,图片资源是从github上下载的,实现了一个可玩的简单版本. 功能实现如下:支持小鸟类型:红色小鸟,蓝 ...

  6. python写推箱子_python写的推箱子小游戏

    原标题:python写的推箱子小游戏 导语 Python 功能强大,可以写爬虫.服务器.数据分析.AI--当然,也可以写游戏. 用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧~ ...

  7. python只能用一行代码_Python 一行代码能实现丧心病狂的功能

    手头有 109 张头部 CT 的断层扫描图片,我打算用这些图片尝试头部的三维重建.基础工作之一,就是要把这些图片数据读出来,组织成一个三维的数据结构(实际上是四维的,因为每个像素有 RGBA 四个通道 ...

  8. python人物代码_Python 超级玛丽代码实现:人物行走和碰撞检测

    功能介绍 人物行走 人物的行走速度这边分成水平方向(X轴)和竖直方向(Y轴),水平方向的速度要考虑加速度和摩擦力,竖直方向的速度要考虑重力加速度.水平方向:设定X轴向右走的速度为大于0,向左走的速度为 ...

  9. 用python写爱你_python表白代码-520使用Python实现quot;我爱你”表白

    摘要: 每到情人节.七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题――怎么给女朋友/老婆一个与众不同的节日惊喜.今天给大家分享一个独特的表白方法――用"我爱你"拼出心爱人的模样 ...

最新文章

  1. python该怎么自学-Python 应该怎么学?
  2. 【转】javascript中的LHS与RHS
  3. c语言总是说有一个错误,我的电脑上的c语言为何老有一个错误
  4. 快慢指针____函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移
  5. 使用cmake安装mysql5.5.13
  6. 《天涯明月刀》窦德斌:美术需要突破自我的局限
  7. SQL 快速入门2.1
  8. 数据存储和界面展示(二)
  9. 转型个股赚钱机会最大--封起“345”选股
  10. 多个平台下使用Custom Fonts
  11. 阿里云网盘内测_叫板百度网盘?阿里云网盘内测中,下载速度是亮点
  12. java qq音乐接口 api,QQ音乐的各种相关API
  13. 易语言对象--Word之按行定位并写入文本
  14. Java修改图片尺寸
  15. BadImageFormatException-试图加载格式不正确的程序(0x8007000B)
  16. ping 不通百度问题的解决
  17. 索尼手机的摄像功能怎么样?
  18. OpenMV自学笔记
  19. IOS App的简单开发实例
  20. maven的依赖下载不下来,解决的几种方法(包括手动下载导入)

热门文章

  1. python 多进程管道 消息式通信
  2. python mask 添加logo
  3. window opengl
  4. 统一账号/统一认证系统的引入和搭建(LDAP)
  5. oracle生成xml格式化,介绍关于Oracle下存取XML格式数据的方式教程一览
  6. 计算机网络中st是什么,计算机组成中ST 是指什么
  7. 理解Git的设计思想,详解git文件夹,以及详解add、commit、push,fetch、pull、merge指令
  8. linux c/c++ 判断是否为中文(不包括中文符号,非正则)
  9. 小结 frambuffer 原理及流程 (五)
  10. 多重继承_Java语言编程第25讲——Java中多重继承,也会导致模棱两可的歧义