多年来,我写的Python越多,我发现自己同意大多数的指导方针,尽pipe我一直故意为了自己的原因打破一些方针。 我很想知道在PEP 8(或其他PEPs也许)人们宗教坚持和为什么,什么人发现不方便或不足。 在我的情况(一般工作),只有一些我们偏离的东西: 下划线的小写字母名称,我可以看到它的点,因为它会一直保持一致,但我们倾向于使用lowerCamelCase,即使偶尔会引入一些不一致(例如部分或大写字母缩写以及后面的单词往往下到刺激的时刻)。 主要是因为我们经常使用的接近全部的API使用camelCase(一些较高,一些较低),并且由于某种原因,我发现它更易于阅读,并倾向于将下划线预留为分离令牌或规定的混乱/模糊。 我仍然无法把自己的东西放在PEP规定的对象内部。 new和init我倾向于在类没有空行的时候留下正确的位置,因为我总是希望在类中读取类名和参数,这些参数在类中的作用范围相同(比如init,get和set相同的attrib或一组attribs)我只有单个空间分开,我喜欢三个类之间的空间,两个方法之间我不会精神聚合在该对象的地图。 这纯粹是为了代码的视觉效果和可读性。 我发现stream程控制内的非常紧凑的内容以及方法和对象之间的这种间隔一直引导我的眼睛正好在代码停放几个月后我想要重新阅读的地方。 它也很好地折叠我的编辑select。 有些东西,而不是我坚持,这让我疯了,当我读否则书面,是制表符而不是空格(尤其是当我们使用的一些应用内编辑器没有真正的标签replacefunction,大大造成了代码库中的污染原型阶段)。 事物的顺序,如import,什么import,全局等等。当这些文件被混淆或乱序的时候,这些文件会导致大量的import文件。 空格中的空格,特别是当用户使用标签时,并尝试在var名称中跨越不同长度的行alignment赋值操作(并且似乎没有办法说服那些执行该操作的人看起来不错的代码不整齐) 。 控制块内的间距,特别是当我在同一个stream量控制块内看到明显的随机间隔时,以及对象内用于方法的类似数量的间距。 我甚至在开始阅读这个该死的东西之前,我不得不编辑这些东西。 所以,那些是我的,也是我“违反”PEP背后的理由(有些是共同的,有些被同事所诟病的)。 我会很好奇读什么其他Pythonistas做和不做在这些方面。
我试过了 #:PEP8 -E223 要么 # pep8: disable=E223 我以为第二个会工作,但似乎不工作。 你有一个想法,我怎么能处理这个?
虽然编码python,我只使用2个空格缩进,确实PEP-8真的build议有4个空格,但历史上对我来说是不寻常的。 那么,谁能说服我使用4个空格而不是2个? 有什么优点和缺点? PS最后,将所有现有代码库从2个空间转换为4个空间的简单方法是什么? PPS PEP-8另外build议不要使用标签进行缩进。 在这里阅读 所以,总结一下: 优点: 长度超过80根线时,要有更多的空间排列。 可以从代码片段复制代码,它只是工作。 缺点: 嵌套语句的层次更深,实际代码的空间更less。 谢谢。
在块注释中,我想引用长度超过80个字符的URL。 什么是显示此url的首选惯例? 我知道bit.ly是一个选项,但URL本身是描述性的。 缩短它,然后有一个嵌套评论描述缩短的URL似乎是一个糟糕的解决scheme。
我写了一些Python,其中一些行超过80个字符的长度,这是一个门槛,我需要留下。 我怎样才能调整我的代码来减less行长?
为什么PEP 8build议在关键字参数或默认参数值中不要有空格= ? 这与推荐在Python代码中每个其他出现的位置是否不一致? 怎么: func(1, 2, very_long_variable_name=another_very_long_variable_name) 比: func(1, 2, very_long_variable_name = another_very_long_variable_name) 任何链接到Python的BDFL讨论/解释将不胜感激。 记住,这个问题更多的是关于kwargs的缺省值,我刚刚使用了PEP 8的语句。 我不是在征求意见。 我在问这个决定背后的原因。 这更像是问我为什么要在C程序中使用{在同一行上,而不是我是否应该使用它。
从阅读PEP-8,我知道你应该把右括号放在函数调用的最后一个参数的同一行: ShortName.objects.distinct().filter( product__photo__stockitem__isnull=False) 或许,长时间的表情最好是完全避免。 但是,如果这是不可取的, 你将如何去多个链式方法调用? 是否应该closures一个新的线? ShortName.objects.distinct().filter( product__photo__stockitem__isnull=False ).values_list('value', flat=True) 那么没有参数的方法呢? 如何在不用引用中间返回值的情况下将它们写入多行? ShortName.objects.distinct( ).filter().values() # looks ugly 更新 :有一个重复的问题, 如何打破Python中的链式方法的一行? 。 接受的答案表明从jQuery风格开始,每个新行都带有一个点。 作者没有提供任何理由或权威的参考,所以我想获得这种风格或其他select的确认。
我已经读了有三种方式编码python多行import 随着斜线: from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, \ LEFT, DISABLED, NORMAL, RIDGE, END 重复的句子: from Tkinter import Tk, Frame, Button, Entry, Canvas, Text from Tkinter import LEFT, DISABLED, NORMAL, RIDGE, END 括号内: from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text, LEFT, DISABLED, NORMAL, RIDGE, END) 是否有一个推荐的格式或更优雅的方式,这种说法?
PEP8build议: import应按以下顺序进行分组: 标准库导入 有关的第三方import 本地应用程序/库特定的导入 您应该在每组导入之间留出一个空行。 有没有办法使用静态代码分析工具,如pylint , pyflakes , pychecker , pep8来检查标准是否违反了包中的任何地方? 违规举例: from my_package import my_module from django.db import models import os 正确的导入方式: import os from django.db import models from my_package import my_module
我知道有些工具可以validation你的Python代码是否符合PEP8,例如有一个在线服务和一个python模块 。 但是,我找不到可以将我的Python文件转换为自包含的PEP8有效Python文件的服务或模块。 有谁知道有没有? 我认为这是可行的,因为PEP8是关于代码的外观,对吧?