编程的乐趣

编程柔术

当你坐下来,打算如何组织计划要定时,具体程序,然而,无论什么经验。在实现时间的函数的,你会逐渐学会了原来的设计,实用的新知识。我们不应该忽视沿途汲取的教训,相反,它们用于其他设计软件(或重建)在。

灵活性的实现包含很多方面。以下是当中两个:

原型设计:python最优秀的功能之中的一个就是能够高速地编敲代码。

编写原型程序是更充分地了解问题的一种非常好的方法。

配置:灵活性有非常多种存在形式。配置的目的就是让程序某部分的改变更简单,对于你和用户来说都是这样。

第三点是自己主动化測试。假设希望轻松改变程序的话,那么自己主动化測试绝对是不可缺少的。使用原地測试,就能保证你的程序在进行改动后还能工作。

原型设计

在将一些思想融入到程序的结构中后,建议实现一个简单的版本号,这个版本号的功能可能很有限。

还能在不论什么程序设计语言中使用原型设计,但python的强大之处就在于编写一个模型仅仅须要非常少的投入。而不用大动干戈。

配置

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

提取常量

为了标识变量是作为符号化常量对待的。能够用特殊的命名规则——名字之用大写字母。而且用下划线分隔每一个单词。

配置文件

为自己使用方便提取常量是一码事,还要考虑有些常量是要公开给用户的。

这里不是将这些配置变量放在模块的开头,而是将它们放在单独的文件里。实现这个功能的最简单方法就是为配置创建单独的模块。

使用配置文件具有两面性:一方面,配置功能非常实用,但对整个项目使用集中、共享的变量库会让项目的模块性下降、总体性上升。一定要确保没有破坏抽象(比方封装)规则。

第二种方法是使用标准库模块ConfigParser,它的作用是对配置文件使用适当的标准格式。它接受标准的python赋值语法:

greeting = ‘hello,world!’

第二种在非常多程序中使用的配置格式例如以下:

greeting: hello,world!

须要使用[files]或者[colors]这种数据头将配置文件划分为几个区段。

名称能够任意设定。但须要将它们用方括号括起来。

日志记录

日志记录在大幅度更改程序内核时候非常实用,它能够帮助找到问题和错误所在。

日志记录基本上就是收集与程序执行有关的数据,这样能够在随后进行检查(或累计数据)。

print语句算是一种简单的日志记录形式。

仅仅要在程序开头放上以下这条语句:

log=open(‘log.txt’,’w’)

随后就能够将不论什么感兴趣的程序状态信息像以下这样放在文件里:

print >> log, (‘Downloading file from URL %s’ % url)

text=urllib.urlopen(url).read()

print >> log, ‘File successfully downloaded’

能够使用标准库中的logging模块,logging是个高级模块。值得学习。

假设还想学

推荐阅读:

《程序猿修炼之道》

《重构》

《设计模式》

《測试驱动开发》

《UNIX编程艺术》

《算法导论》

《计算机程序设计艺术》卷1-卷3

《Concepts, Techniques, and Models of Computer Programming》

就算不读完每本书的每一个,也容易Fanfankan。这种洞察力可以在开发过程中培养。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

