chapter3:Functions

与其他一些教程不同,没有讲那些条件/循环之类的就直接上函数了.
内建函数,如type. 类型转换函数,如int(),float()等
内建模块,如数学函数,需要导入math模块 importmath
赋值表达式

函数定义及使用方法(4个空格,我在vim上直接按tab方便,以后再设置或者改习惯吧):
def func_name():
    func_body
还有一种说法比较少见,函数对象. 将函数作为一个对象,直接扔到参数里
执行流:无法是函数或者变量,在执行前都要预先定义它,可以根据报错来查找 //Flow of execution
形参与实参:定义中是形参,叫parameter. 运算中是实参,叫argument 有些书里不严格区分
局部变量与参数 //函数中的形参,函数中使用的变量,一般都只是局部变量
画了状态图//堆栈图来帮助理解程序是如何执行和存储变量的

traceback:跟踪出错的行,能清楚的指出从__main__到相关调用的函数,可以迅速定位问题.
带返回值的函数与无返回值的函数 //将无返回值的函数赋给一变量或者直接print 会none或者报错
然后讲了讲函数的好处和import的方法:
1.import math //使用函数时要带上模块名
2.from math import pi //指定单个
3.from math import * //不提倡这个方法,很容易导致函数名与自定义或者其他模块的重叠.
关于调试,特别是对于从客户端传到服务器端,确保你所运行的与你最新修改的是一致的文件,我好像曾经犯过这错误

练习:3.3,算长度用个减法即可,写个while用来测试你的程序,不用次次跑
练习:3.4,让你搞明白什么函数对象,当参数为函数对象时,带参数的函数对象时是怎样的.在3.5中还可以用得着,就是提示有些让人看得莫名其妙的.
练习:3.5,这个让我折腾了一会,仍然说明了编程不是动手的工作,不想清楚就去动手的纯属脑残,这纯属无聊有点设计过度了,例子如下:

 

 1 #by fqy, use tokens print a rectangle.
 2 #line style *2,print lines
 3 def line_style1(column):
 4     print '+----'*column+'+'
 5 def line_style2(column):
 6     print '|    '*column+'|'
 7 #repeat same lines,as repeat function
 8 def repeat_line(f,col,row):
 9     for i in range(row):
10         f(col)
11 #print table
12 def print_table(row,col):
13     for i in range(row):
14         #a cell 
15         line_style1(col)
16         repeat_line(line_style2,col,4)
17     line_style1(col)
18 #testing
19 foo=raw_input("input the table's row,col;\n eg:3,4; exit by 'over': ").split(",")
20 while foo[0]!='over':
21     print_table(int(foo[0]),int(foo[1]))
22     foo=raw_input("input the table's row,col;\n eg:3,4; exit by 'over': ").split(",")

 

posted @ 2013-04-15 17:32  doupip  阅读(226)  评论(0编辑  收藏  举报