python – 编辑:命名空间和异常处理
发布时间:2020-12-20 11:27:31 所属栏目:Python 来源:网络整理
导读:在我对计算机科学课程的介绍中,我们正在学习命名空间.我理解这个概念就像导入像math这样的模块一样,然后我们导入一个命名空间和该命名空间下的类属性,但执行该过程对我来说非常困惑.这是我不知道如何开始执行的问题之一: 编写一个函数name_add(a,b),它使用
在我对计算机科学课程的介绍中,我们正在学习命名空间.我理解这个概念就像导入像math这样的模块一样,然后我们导入一个命名空间和该命名空间下的类属性,但执行该过程对我来说非常困惑.这是我不知道如何开始执行的问题之一:
编写一个函数name_add(a,b),它使用异常处理(只是一个简单的try / except语句)来添加两个对象a和b,并返回结果.如果用户使用未定义运算符的任何类型调用函数,则该函数应打印一条消息,指出在类型(a)和类型(b)之间未定义加法运算符(无论这些类型是什么)…. ..l 如果有人能够逐步解释这个函数应该是什么样子或者他们在初学者术语中提出的问题,我会非常感激它,因为我根本不理解这个或它与命名空间的关系. 解决方法
您需要捕获TypeError异常.这就是问题的答案:
def name_add(a,b): try: return a+b except TypeError: print 'The + operator is not defined for a and b' return None 正如Lattyware评论的那样,捕获异常只是打印一条消息并不是一个好习惯.你应该: >解决函数中的异常,以便函数可以继续并产生合理的结果(在这种情况下这是不可能的). 看看我的一个程序的这个片段.这是顶级功能: def main(argv): """Main program for the nc2pdf utility. :argv: command line arguments """ if len(argv) == 1: # No filenames given,only the name of the script binary = os.path.basename(argv[0]) print __proginfo__ print "Usage: {} [file ...]".format(binary) print sys.exit(0) del argv[0] for fn in argv: # Loop over all the files try: ofn = outname(fn) # outname can raise ValueError... with open(fn,'r') as inf: # Open can raise IOError rd = inf.read() except ValueError: fns = "Cannot construct output filename. Skipping file '{}'." print fns.format(fn) continue except IOError: print "Cannot open the file '{}'. Skipping it.".format(fn) continue ... # do something with the file's data 在这种情况下,可以通过跳过(不处理)命令行上指定的文件之一并继续下一个文件来处理异常.这里不处理异常会使程序崩溃,即使其他文件仍可能被处理.文件名可能拼写错误,或者进程可能没有文件的访问权限.这些事情发生了,应该优雅地处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |