上一篇我们讲述了一些我个人看来比较重要的基于Airbnb Javascript规范的注意事项,这一篇我们回归到Python,来看一下基于Google的StyleGuide。

首先是全局变量,不论是写web还是做一些其他的小项目,我都很少使用全局变量这个东西,很多人和我一样,而谷歌的设计规范也说明了,在一定情况下,我们确实应该尽量避免使用全局变量。很多时候类变量已经完全满足我们的要求了。

关于列表推导,有时确实会让你感觉精简,但有时复杂的列表推导也会让你一头雾水,正如我们想的那样,简单的推荐使用,复杂的还是老老实实用循环吧:,。

Yes:result = []for x in range(10):for y in range(5):if x * y > 10:result.append((x, y))No:result = [(x, y) for x in range(10) for y in range(5) if x * y > 10]

lambda函数的使用,总体上是比较模糊的,但是现在越来越多的人并不愿意使用这个,包括我自己,谷歌表示你可以在单行代码中使用,随便你吧。

对于条件表达式,与列表推导相似,适用于单行函数. 在其他情况下,推荐使用完整的if语句.

因为不支持重载,谷歌对于默认参数还是鼓励使用的,只不过要注意不要在函数或方法定义中使用可变对象作为默认值,这一点在JS中也有类似的共识:

Yes: def foo(a, b=None):if b is None:b = []No:  def foo(a, b=[]):...
No:  def foo(a, b=time.time()):...

对于不要显性的出现"True"和"False",同样与JS类似,上文已经提及,在JS中"[]"是True,而在Python,[]毫无疑问是False。

对于一些过时的语言特性,诸如filter(), map()以及reduce(),我们还是不要再去使用了。

对于装饰器,这是Python相对于其他语言最好用也是最成熟的一部分了,当然是鼓励大家多多使用。

但是像诸如元类,动态继承等一些更进一步的高阶Python特性,我们就应该谨慎选择了。,尽量去避免使用。

对于括号,下面所示的是完全没有必要的,属于滥用:

No:  if (x):bar()if not(x):bar()return (foo)

对于定义之间的空行,顶级定义之间空两行, 方法定义之间空一行,同时不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加,除了句尾之外。

同时有一点我觉得需要大家注意的,不要用空格来垂直对齐多行间的标记,这对维护起来其实是一个巨大的麻烦:

No:foo       = 1000  # commentlong_name = 2     # comment that should not be aligneddictionary = {"foo"      : 1,"long_name": 2,}

对于类,如果一个类不继承自其它类, 就显式的从object继承,嵌套类也一样。

Yes: class SampleClass(object):passclass OuterClass(object):class InnerClass(object):passclass ChildClass(ParentClass):"""Explicitly inherits from another class already."""No: class SampleClass:passclass OuterClass:class InnerClass:pass

接着是和JS相反的,每个导入占据一行

Yes: import osimport sysNo: import os, sys

最后关于语句的问题,每个语句应该独占一行,举个例子:

No:if foo: bar(foo)else:   baz(foo)try:               bar(foo)except ValueError: baz(foo)try:bar(foo)except ValueError: baz(foo)

这样的方式是不对的,对于if,在没有else的情况下,我们才可以允许其归并到一行中。

简单说一下Python的类型注释,在现如今Js都渐渐向Ts迈进的大环境下,动态语言的类型注释确实是一个大项目的重要问题。对于Python来说,我们虽然只能简单的注释一下,但是这样的写法在一定程度上也是有帮助的:

def add(x:int, y:int) -> int:return x + y

典型的上面的demo,大家可以养成这样的习惯,也可以关注在这方面的一些最新进展,希望能有更加满足我们需要的解决办法出现。

Google Python StyleGuide和Python类型注释相关推荐

  1. Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释

    在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...

  2. python去除php、java、js、html、vue等类型注释字符方法实例

    本篇文章主要讲解:python去除php.java.js.html.vue等所类型注释字符方法实例 作者:任聪聪 可以处理php.java.python.js.html.vue.node.mysql等 ...

  3. python冒号声明类型_Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释...

    在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...

  4. python脚本删除源码注释

    原文出处: 吴秦的博客 在大概3个月之前,Python对我来说一直是个迷.然而,就在3个月前我经理给我一个任务--删除(替换)所有项目源码文件中包含特定几行内容的所有注释.整个项目源码的大小有1G,在 ...

  5. 《Python 1》--python的简介、解释器、读取键盘输入函数、变量类型推断、5个标准数据类型、字符串的内置函数、for循环、list列表、tuple元组、字典dictionary

    Python 的起源: Python 的创始人为吉多·范罗苏姆(Guido van Rossum) 1. 1989 年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的**解释程序 ...

  6. Python基础语法、python基础数据类型、python解释器、python注释符、python-range()和sum()

    前段时间准备考研去了,没什么时间写博客,老师一番教诲,细想我这自考本的身份去考名校,万一没考上在这里白学了,到时候找工作也是个难事.细想自己的环境不容自己这么极端,也是自己把自己想的太美好了,怎么可能 ...

  7. python中文解释-python注释中文

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 4.python代码注释最后更新于:2019-10-05 14:25:4 ...

  8. Python学习笔记之类型判断,异常处理,终止程序操作小结

    Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...

  9. python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符

    第二章:变量.数据类型.运算符 思考:怎么理解变量和内存? 变量:就等同于上面图中的age name hobby 内存:存储位置里所装的内容 18 张三 打球 变量一定是存在某个地址,可以从变量名找到 ...

最新文章

  1. 磁珠 磁环 双向二极管 TVS二极管
  2. 李飞飞力赞论文:描述视频密集事件新模型 !(附论文)
  3. BYOD革命挑战企业IT安全
  4. U型管铁球或将代替现代火箭喷射装置
  5. CC2541对AT24CXX系列存储器的支持
  6. VTK:PolyData之PolyDataToImageData
  7. python ttf svg path_SVG的path的使用
  8. java面向对象的特征 —(13)
  9. P2607-[ZJOI2008]骑士【基环树,树形dp】
  10. [css] css中的baseline,你知道吗?
  11. 抗日战争时期的陈建功和苏步青
  12. CSP-J NOIP NOI数学与动态规划
  13. 遇到问题的时候,要学会问问题
  14. ATITIT提升效率 保持简单性 优化 简化 目录 1.1. 概念简单 1 1.2. 语言简单性 弱类型 动态变量 动态实体 1 1.3. 数据结构简单 arr 代替了array map s
  15. 无代码编程的兴起:借助无代码平台,无需编写任何基础代码即可开发软件
  16. 收获不止mysql_收获 不止SQL优化 抓住SQL的本质pdf
  17. python基础之字典函数(12)
  18. 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
  19. 【P4lang】P4数据平面编程实验basic_tunnel
  20. 洛谷P4238 多项式乘法逆元

热门文章

  1. 计算机仿真撤稿,Science 也撤稿了? 杯具啊 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  2. Python+微信小程序开发(四)页面跳转和获取用户信息
  3. memset性能陷阱
  4. asp.net服装连锁店管理系统
  5. 企业如何快速开发顾客
  6. 超微主板IPMI激活升级BIOS的方法
  7. Ubuntu 12.04 双显卡安装(Nvidia+intel集成卡 --Optimus智能切换技术)
  8. Java黄金矿工小游戏,适合新手入门练手项目
  9. Android 使用easeui 3.0 集成环信即时通讯 我踩过的坑
  10. 精品站长网交易系统源码/虚拟交易网站程序源码+全套打包2G