一般性的Python编程指导原则
本文将极限编程做简单介绍,并总结为好玩的编程
程序的灵活性主要表现在:原型设计、配置、自动化测试。

原型设计

原型:实现最终程序主要功能的大概模型。原型设计过程会拼凑出一个能解决问题的程序,以便了解所需要的组件优秀解决方案的需求
对代码重写说不:常见问题:第二系统综合症、持续重写综合症、代码疲劳,避免这些问题核心思想是:如果认为原型程序能完善为可以工作的系统,那不管如何都要坚持下去,而不是推导重来。

配置

一种在程序中引入抽象的更简单的方法:从代码中提取符号化常量

提取常量

前面说的常量指的是内建的字面量,例如数字、字符串和列表,编程时应该将它们放置在全局变量中,为了避免因改变全局变量造成的麻烦,在使用时把它们当做常量(符号化常量)就可以了,为了标识符号化常量,可以特殊命名为名字只用大写字母,用下划线分割单词。
所写得常量出现次数多于一次就应该考虑将它放入全局变量。

配置文件

如果PI在模块文件config.py中设定可以这样做:

from config import PI

这样,用户和程序员都可通过改变配置文件来改变程序配置。
更好的方法是使用标准库模块ConfigParser,它使用了一种相对合理的标准配置文件格式,可以接受Python的标准赋值语法:

greeting = 'hello world'

另外一种配置格式:

greeting: Hello, world

需要使用[files]或[colors]这样的数据头将配置文件划分为几个区段。有关ConfigParser模块的更多信息,可以查阅库文档(http://python/doc/lib/module-ConfigParser.html)
下面是一个例子:
配置文件:

[numbers]
pi: 3.1415926535897931
[messages]
greeting: Welcom to the area calculation program!
question: Please enter the radius.
result_message: The area is

ConfigParser程序:config_test.py

from ConfigParser import ConfigParser
CONFIGFILE = "python.txt"
config = ConfigParser()
config.read(CONFIGFILE)
print config.get('messages', 'greeting')
radius = input(config.get('messages', 'question') + ' ')
print config.get('messages', 'result_message')
print config.getfloat('numbers', 'pi') * radius**2

执行结果:

result
配置级别
配置或控制信息的三个来源:

  • 配置文件
  • 环境变量
  • 在命令行传递到程序的选项开关和参数:命令行参数可直接使用sys.argv;如何需要处理开关,可用aptparse(或getopt)模块

日志记录

print是简单的日志记录形式,例子如下:

import urllib
url = 'http://ent.ifeng/a/20190102/43161234_0.shtml'
log = open('logfile.txt', 'w')
print log, ('Downloading file from URL %s' % url)
text = urllib.urlopen(url).read()
print text
print >> log, 'File successfully downloaded'

如果程序在下载过程中崩溃了,这种方法就不行了,假如为每个log语句都进行文件打开和关闭操作的话会更安装(或者在写入文件后刷新)
下一个例子:logging程序

import logging
logging.basicConfig(level = logging.INFO, filename = 'mylog.log')
logging.info('Starting program')
logging.info('Tryin to divide 1 by 0')
print 1 / 0
logging.info('The division succeeded')
logging.info('Ending program')

执行结果:

result
mylog.txt内容:
mylog.txt
logging模块

书籍推荐

  • Andrew Hunt和David Thomas:《程序员修炼之道》
  • Martin Fowler:《重构》
  • Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides:《设计模式》
  • Kent Beck:《测试驱动开发》
  • Eric S. Raymond:《UNIX编程艺术》
  • Thomas H. Cormen:《算法导论,第二版》
  • Donald Knuth:《计算机程序设计艺术》

更多推荐

Python学习笔记_第19章:好玩的编程