学习《Python语言入门》第四章 函数
怎么找不到第三章的学习笔记了?丢了?
Python的函数没有什么的,可以说,看了《简明Python教程》后,就会写了。
这一章提供的内容也比《简明Python教程》要多一些。比较复杂的是作用域规则,不知道是书没讲清楚还是翻译得不好,比较难懂。钱能的《C++程序教程》关于函数的作用域规则讲得要清楚些,有C++的知识在里面,理解Python的函数作用域规则,好懂很多。似乎两者也没有什么区别。
函数参数方面有些不一样,C++的值传递、指针传递、引用传递分得很清楚。而Python的参数传递有些不能改变参数的值,有些是可以的。需要小心的对付。还有关键字的参数、可变参数,都是C++没有的内容。Python的函数可以不用return,但是后面的设计概念还是建议要用return返回。
lambda、map、apply这些工具很方便,有脚本的影子在里面。
最让我惊奇的是“函数是对象: 非直接调用”这一小节。Python中函数的灵活是C++所不可比的。Python的函数就像一小团粘土一样,可以揉过来搓过去的使用。
“函数常见的问题”确实让我这个新手迷糊了,暂时先不提它们吧。而且这一节里面的例子似乎有问题,有一些书上说不能运行,但在我的Python中却能运行;另有一些说能运行,但我运行出错。是不是Python的版本更迭改变了一些东西?这一节的内容还适用吗?
相关文档:
源代码下载:下载地址在这里
raise有两个参数,第一个是由我们自己定义的异常类型,第二个是关于此异常的少量说明信息。
# 038
def getAge():
age = input('Input your age:')
if (age < 0 or age > 160):
raise 'BadAgeError', 'It is impossible!!!!!'
# end of if
return age
# ......
首先是下载python3,现在的最高版本是3.1.1
for linux。
我的放置路径是/home/python下放置Python-3.1.1.tgz,执行以下系列操作:
1.解压:tar zxvf Python-3.1.1.tgz----生成解压包Python-3.1.1
2.转换到Python-3.1.1路径下,执行./configure
3.make
4.make install
在rehl5中已经默认安装了python2.4,所以要做如下 ......
filename=raw_input('enter file name:')
f=open(filename,'rb')
f.seek(0,0)
index=0
for i in range(0,16):
print "%3s" % hex(i) ,
print
for i in range(0,16):
print "%-3s" % "#" ,
print
while True:
temp=f.read(1)
if len(temp) == 0:
break
else:
print "%3s" % temp.encode('hex'),
......
正则表达式
具体的参考手册,这里记下一些小问题:
1、re对象的方法
match Match a regular expression pattern to the beginning of a string.
search re.search(pattern, string, flags) flags:re.I re.M re.X re.S re.L re.U
sub Substitute oc ......
代码中采用了三步实现算术表达式的解析:
1. 将算术表达式(字符串)转换成一个列表parseElement方法
2. 将列表表示的算术表达式转换成后缀表达式changeToSuffix
3. 计算后缀表达式的结果
这里我是为了方便, 就写了个parseElement, 不想那方法写到后面却把自己绕住了, 可以想象一个带自增, 位, 逻辑, 算术的表达式的数值提 ......