解决以下问题:

(1)怎么能写出结构良好,可读的程序,使你和其他人能够很容易地冲用它

(2)基本结构块,如循环,函数及赋值,是如何执行的?

(3)Python编程的陷进有哪些,你将如何避免它们?

一,回到基础

#赋值

链表的赋值,实际上是一个对象的引用,要了解这里发生了什么,需要知道链表是如何存储在计算机内存的

foo = ['Monty', 'Python']
bar = foo
foo[1] = 'Bodkin'
bar 
['Monty', 'Bodkin']

#等式

python提供了两种方法来检查一对项目是否相同

is操作和==

#条件语句

if...elif

all()函数和any()函数可以应用到一个链表(或其他序列),以检查是否全部或任一项目满足一些条件

sent = ['No','good','fish','goes','anywhere','without','a','porpoise','.']
all(len(w) > 4 for w in sent)
False
any(len(w) > 4 for w in sent)
True

二 序列

python 结构设计 python结构化程序设计方法_Python

三 风格的问题

四 函数:结构化编程的基础

#函数的输入和输出

return语句将其结果返回给调用它的程序

#参数传递

与赋值一样,结构化对象的值是该对象的引用

#变量的作用域

名称解析的LGB规则:本地(local),全局(global),然后内置(built-in)

#参数类型检查

python不会强迫我们声明变量的类型

但可以使用if not type(p) is str来简单检测,或者使用assert 

#功能厅分解


#文档说明函数

@param  等docstring处理工具

五 更多关于函数

#作为参数的函数

可以使用lambda表达式

#累计函数

yield函数

#高阶函数


#参数的命名

关键字参数

参数的默认值

参数可以按任意顺序指定,也可以省略

六 程序开发

#Python模块的结构

单独的.py文件,有些定义"类"

#多模块程序

import语句

#误差源头

调bugs

#调试技术

如果程序产生一个"异常"的运行错误,解释器会输出堆栈跟踪

#防御性编程

添加assert语句

七 算法设计

#递归

#空间与时间的权衡

#动态规划

八 Python库的样例

#Matplotlib绘图工具

#NetworkX包定义和操作由节点和边组成的结构(称为图)

#CSV

#Numpy数值运算包

#其他包

九 深入阅读