NOTE:本文翻译自俄勒冈大学计算机科学课程讲义,翻译者赤石俊哉,本文不允许转载。翻译时完全不遵照原文……其实只是挑重点翻译了一下做了个总结。

P.S. 我不是俄勒冈大学的……

谁在乎写作风格呢?

可能写作风格听起来好像没什么大不了的嘛,口胡,我们说的“写作风格”啊,既然是“风格”的话,就是一堆为了使我们的程序容易被人家阅读和理解以及修改的一些笔记。

首先呢,一个程序是需要不断地修改的,你可能用一个程序解决了一个问题,下次遇到相似的问题的时候,重复造轮子是不必要的,你完全可以从上次的程序上修改一下达到目的。再造一个轮子你又是何苦呢。而事实上,你写的程序可能要被别人拿去重用,或者说你需要重用别人写的程序,然而阅读别人的代码并且决定需要修改什么是很费时间的。

那么知道了写作风格的重要性,我们再来说说当我们写程序的时候都需要注意哪些写作风格呢?

头部注释

记住,在每一个程序的开头,你都需要写一个基本的头部注释,可以像这样:

'''

Make me coffee. Assignment 12, CIS 210

Authors: Alfred J. Neumann and Maria K. Norton

Credits: Consulted with Electra Onn regarding bluetooth protocols (but wrote access protocols independently).

Wifi protocol code based on Smith & Jones, "Over the air protocol engineering", pp 23-25.

Uses public wifi networks to locate and commandeer coffee machines.

Optional features implemented: Decaf mode also works over bluetooth networks.

'''

这些表示表示主题和作者(前两行),以及最后两行简短的说明应该每次都写出来,中间的鸣谢,则可以在你使用了参考代码(不管是网上的还是书上的)的时候写出来。当然你要是有询问过其他同学或者是老师以及其他教员等,也要写出来哦。

重要:如果你使用了任何外部来源的代码,或者与其他学生一起合作,却在头部注释里面没有适当的致谢,这可以被认为是抄袭。

命名约定:有意义的名字

对于任何人来说所有咱起的名字都得是有意义的,不管谁读了程序,作者也好,其他人也好,都得能知道这个名字是表达了一个什么内容。

就好比你看到i这个字母的时候,你就会想到他应该是一个数组或者是集合的索引变量,又或者是循环体里面的迭代变量。

使用i和j来表示嵌套循环的话可能会就容易混淆他们两个,用x和y的话更容易区分,但是如果是像遍历一个矩阵这样的行列的情况的话,你完全是可以用row和col来表示行列的。这样反而更明确。

命名约定:大小写和标点

对于标准的Python约定来说,一般是这样的:

local_variable

大部分局部变量名称使用小写,每个词之间使用_来分割。像一些长的变量名,比如rectangle_width,你也可以机智的简写成rect_wid或者rectwid等。

global_variable

在Python里面呀,全局变量和局部变量使用一样的样式。要是这个文章的原作者,他说要是他来写这个规范的话,他会改掉,变成不一样的。我觉得一样的就挺好的啊→_→。

SYMBOLIC_CONSTANT

当全局变量用来表示一个常量的时候(常量就是在你申明的时候就给他付一个值,以后都不会改变了的量),则使用全大写字幕,每个词之间使用一个_来分割。

ClassName

Python使用驼峰法来表示类名,译者补,什么叫驼峰法捏,驼峰法,就是像骆驼的驼峰一样,每个单词之间没有分隔,而且每个单词第一个字母大写,就像骆驼的驼峰一样了~

也许我们会在看别人的程序的时候看到别人的不同的写法,但是请记住,保持好自己的写作风格。

文档注释

文档注释是对Python方法的说明,而且可以整合到Python编程环境里面,比如通过帮助功能。文档注释需要的格式有啥呢?

类型契约: 每个参数的类型和返回的类型。

方法描述: 对每个参数进行说明,如果有的话,还要对意外情况和返回值进行说明。

方法使用的样例。

比如:

def show_docstring(name) :

'''(str) -> None Simple hello, world-style function prints hello, name; None value is returned. >>> show_docstring('CIS 210') Hello, CIS 210. >>> show_docstring('World') Hello, World. '''

print('Hello,', name+'.')

return None

对于CIS 2101的方法来说都必须有一个返回说明,哪怕他返回的是None。

写文档注释的时候,需要注意一下几点:

* 一个方法只能返回一种类型的值,就想如果是“当XX情况下返回true”,那么肯定就是“其他情况下返回false”。

* 方法的功能必须完整地在文档中写明确,说白了,如果文档注释中没有说会改变某个参数,那么就改变他。

* 方法必须返回一个值或者是做什么用,两者至少得有一样。

def maximum(li):

'''(list of ints) -> int Find and return the maximum integer in li. >>> maximum(1, 2, 3, 4) 4 >>> maximum(99, 101, 42) 101 '''

sort(li)

return li[-1]

上面的程序实际上是修改了传入参数li的,程序中改变了参数li但是文档注释没有说明,此类情况应该避免。意外的情况要一五一十的说出来。

其他有用的注释

x = x + s # Adjust for border

在适当的地方加上一些简短的说明文字可以有效地加强代码的可读性。这些注释需要用国际化的英语来书写。所谓的国际化的英语,不是地道的美式英语,也不是阿三咖喱味英语,更不是不列颠口味的英语,更不是开口脆的Chinglish,ジャパンリーシュ就更不是了~!

缩进

