第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')
('Starting program')
('Trying to divide 1 by 0')
print(1/0)
('The division succeed')
('ending program')
将在包含程序的文件夹找到一个'mylog.log'的文件
打开后看到程序运行的信息
INFO:root:Starting program
INFO:root:Trying to divide 1 by 0