Google Python StyleGuide和Python类型注释
上一篇我们讲述了一些我个人看来比较重要的基于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类型注释相关推荐
- Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释
在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...
- python去除php、java、js、html、vue等类型注释字符方法实例
本篇文章主要讲解:python去除php.java.js.html.vue等所类型注释字符方法实例 作者:任聪聪 可以处理php.java.python.js.html.vue.node.mysql等 ...
- python冒号声明类型_Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释...
在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...
- python脚本删除源码注释
原文出处: 吴秦的博客 在大概3个月之前,Python对我来说一直是个迷.然而,就在3个月前我经理给我一个任务--删除(替换)所有项目源码文件中包含特定几行内容的所有注释.整个项目源码的大小有1G,在 ...
- 《Python 1》--python的简介、解释器、读取键盘输入函数、变量类型推断、5个标准数据类型、字符串的内置函数、for循环、list列表、tuple元组、字典dictionary
Python 的起源: Python 的创始人为吉多·范罗苏姆(Guido van Rossum) 1. 1989 年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的**解释程序 ...
- Python基础语法、python基础数据类型、python解释器、python注释符、python-range()和sum()
前段时间准备考研去了,没什么时间写博客,老师一番教诲,细想我这自考本的身份去考名校,万一没考上在这里白学了,到时候找工作也是个难事.细想自己的环境不容自己这么极端,也是自己把自己想的太美好了,怎么可能 ...
- python中文解释-python注释中文
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 4.python代码注释最后更新于:2019-10-05 14:25:4 ...
- Python学习笔记之类型判断,异常处理,终止程序操作小结
Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...
- python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符
第二章:变量.数据类型.运算符 思考:怎么理解变量和内存? 变量:就等同于上面图中的age name hobby 内存:存储位置里所装的内容 18 张三 打球 变量一定是存在某个地址,可以从变量名找到 ...
最新文章
- 磁珠 磁环 双向二极管 TVS二极管
- 李飞飞力赞论文:描述视频密集事件新模型 !(附论文)
- BYOD革命挑战企业IT安全
- U型管铁球或将代替现代火箭喷射装置
- CC2541对AT24CXX系列存储器的支持
- VTK:PolyData之PolyDataToImageData
- python ttf svg path_SVG的path的使用
- java面向对象的特征 —(13)
- P2607-[ZJOI2008]骑士【基环树,树形dp】
- [css] css中的baseline,你知道吗?
- 抗日战争时期的陈建功和苏步青
- CSP-J NOIP NOI数学与动态规划
- 遇到问题的时候,要学会问问题
- ATITIT提升效率 保持简单性 优化 简化 目录 1.1. 概念简单	1 1.2. 语言简单性 弱类型 动态变量 动态实体	1 1.3. 数据结构简单 arr 代替了array map s
- 无代码编程的兴起:借助无代码平台,无需编写任何基础代码即可开发软件
- 收获不止mysql_收获 不止SQL优化 抓住SQL的本质pdf
- python基础之字典函数(12)
- 【原创】新韭菜日记20---在国内股市亏钱的最大原因就是杠杆和割肉
- 【P4lang】P4数据平面编程实验basic_tunnel
- 洛谷P4238 多项式乘法逆元
热门文章
- 计算机仿真撤稿,Science 也撤稿了? 杯具啊 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
- Python+微信小程序开发(四)页面跳转和获取用户信息
- memset性能陷阱
- asp.net服装连锁店管理系统
- 企业如何快速开发顾客
- 超微主板IPMI激活升级BIOS的方法
- Ubuntu 12.04 双显卡安装(Nvidia+intel集成卡 --Optimus智能切换技术)
- Java黄金矿工小游戏,适合新手入门练手项目
- Android 使用easeui 3.0 集成环信即时通讯 我踩过的坑
- 精品站长网交易系统源码/虚拟交易网站程序源码+全套打包2G