版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
hoxide初译dreamingk校对发布xyb重新排版ZoomQuietMoinMoin美化用Python:epes:PEP008《StyleGuideforPythonCode容.在有 的地方,Guide的风格规则应该是符合本PEP的意图(译注:就是当有 Guido风格为准)这篇PEP也许仍然尚未完成(实际上,它可能 愚蠢得使用一致性是无知的妖怪(AFoolishConsistencyistheHobgoblinofLittle呆板的坚持一致性是傻的没边了--
1.3.1.3.(8-spacetabs).EmacsPython-mode自动发现文件中主要的缩进层次,依此设定缩进参数.1.3.2.1.3.2.制表符还是空格?(Tabsor不要混用制表符和空格最流行的Python缩进方式是仅使用空格其次是仅使用制表符.混合着制表符和空格缩进的代码将被转换成仅使用空格在Emacs中,选中整个缓冲区,按ESC-x去除制表符(untabify调用python命令行解释器时使用-t选项,可对代码中不合法得混合制表符和空格发出警告(warnings).使用-tt时警告(warnings)将变成错误(errors).这些选项是被高度推荐的. umLine(wrap)方式看起来有点.因此,请将所有行限制在最大79字符(Emacs准确得将行限制为长80字符),对顺序排放的大块文本(文对额外的圆括号,但是有时使用反斜杠看起来更好.确认恰当得缩进了延续的行.Emacs的Python-mode正确得完成了这些.一些例子:TogglelineTogglelineclassdefinit(self,width,color='black',emphasis=None,highlight=0):ifwidth==0andheight==0and\color=='red'andemphasis=='strong'or\highlight>100:raiseValueError,"sorry,youifwidth==0andheight==0and(color=='red'emphasisisraiseValueError,"Idon'tthinkso"Blob.init(self,width,height,color,emphasis,(Blank群(groupsofrelatedfunctions在一组相关的单句中间可以省略空行.(例如.一组哑元(asetofdummyimplementations)).在函数中使用空行时,请谨慎的用于表示一个逻辑段落(indicatelogicalsections).1.3.5.1.3.5.Python发布中的代码必须始终使用ASCII或Latin-1编码(又名ISO-8859-1).使用ASCII的文件不必有译码(coding).PythonPython2.4Unicode了!不论什么情况使用UTF-81.4.1.4.No:No:importsys,osYes:importsysimportfromfromtypesimportStringType,fromfromMyClassimportfromfoo.bar.YourClassimportimportimportimportimport1.5.1.5.(WhitespaceinExpressionsandStatements)"spam(ham[1],{eggs:2})".Alwayswritethisas"spam(ham[1],{eggs:紧挨着圆括号,方括号和花括号的,如:"spam(ham[1eggs:2要始终将它写成"spam(ham[1],{eggs:"ifx==4:printx,y;x,y=y,x".Alwayswritethisas"ifx==4:printx,y;x,y=y,"ifx4printxyxyyx".要始终将它写"ifx4:printx,y;x,yy,紧贴着函数调用的参数列表前开式括号(openparenthesis的,如"spam(1)".要始终将它写成"spam(1)".slicing,asin:"dict['key']list[index]".Alwayswritethisas"dict['key']"dict['key']list[index]".要始终将它写成"dict['key']TogglelineToggleline1x=12y=23=3TogglelineTogglelinex=y=long_variable= TogglelineTogglelinei=submitted=submitted+1x=x*2-1hypot2=x*x+c=(a+b)*(a-c=(a+b)*(a-TogglelineTogglelinedefcomplex(real,returnmagic(r=real,No:No:iffoo=='blah':do_blah_thing()Yes:iffoo=='blah':No:do_one();do_two();do_three()Yes:do_one()1.6.1.6.注释应该是完整的句子.如果注释是一个短语或句子,首字母应该大写,除非他是一个以小写字母开头的标识符(不要修改标识符 -- 1.6.1.1.6.1.(Block注释块通常应用于跟随着一些(或者全部)代码并和这些代码有着相同的缩进层次.注释块中每行以'#'和一个空格开始(除非他是注释1.6.2.1.6.2.xx= #Increment.xx= #Incrementx= #Compensateforxx= #Compensatefor1.7. ationConventionsforwritinggoodationstrings(a.k.a."docstrings")areimmortalizedinepes:PEPationationStrings文档化字符--"""Return"""ReturnaOptionalplotzsaystofrobnicatethebizbazfirst.实际上实际上Python自个儿就使用文档化编码 >>>import>>>['doc','file','name','accept2dyear','altzone','asctime','clock','ctime','daylight','gmtime','localtime','mktime','sleep','strftime','strptime','struct_time','time','timezone','tzname','tzset']>>>Helponbuilt-infunctiontimeinmoduletime()->floatingpointReturnthecurrenttimeinsecondssincetheFractionsofasecondmaybepresentifthesystemclockprovides1.8.1.8.TogglelineTogglelineversion="$Revision:1.4#$Source:E:/cvsroot/python_doc/pep8.txt,v #文件:$id$版本:文件:$Idussp.py,v1.222004/07/2104:47:41hdExp版本:$Revision $1.9.1.9. .的,1.9.1.1.9.1.以下名风格是众所周知的:b(单个小写字母)B(单个大写字母)大写串如:GETNAME这有时也被当作StudlyCaps.如:GetNameCapitalized_Words_With_Underscores(带下划线的首字母大写串)(!)还有一种使用特别前缀的风格,用于将相关的名字分成组.这在Python中不常用,但是出于完整性要提一下.例如,os.stat()函数返回一个tuple,他的元素传统上有象st_mode,st_size,st_mtime等等这样的名字X11库的所有公开函数以X开头.(在Python中,这个风格通常认为是不必要的,因为属性和方法名以对象作前缀,而函数名以模块名作前缀.)(例如,"fromMimport*"不会导入以下划线开头的对象)."Tkinter.Toplevel(master,class_='ClassName')".double_leading_underscore(双下划线):从Python1.4起为类私有名double_leading_and_trailing_underscore:特殊的(magic)对象或属性,存在于用户控制的(user-controlled)名字空间,例如init,import或file.有时它们被用户定义,用于触发某个特殊行为(magicbehavior)(例如:运算符重载);有时被构造器如.bobo_magic_attr.1.9.2.1.1.9.2.1.应避免的名字(Namesto不要用字符`l'(小写字母el(就是读音,下同)),O大写字母oh),或I'(大写字母eye)作为单字符的变量名.在某些字体中,这些字符不1.9.2.2.1.9.2.2.模块名当代码传到Mac或Windows上就可能是个问题了.(Class(Exception常用"Error"(例如:xdrlib.Error).趋势似乎是倾向使用CapWords异常名.(MethodNamesandInstance使用一个前导下划线仅用于不打算作为类的公共接口的内部方法和实例变量Python不强制要求这样使用两个前导下划线以表示类私有的名字.Python将这些名字和类名连接在一起:如果类Foo有一个属性名为 a,它不能以Foo. 问.(执著的用户(Aninsistentuser)还是可以通过 a得到权.)通常,双前导下划线应该只用来避免与类(为可以子类化所1.9.2.8.继承的设计1.9.2.8.继承的设计始终要确定一个类中的方法和实例变量是否要被公开.通常,不要将数据变量公开,除非你实现的本质上只是记录.人们总是更喜欢给类提供一个函数的接口作为替换(Python2.2的一些开发者在这点上做得非常漂亮).1.10.1.10.设计 同象None之类的单值进行比较,应该用:'is'或'isnot'来做.当你本意是"ifxisnotNone"时,对写成"ifx"要--例如当你测试一个默认为None的变量或参数是否被设置为其它值时.这个其它值可能是一个在布尔上下文中为值!基于类的异常总是好过基于字符串的异常模块和包应该定义它们自己的域内特定的基异常类(baseexceptionclass基类应该是内建的Exception类的子类.还始终包含一个类的文档字符串.例如:TogglelineTogglelineclass"""BaseclassforerrorsinNo:No:iffoo[:3]==Yes:Yes:ifNo:No:iftype(obj)istype(1):Yes:ifisinstance(obj,!,TogglelineTogglelineifisinstance(obj,TogglelineTogglelinefromtypesim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年供应链管理合同内容
- 接受社会捐赠协议模板(B类:非定向捐赠类)
- 暨南大学《法语口译理论与实践II》2021-2022学年第一学期期末试卷
- 济宁学院《金融工程学》2021-2022学年第一学期期末试卷
- 汽车改装技术 课件 5.1汽车顶篷老化翻新
- 二零二四年艺术品买卖合同(作品描述)
- 二零二四年度城市轨道交通建设及运营合同
- 科学计算语言Julia及MWORKS实践 课件 1-科学计算与系统建模仿真应用场景
- 针灸治疗项痹病
- 翻译三级笔译实务模拟47
- 植物繁殖委托合同
- 《地方执法评估体系研究》
- 9《正确认识广告》第一课时 说课稿-2023-2024学年道德与法治四年级上册统编版
- 《市场营销学》讲稿
- 小学科学教育工作制度(4篇)
- 4.2整式的加减(第1课时)课件七年级数学上册(人教版2024)
- 电网络理论专题知识
- 2024年专用:滑坡防治抗滑桩施工合同
- 电子化学品的市场分析
- 2024年客运资格证科目二考试
- MOOC 英文技术写作-东南大学 中国大学慕课答案
评论
0/150
提交评论