标签:lock 文件 read 括号 gic add 方法表 protected 操作
本节内容如下:
代码使用缩进的方式,而不是大括号是Python语言规范中的一大特点,如果你有其他语言基础的话,可能需要适应一下:
flag = True if flag: print ( ‘代码块1‘ ) print ( ‘代码块2‘ ) else : print ( ‘代码块3‘ ) print ( ‘代码块4‘ ) |
不要在行尾加分号, 也不要用分号将两条命令放在同一行。查看原文
每行不超过80个字符,以下情况除外:
宁缺毋滥的使用括号
除非是用于实现行连接, 否则不要在返回语句或条件语句中使用括号. 不过在元组两边使用括号是可以的.
Yes: if foo: bar() while x: x = bar() if x and y: bar() if not x: bar() return foo for (x, y) in dict .items(): ... No: if (x): bar() if not (x): bar() return (foo) |
用4个空格来缩进代码
绝对不要用tab, 也不要tab和空格混用. 对于行连接的情况, 你应该要么垂直对齐换行的元素群:369606713
Yes: # 与起始变量对齐 foo = long_function_name(var_one, var_two, var_three, var_four) # 字典中与起始值对齐 foo = { long_dictionary_key: value1 + value2, ... } # 4 个空格缩进,第一行不需要 foo = long_function_name( var_one, var_two, var_three, var_four) # 字典中 4 个空格缩进 foo = { long_dictionary_key: long_dictionary_value, ... } No: # 第一行有空格是禁止的 foo = long_function_name(var_one, var_two, var_three, var_four) # 2 个空格是禁止的 foo = long_function_name( var_one, var_two, var_three, var_four) # 字典中没有处理缩进 foo = { long_dictionary_key: long_dictionary_value, ... } |
顶级定义之间空两行, 方法定义之间空一行
顶级定义之间空两行, 比如函数或者类定义. 方法定义, 类定义与第一个方法之间, 都应该空一行. 函数或方法中, 某些地方要是你觉得合适, 就空一行.
按照标准的排版规范来使用标点两边的空格
括号内不要有空格.
按照标准的排版规范来使用标点两边的空格
Yes: spam(ham[ 1 ], {eggs: 2 }, []) No: spam( ham[ 1 ], { eggs: 2 }, [ ] ) |
不要在逗号, 分号, 冒号前面加空格, 但应该在它们后面加(除了在行尾).
Yes: if x = = 4 : print x, y x, y = y, x No: if x = = 4 : print x , y x , y = y , x |
参数列表, 索引或切片的左括号前不应加空格.
Yes: spam( 1 ) no: spam ( 1 ) Yes: dict [ ‘key‘ ] = list [index] No: dict [ ‘key‘ ] = list [index] |
在二元操作符两边都加上一个空格, 比如赋值(=), 比较(==, <, >, !=, <>, <=, >=, in, not in, is, is not), 布尔(and, or, not). 至于算术操作符两边的空格该如何使用, 需要你自己好好判断. 不过两侧务必要保持一致.
Yes: x = = 1 No: x< 1 |
当‘=‘用于指示关键字参数或默认参数值时, 不要在其两侧使用空格.
Yes: def complex (real, imag = 0.0 ): return magic(r = real, i = imag) No: def complex (real, imag = 0.0 ): return magic(r = real, i = imag) |
不要用空格来垂直对齐多行间的标记, 因为这会成为维护的负担(适用于:, #, =等):
Yes: foo = 1000 # 注释 long_name = 2 # 注释不需要对齐 dictionary = { "foo" : 1 , "long_name" : 2 , } No: foo = 1000 # 注释 long_name = 2 # 注释不需要对齐 dictionary = { "foo" : 1 , "long_name" : 2 , } |
如果一个类不继承自其它类, 就显式的从object继承. 嵌套类也一样.
Yes: class SampleClass( object ): pass class OuterClass( object ): class InnerClass( object ): pass class ChildClass(ParentClass): """Explicitly inherits from another class already.""" No: class SampleClass: pass class OuterClass: class InnerClass: pass |
继承自 object 是为了使属性(properties)正常工作, 并且这样可以保护你的代码, 使其不受Python 3000的一个特殊的潜在不兼容性影响. 这样做也定义了一些特殊的方法, 这些方法实现了对象的默认语义, 包括 new, init, delattr, getattribute, setattr, hash, repr, and str .
每个导入应该独占一行
Yes: import os import sys No: import os, sys |
导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前. 导入应该按照从最通用到最不通用的顺序分组: 标准库导入 第三方库导入 应用程序指定导入 每种分组中, 应该根据每个模块的完整包路径按字典序排序, 忽略大小写.
import foo from foo import bar from foo.bar import baz from foo.bar import Quux from Foob import ar |
通常每个语句应该独占一行
不过, 如果测试结果与测试语句在一行放得下, 你也可以将它们放在同一行. 如果是if语句, 只有在没有else时才能这样做. 特别地, 绝不要对 try/except 这样做, 因为try和except不能放在同一行.
Yes: if foo: bar(foo) No: if foo: bar(foo) else : baz(foo) try : bar(foo) except ValueError: baz(foo) try : bar(foo) except ValueError: baz(foo) |
module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name. |
应该避免的名称
命名约定
标签:lock 文件 read 括号 gic add 方法表 protected 操作
原文地址:http://www.cnblogs.com/2xkt/p/7595852.html