python 代码风格

指导原则

命名: 清晰易懂,代码风格要一致

函数: 函数是抽象的主要机制,最好一个函数只做一件事。便于组合 复用。

目的: 每一行代码应该有一个明确的目的,减少冗余的代码。

简洁: 代码应该是简洁明了的。

变量命名

Good

goal, score, opp_score = 1 00, 0, 0
greeting = ' hello world'
is_even = lambda x: x % 2

Bad

a, b, m = 1 00, 0, 0
thing = ' hello world'
stuff = lambda x: x % 2

注意字母和数字

当很明确一个字母是做什么的时候,使用缩写的可以的。

Good

i = 0 # a counter for a loop
x, y = 0, 0 # x and y coordinates
p, q = 5, 1 7 # mathematical names in the context of the question
一般来说 i , j , k是循环中最常用的。

Bad

o = O + 4 # letter ' O' or number 0?
l = l + 5 # letter ' l' or number 1 ?
用 o 和 l 很容易使 o 和 0 ,l 和1搞混

不必要的变量

Good

return answer(argument)

Bad

result = answer(argument)
return result

如果是表达式太长,或者返回的这个结果不是清晰明了的应该
创建一个变量。

Good

divisible_49 = lambda x: x % 49 == 0
score = (total + 1 ) // 7
do_something(divisible_49, score)

Bad

do_something(lambda x: x % 49 == 0, (total + 1 ) // 7)

命名约定

Good
total_score = 0
final_score = 1

def mean_strategy(score, opp):

class ExampleClass:

Bad
TotalScore = 0
finalScore = 1

def Mean_Strategy(score, opp):

class example_class:
    
# python 中一般变量和函数名使用下划线,类名使用驼峰

使用空格代替tab,一般使用四个空格键。保存一行代码不要过长,
大概在 70 个字符作用就好。

操作符之间的间隔

Good

x = a + b*c*(a**2) / c - 4
tup = (x, x/2, x/3, x/4)

Bad

x=a+b*c*(a**2)/c-4
tup = (x, x/2, x/3, x/4)

Good

def func(a, b, c, d, e, f,
        g, h, i):
    # body
    
tup = (1 , 2, 3, 4, 5,
        6, 7, 8)
        
names = (' alice' ,
        ' bob' ,
        ' eve' )

控制语句

Bad

if pred == True: # bad!
. . .
if pred == False: # bad!

Good

if pred: # good!
. . .
if not pred: # good!

python 中的 [] , () , {} , set() 都可以使用bool判断

if lst: # if lst is not empty
. . .
if not tup: # if tup is empty

这里要注意的一点是如果要将一个元素默认为一个list,

这种做法会使得每次调用都增加一个元素在x中。

def demo(x=[]):
    pass

正确的做法是
    
def demo(x=None):
    if x is None:
        x = []

这里也不可以使用 not x,因为可能传入的是一个空字符,
这种程序就会报错。

多余的if else

Bad

if pred: # bad!
    return True
else:
    return False
    
if num ! = 49:
    total += example(4, 5, True)
else:
    total += example(4, 5, False)
    
if pred: # bad!
    print(' stuff' )
    x += 1
    return x
else:
    x += 1
    return x

Good

return pred

total += example(4, 5, num!=49)

if pred: # good!
    print(' stuff' )
x += 1
return x

Good

把注释写到doc中,使用help函数可以看到

def average(fn, samples):
    " " " Calls a 0-argument function SAMPLES times, and takes
    the average of the outcome.
    " " "

不必要的注释

Bad

def example(y):
    x += 1 # increments x by 1
    return square(x) # returns the square of x

重复,使用一个变量保存。

Bad
if a + b - 3 * h / 2 % 47 == 4:
total += a + b - 3 * h / 2 % 47
return total

Good

turn_score = a + b - 3 * h / 2 % 47
if turn_score == 4:
    total += turn_score
    return total

合理使用 生成式

Good

ex = [x*x for x in range(1 0)]
L = [pair[0] + pair[1 ]
    for pair in pairs
    if len(pair) == 2]

Bad

L = [x + y + z for x in nums if x > 1 0 for y in nums2 for z in nums3 if y > z]

博客 https://www.97up.cn/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • 更新时间:2016/5/13 介绍 本文档所提供的编码规范,适用于主要的Python发行版中组成标准库的Pytho...
    超net阅读 5,805评论 0 15
  • 通常代码不单单是写给自己看的。 当代码出现bug而你又想不通哪有问题时,就需要把代码贴到论坛或请身边的人审阅。 或...
    学习之术阅读 815评论 0 2
  • 一python代码规范 Python代码风格规约:一个至关重要的建议是每级缩进使用4个空格,不要使用tab,因为t...
    一曲广陵散阅读 1,715评论 0 1
  • 参考自 《Google Python Style Guide》 和 Python最佳实践 -- 董伟明 。 ...
    蒋狗阅读 508评论 0 1
  • 开场白: 大家好,我是G159期2组的丁玉枝,来自浙江丽水。我的三个标签:工程师,易效能时间管理践行者,6岁孩子的...
    微澜_12ca阅读 205评论 0 0