关于字符串格式化
推荐统一使用格式化字符串字面值(formattedstring literal),在Python v3.6+支持了这种方式。
f'Hello, {name}!'
'Hello, Bob!'
这种格式化语法非常强大,因为其中可以嵌入任意的python表达式。比如
a = 5
b = 10
f'Five plus ten is {a + b} and not {2 * (a + b)}.'
关于下划线的使用
前置单下划线 _var
前置但下划线只有约定含义,其本身并不会影响程序的行为,一般用于:以前置单下划线命名的变量或方法,是为了提示程序员该变量/方法只在内部使用。
“注意,这不是这个类的公共接口,请不要使用它。”
如果使用通配符导入某个模块的所有名称,python不会导入带有前置单下划线的所有名称。当然,import的时候始终不建议使用通配符,违背了导入规范。
后置单下划线 var_
如果某个变量最合适的名称已被python关键词占用,这种情况下,可以追加一个下划线来避免命名冲突。
前置双下划线 __var
前置双下划线真正的能够做到类的方法和名称只在类内部使用,外部无法直接使用。因为python使用了名称改写(name mangling)来实现,比如:
class Test:
def __init__()
self.__a = 12
我们使用内置的dir方法查看对象的属性dir(Test())
,会看到__a
被改写成了_Test__a
,哈哈,所以外部无法访问__a
。
前后双下划线 var
如果名称前后都出现双下划线,则不会触发名称改写。但是有一些特殊的名称如__init__
、__call__
等,一般被称为魔法方法。
单下划线 _
这个经常看到,在做元组解包的时候,有些变量我们用不上,就会给命名为单下划线。来表示变量是临时的无关紧要的。这也是一种社区约定。
巧妙的用好逗号
强烈建议给列表(list)、集合(set)、字典(dict)的最后一个元素添加逗号,这样做能够避免在后面添加或移除元素的搞出bug,比如
list_ = ['aa',
'bb'
]
然后某次要在后面添加一项,如:
list_ = ['aa',
'bb'
'cc'
]
忘记了给'bb'
项目添加逗号,哈哈恭喜新添加了个bug。 针对这种后面可能有改动的列表,如果每个项后面都有个逗号,添加或者删除一项,git diff
的时候也能清晰的看到这某一行的改动。而不会因为添加一项涉及到两行的改动。