第19章 趣味编程
1. 为何要有趣
感到有趣时,实现高效就容易得多。
2. 编程柔术
在编程过程中遇到麻烦时,要灵活变通。
3.原型设计:
原型指的是尝试性实现,即一个模型。它实现了程序的主要功能。
对程序的结构(如需要哪些类和函数)有一定想法后,先实现一个功能简单的版本,有了可运行的程序后,可再添加新功能。
4.配置:
1.提取常量
常量值内置的字面量值,如数、字符串和列表。
常量可直接存储在全局变量,不必重复输入。
要指出变量为常量,变量名使用大写字母,用下划线分隔单词。
2.配置文件
将配置变量放在独立的文件中,方便进行更改设置。
方法1.为配置创建一个模块。
方法2.使用标准库模块configparser,可在配置文件中使用标准格式。如:
greeting = 'Hello, world!'
或者
greeting: Hello, world!
必须使用[files]、 [colors]等标题将配置文件分成几部分。
标题名称可自定义,然后用[]括起。
例:
创建一个配置文件,名为area.ini
内容如下:
[numbers]
pi: 3.14159265335897931
[messages]
greeting: Welcome to the area calculation program!
question: Please enter the radius:
result_message: The area is
在程序中使用:
#使用配置文件中的常量,进行圆面积计算
from configparser import ConfigParser
CONFIGFILE = "area.ini"
config = ConfigParser()
config.read(CONFIGFILE)
print(config['messages'].get('greeting'))
radius = float(input(config['messages'].get('question')+ '' ))
print(config['messages'].get('result_message'), end=' ')
print(config['numbers'].getfloat('pi') * radius **2)
5.日志
日志就是收集与程序运行相关的数据的一个东西。
print语句是一种简单的日志形式。要使用它,只需在程序开头包含:
log = open('logfile.txt', 'w')
然后就可以将程序信息写入这个文件:
print('Downloading file from URL', url, file=log)
text = urllib.urlopen(url).read()
print('File successfully downloaded', file = log)更好的做法是使用标准库中的模块logging
例:
import logging
logging.basicConfig(level=logging.INFO, filename='mylog.log')
logging.info('Starting program')
logging.info('Trying to divide 1 by 0')
print(1/0)
logging.info('The division succeed')
logging.info('ending program')
将在包含程序的文件夹找到一个'mylog.log'的文件
打开后看到程序运行的信息
INFO:root:Starting program
INFO:root:Trying to divide 1 by 0
6.如果你已不胜其烦
7.如果你想深入学习
Andrew Hunt和David Thomas的著作《程序员修炼之道》。
Martin Fowler等的著作《重构》①。
四人组Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides的著作《设计模式》。
Kent Beck的著作《测试驱动开发》。
Eric S. Raymond的著作《UNIX编程艺术》②。
Thomas H. Cormen等的著作《算法导论》。
高德纳的著作《计算机程序设计艺术》(卷1~卷3)③。
Peter Van Roy和Seif Haridi的著作Concepts, Techniques, and Models of Computer Programming。