标签:元素 enc session system 第三方 dir 描述 源码 增加
代码除了用来运行外,更多的是用来读。为了是代码的可读性更强,很多编程语言都有自己的编码规范。规范的制定是为了保持代码的一致性,以使代码更美观和易读。代码应该怎么样排版和编写并不是绝对的,所以一些地方会有争议。有时风格指南并不适用,最重要的知道何时不一致。当你无法判断该怎么做时,应该所参考下其他的例子。
本文仅是一个 Python 编码风格的参考,并不是一个规定,规定必须要这么去做。本文的目的应该是起一个指导作用,指导开发者去写更易读的代码。
号:923414804 群里有志同道合的小伙伴,
互帮互助。群里有视频学习教程和PDF,一起学习,共同进步!
加群免费获取数十套PDF资料,助力python学习
主要是缩进与空行的排版:
主要是整个源码文件的布局:
import os, sys
不推荐。from xx import xx
,尽量避免使用 from xx imoprt *
。from xx import *
时,应该在导入语句后或者模块尾使用 __all__
机制来限制导入规则。if foo: bar(foo)
.class UnfoundError(Exception): pass
.# 一行写不下时,有括号来连接多行,后续行应该使用悬挂缩进
if (this_is_one_thing
and that_is_another_thing):
do_something()
# 函数调用参数较多时,对准左括号
f = foo(a, b,
c, d)
# 不对准左括号,但加多一层缩进,以和后面内容区别
def long_function_name(
a, b, c,
d, e):
print(a, b, c, d, e)
# 列表、元组、字典以及函数调用时可以让右括号回退,这样更加美观
l = [
1, 2, 3,
4, 5, 6,
]
result = some_function(
‘a‘, ‘b‘, ‘c‘,
‘d‘, ‘e‘, ‘f‘,
)
总体原则,避免不必要的空格。
良好的风格:
spam(ham[1], {eggs: 2})
if x == 4:
print x, y; x, y = y, x
f = foo(1, 2, 3)
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
ham[lower:upper], ham[lower:upper:], ham[lower::step]
ham[lower+offset : upper+offset]
ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
ham[lower + offset : upper + offset]
x = 1
y = 2
long_variable = 3
def foo(a, b, c=0):
return moo(m=a, n=b, o=c)
不好的风格:
spam( ham[ 1 ], { eggs: 2 } )
if x == 4 :
print x , y ; x , y = y , x
f = foo (1, 2, 3)
ham[lower + offset:upper + offset]
ham[1: 9], ham[1 :9], ham[1:9 :3]
ham[lower : : upper]
ham[ : upper]
x = 1
y = 2
long_variable = 3
def foo(a, b, c = 0):
return moo(m = a, n = b, o = c)
总体原则,错误的注释不如没有注释。所以当一段代码发生变化时,第一件事就是要修改注释。注释尽量使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。如果是短语,可以省略结束符。注释应该在 #
后加一个空格才开始写注释内容。
# Description : Module config.
#
# Input : None
#
# Output : None
person = {
"name": "huoty", # 姓名
"age": 26, # 年龄
"stature": 169, # 身高
"weight": 60, # 体重
}
print person # 输出信息
TODO
注释来标记待完成的工作,团队协作中,必要的时候应该写上你的名字或者联系方式,比如:# TODO(sudohuoty@gmail.com): Use a "*" here for string repetition.
# TODO(Huoty) Change this to use relations.
# 你可能会认为你读得懂以下的代码。但是你不会懂的,相信我吧。
# 要是你尝试玩弄这段代码的话,你将会在无尽的通宵中不断地咒骂自己为什么会认为自己聪明到可以优化这段代码。
# so,现在请关闭这个文件去玩点别的吧。
# 程序员1(于2010年6月7日):在这个坑临时加入一些调料
# 程序员2(于2011年5月22日):临你个屁啊
# 程序员3(于2012年7月23日):楼上都是狗屎,鉴定完毕
# 程序员4(于2013年8月2日):fuck 楼上,三年了,这坑还在!!!
# 程序员5(于2014年8月21日):哈哈哈,这坑居然坑了这么多人,幸好我也不用填了,系统终止运行了,you‘re died
docstring
。"""Convert an API path to a filesystem path
If given, root will be prepended to the path.
root must be a filesystem path already.
"""
"""函数或方法的概述
详细的描述信息……
详细的描述信息……
参数说明
--------
参数1:...
参数2:...
返回值:
...
异常:
异常1:...
异常2:...
"""
一个参考示例:
"""Start a kernel for a session and return its kernel_id.
Parameters
----------
kernel_id : uuid
The uuid to associate the new kernel with. If this
is not None, this kernel will be persistent whenever it is
requested.
path : API path
The API path (unicode, ‘/‘ delimited) for the cwd.
Will be transformed to an OS path relative to root_dir.
kernel_name : str
The name identifying which kernel spec to launch. This is ignored if
an existing kernel is returned, but it may be checked in the future.
Return a kernel id
"""
"""这里是类的概述。
详细的描述信息……
详细的描述信息……
属性(Attributes):
-----------------
属性1: ...
属性2: ...
"""
Error
后缀的方式,比如:HTTPError。_foo
, _show_msg
来进行访问控制。__a
, 则不能用 Foo.__a
的方式访问,但可以用 Foo._Foo__a
的方式访问。`Python 属于脚本语言,代码的运行是通过解释器对代码文件进行逐行解释执行来完成的。它不像其他编程语言那样有统一的入口程序,比如 Java 有 Main 方法,C/C++ 有 main 方法。Python 的代码文件除了可以被直接执行外,还可以作为模块被其他文件导入。所有的顶级代码在模块导入时都会被执行,当希望模块被导入时,应该避免主程序被执行。这样就需要把主程序放到 if __name__ == ‘__main__‘
代码块中,比如:
def main():
...
if __name__ == ‘__main__‘:
main()
一个包除了能够被导入外,也可以通过 python -m package
的方式被直接执行,前提是包中需要有 __main__.py
,这个文件可以说是包的程序入口,包中有了这个文件就可以用 Python 的 -m
参数来直接运行。
Note: 等于比较运算符(==) 会调用左操作数的 __eq__
函数,这个函数可以被其任意定义,而 is 操作只是做 id 比较,并不会被自定义。同时也可以发现 is 函数是要快于等于运算符的,因为不用查找和运行函数。
# Yes:
if isinstance(obj, int)
# No:
if type(obj) is type(1)
# Yes:
if not seq
if seq
# No:
if len(seq)
if not len(seq)
while 1
比 while True
更快。**
比 pow
快 10 倍以上。标签:元素 enc session system 第三方 dir 描述 源码 增加
原文地址:https://www.cnblogs.com/paisenpython/p/10326237.html