记住,每一个级别的缩进都需要使用四个空格(也可以是一个Tab键,其实我更推荐使用一个Tab,毕竟通用……,而且更利于排版)2然后就是千万不要混淆了空格和Tab~千万不要混淆了空格和Tab~千万不要混淆了空格和Tab~!!!!重要的事情要说三遍~!!!!

空格

适当的使用空格来隔开运算符、运算数、符号等等有利于增加代码的可读性。比如:

x=x+1 #Not Recommand

x = x + 1 #Recommand

if(a>6) #Not Recommand

if (a > 6): #Recommand

CIS 210 就是这个课程的名称,请不要太在意……不过返回为空的时候,也说明的确是一个好习惯。 ↩

这里阐述一下我和原作者不同的意见,原作者表述的是不要使用Tab。。 ↩

python对写作有什么帮助_[俄勒冈大学]养成Python写作习惯相关推荐

  1. python语言能够跨平台使用吗_中国大学MOOC: Python语言能够跨平台使用。

    中国大学MOOC: Python语言能够跨平台使用. 答:对 自我评价是自我意识的主要组成部分,在人的个性发展中发挥着重要作用.其特点有() 答:A.自我评价的自觉性提高 B.自我评价的主动性提高 C ...

  2. python在建筑施工方面的应用_有哪些关于 Python 在建筑中的应用和教程?

    2018.02.09更新 (發現距離上一次更新馬上就要兩年了--) 嗯,兩年間發生了很多事.我也莫名其妙跑到ETH來了. 做起了Fab的優化,python已經完全不能滿足效率和複雜度的要求,走上了C+ ...

  3. 利用python爬取知乎评论_一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: 1 # -*- c ...

  4. python语言程序设计基础上海交通大学_北京交通大学:Python语言程序设计

    『课程目录』:$ y0 q8 G3 Q" Z% p6 K│ ├─第一章概述, c) e/ m) X# s- B, r│ │ 1.1.1第1课时计算机起源 – 计算机发展史中三位里程碑人物,快 ...

  5. python能做出什么样的网站_我能用Python做什么?

    如果你想学Python,或者你刚开始学习Python,那么你可能会问:"我能用Python做什么?" 这个问题不好回答,因为Python有很多用途. 但是随着时间,我发现有Pyth ...

  6. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  7. python虚拟环境的安装和配置_基于virtualenv的Python虚拟环境的安装配置(Mac环境)...

    一.安装前提 明确自己的开发所需的python版本, Python 2.7.x 或者Python 3.6.x . 安装 Python 2.7.x 或Python 3.6.x 版的virtualenv. ...

  8. 编写python程序一年365天_编写第一个Python程序

    无论读者使用的是哪种操作系统,相信都已经安装好了 Python 环境,可以通过命令行窗口或者 Python 自带的 IDLE 成功启动交互式解释器(如图所示). 本节将带领读者正式编写第一个 Pyth ...

  9. python结合c语言能干啥_第9p,Python是什么?学了Python能干什么?

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第9篇文章,第二阶段的课程:Python基础知识之Python语言介绍 学习本课程,建议先学习:[计算机基础知识]课程 一.Pyth ...

  10. python以运行效率高著称吗_几个提升Python运行效率的方法之间的对比

    在我看来,python社区分为了三个流派,分别是python 2.x组织,3.x组织和PyPy组织.这个分类基本上可以归根于类库的兼容性和速度.这篇文章将聚焦于一些通用代码的优化技巧以及编译成C后性能 ...

最新文章

  1. 包括 一个 20像素的黑条条
  2. oracle去重等基础问题
  3. Linux系统时间函数
  4. AS 中 Plugin for Gradle 和 Gradle 之间的版本对应关系
  5. 关于移动端滚动穿透问题的解决
  6. git托管怎么使用_使用Git构建和托管网站
  7. django 1.8 官方文档翻译: 2-4-4 编写迁移
  8. 异常mongodb:Invalid BSON field name XXXXXX:YYYYY.zz
  9. 解决从登录页通过this.$router.push跳转首页后 点返回健路由变而页面不变的问题
  10. bzoj 1133: [POI2009]Kon(DP)
  11. java pdf分页显示,java读取pdf(可分页读取)
  12. 路径 @/ ~/ / ./ ../
  13. Google提供的超强圆角效果
  14. 分享一个简单唯美的404页
  15. 计算机的声卡怎么安装教程,图文详解如何安装声卡驱动_给电脑安装声卡驱动的详细教程...
  16. phalapi做登录检测_欢迎使用PhalApi!
  17. 协议大全 http协议 http://www.chinaitpower.com/Net/xieyi/HTTP/index.html
  18. Selenium操作cookie绕过验证码登陆实战
  19. Word排版计算机类科研论文的格式保证
  20. python向自己qq邮件发信息_python实现自动向QQ邮箱发送天气预报邮件

热门文章

  1. 大会回顾丨游戏用户体验优化如何实践,看大咖怎么说(附PPT下载)
  2. 双注入法/开路短路法
  3. Delphi下实现全屏快速找图找色 四、BitmapData.pas的使用
  4. 项目上线质量如何评估
  5. 为什么用CDN给你网站加速?
  6. 微信公众号与小程序对接文档
  7. 浪潮服务器管理口IPMI安装系统(浪潮服务器NF5280m5 配置,raid和系统 安装纪录)
  8. 又是一年深秋时--西湖枫叶随拍
  9. mysql 初始化my.cnf_my.cnf初始化配置
  10. TensorFlow 之 slim(TF-Slim)介绍