tags: Python Learning
Note
1. `callabel()`可以测试函数能否调用。(返回True/False)(3.0得用`hasattr(func, __cal__)`代替)
2. 使用`def`语句定义函数
def语句后面,称为文档字符串。help得到关于函数的信息,包括文档字符串。return起到结束函数的作用。*+参数名收集其余的位置参数为一个元组。(没有就是一个空元组)**+参数名收集有关键字的参数,得到一个字典。
普通参数和关键字参数可以联合使用。
def add(x, y): return x + y
params = (1, 2)
add(*params)
同样字典也可以用**翻转vars 函数可以返回这个字典。
scope = vars()
一般来说,vars所返回的字典是不能修改的,结果是未定义的,可能得不到想要的结果
这种“字典”就是作用域。global访问,如果内外作用域变量名重叠了,可以用globals()[‘parameter‘]获取。__closure__属性中。关于闭包具体见这篇博文:Python
学习入门(25)—— 闭包 标准库中的bisect模块可以非常有效地实现二元查找。
“函数式编程”方面的函数:map、filter 和 reduce 函数(3.0中被移到 functools 模块中)lambda:匿名函数。 map:将序列中的元素全部传递给一个函数。list(map(str,range(10)))filter:基于一个返回布尔值的函数对元素进行过滤。list(filter(lambda
x:x.isalnum(), seq))reduce:对一个序列的每个项迭代调用函数。它会将序列的两个元素与给定的函数联合使用,并且将它们的返回值和第3个元素继续联合使用,直到整个序列处理完毕。reduce(lambda
x,y:x+y,numbers)7.2 类和类型
7.2.2 创建自己的类 在模块或脚本开始的地方放置语句 __metaclass__
= type表示新式类。
关于
new_sytle class详见啄木鸟社区的译文:python中的 new-style class 及其实例详解
class语句会在函数定义的地方创建自己的命名空间
self是对于对象自身的引用
如果知道foo是Person的实例的话,还可以把foo.greet()看做Person.greet(foo)方便的简写
claass A(B): ...,B是A的超类,A是B的子类。 子类正常会重写超类的方法。issubclass函数:查看一个类是否是另一个的子类。isinstance函数:检查一个对象是否是一个类的实例。 __bases__特性:想要知道已知类的基类。__class__:查看一个对象属于哪个类。type函数来查看实例的类。hasattr(obj, ‘method‘)callable(getattr(obj, ‘method‘, None))(在3.0中可以使用hasattr(x,
‘__call__‘)来代替callable(x))__dict__特性:查看对象内所以存储的值。dir(exceptions)查看内建的异常。(需要import
exceptions) class SomeCustomException(Exception): pass
try/except 异常实现。
如果没有捕捉到异常,它会被“传播”到调用的函数中。如果那里依然没有捕获,这写异常就会“浮”到程序的最顶层。
如果要传递异常,可以使用raisetry/expect 异常可以附带多个expecttry/expect (...)将异常作为元组放进去try/ except (...), e(3.0是 as
e)try/ expect可以捕捉全部异常。
注意:这样捕捉所有异常是危险的,因为它会隐藏所有程序员未想到并且未做好准备处理的错误。使用except Exception,e会更好,或者对异常对象e进行一些检查
try /expect /else进行没有异常情况的处理。while True: # 如果出错必须重新输入,否则无法跳出循环
try:
x=input(‘Enter the first number: ‘)
y=input(‘Enter the second number: ‘)
print(int(x)/int(y))
except Exception as e : # 如果出错了,打印错误信息
print(e)
print(‘Invalid input,please try again‘)
else: # 计算过程没有异常,跳出
break
try/except/else/finally:无论是否发生异常情况,都需要执行一些清理工作。(如通信过程)if/else效率快。原文:http://blog.csdn.net/hcbbt/article/details/18798973