gpt4 book ai didi

python - 编辑: Namespaces,和异常处理

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:02 25 4
gpt4 key购买 nike

在我对计算机科学类(class)的介绍中,我们正在学习命名空间。我理解这个概念,就像在导入像 math 这样的模块时,然后我们导入一个命名空间和该命名空间下的类属性,但是执行这个过程让我很困惑。这是我不知道如何开始执行的问题之一:

编写一个函数,name_add(a,b),它使用异常处理(只是一个简单的try/except 语句)来添加两个对象,a 和 b,并返回结果。如果用户使用未定义 + operator 的任何类型调用该函数,该函数应打印一条消息,说明加法运算符在 type(a) 之间未定义和 type(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

在这种情况下,可以通过跳过(不处理)命令行中命名的文件之一并移至下一个文件来处理异常。不处理此处的异常会使程序崩溃,即使可能仍在处理其他文件。文件名可能拼写错误,或者进程可能没有文件的访问权限。这些事情发生了,应该优雅地处理。

关于python - 编辑: Namespaces,和异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com