python基础课程_学习笔记26:编程的乐趣的更多相关文章

  1. python基础课程_学习笔记15:标准库:有些收藏夹——fileinput

    标准库:有些收藏夹 fileinput 重要功能 性能 叙述性说明 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 ...

  2. python基础课程_学习笔记13:标准库:有些收藏夹——sys

    标准库:有些收藏夹 sys sys这个模块可以让你访问和python解释器联系紧密的变量和函数. sys模块中一些重要的函数和变量 函数/变量 描写叙述 argv 命令行參数,包含脚本名称 exit( ...

  3. python基础课程_学习笔记21:文件和材料

    文件和材料 打开文件 open功能是用来打开文件,语法例如,下面的: open([name[,mode[,buffering]]) open函数使用一个文件名称作为唯一的强制參数,然后返回一个文件对象 ...

  4. python基础课程_学习笔记20:标准库:有些收藏夹——os

    标准库:有些收藏夹 os os模块为您提供访问多个操作系统服务特征. os和它的子模块os.path还包含一些用于检查.构造.删除文件夹和文件的函数,以及一些处理路径的函数. os模块中一些重要函数和 ...

  5. python基础教程_学习笔记14:标准库:一些最爱——re

    标准库:一些最爱 re re模块包括对正則表達式的支持,由于以前系统学习过正則表達式,所以基础内容略过,直接看python对于正則表達式的支持. 正則表達式的学习,见<Mastering Reg ...

  6. python基础教程_学习笔记12:充电时刻——模块

    充电时刻--模块 python的标准安装包含一组模块,称为标准库. 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 不论什 ...

  7. python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/36201499 标准库:一些最爱 集合.堆和双端队 ...

  8. python基础课程_2学习笔记3:图形用户界面

    图形用户界面 丰富的平台 写作Python GUI程序前,须要决定使用哪个GUI平台. 简单来说,平台是图形组件的一个特定集合.能够通过叫做GUI工具包的给定Python模块进行訪问. 工具包 描写叙 ...

  9. python基础教程_学习笔记1:序列-1

    序列 数据结构:通过某种方式组织在一起的数据元素的集合,这些数据元素能够是数字或者字符,甚至能够是其它数据结构. python中,最主要的数据结构是序列. 序列中的每一个元素被分配一个序号--即元素的 ...

随机推荐

  1. Kafka - SQL 引擎

    Kafka - SQL 引擎分享 1.概述 大多数情况下,我们使用 Kafka 只是作为消息处理.在有些情况下,我们需要多次读取 Kafka 集群中的数据.当然,我们可以通过调用 Kafka 的 AP ...

  2. NAT ALG原理

    1      NAT ALG简介 普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323.SIP等).F ...

  3. (转)一篇很不错的介绍Eclipse插件Menu及其扩展点的文章

    原文在:http://tech.ddvip.com/2010-04/1271054623150507.html 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包 ...

  4. 使用SSIS对Dynamics CRM 系统进行数据迁移

    嗨,各位.近期项目一直都非常忙,而且自己也一直在思考职业发展的问题,所以有非常长一段时间没静下心写几篇Blog了.近期我參与的项目是Dynamics CRM 2011 到 Dynamics CRM 2 ...

  5. AngularJs 基础(60分钟入门) (转)

    AngularJs是一个不错的用于开发SPA应用(单页Web应用)的框架.单页Web应用(single page web application,SPA),就是只有一张Web页面的应用.浏览器一开始会 ...

  6. Java 实现二分(折半)插入排序

    设有一个序列a[0],a[1]...a[n];当中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 效率:O(N^2),对于初始基本有序的序列,效率上不如直接插入排序: ...

  7. 所有城市list每次从页面花1段时间抽取后写入到数组,

    所有城市list每次从页面花1段时间抽取后写入到数组,

  8. 阐述php(四) 流量控制

    一个.选择结构 1. 单路分支 <? php if(条件){ 运行一条语句; } ?> 2. 双路分支 <?php if(条件) 运行一条语句; }else 运行一条语句; } ?& ...

  9. 项目架构mvc+webapi

    mvc+webapi 项目架构 首先项目是mvc5+webapi2.0+orm-dapper+ef codefirst. 1.项目框架层次结构: 这个mvc项目根据不同的业务和功能进行不同的区域划分, ...

  10. atitit.报告最佳实践oae 和报告引擎的选择

    atitit.报告最佳实践oae 与报表引擎选型 1. 报表的基本的功能and结构 2 1.1. 查询设计器(配置化,metadata in html) ,anno 2 1.2. 查询引擎 2 1.3 ...