首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【从零学习python 】58.Python中的自定义异常及引发异常的方法

自定义异常 你可以用 raise 语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是 Error 或 Exception 类的子类。...下面是一个引发异常的例子: class ShortInputException(Exception): '''自定义的异常类''' def __init__(self, length,...self.atleast) def main(): try: s = input('请输入 --> ') if len(s) < 3: # raise 引发一个自定义的异常...main() 运行结果如下: 补充文件备份 制作文件的备份 输入文件的名字,然后程序自动完成对文件进行备份 参考代码 # 提示输入文件 file_name = input("请输入要拷贝的文件名字...+file_names[1] # 创建新文件 newFile = open(new_file_name, 'wb') # 把旧文件中的数据,一行一行的进行复制到新文件中 for lineContent

11310

python3.7 的新特性

为了使这实现自动化:为类创建实例,Python 3.7引入了一个新的模块dataclasses,如PEP 557中所述(https://www.python.org/dev/peps/pep-0557/...在Python 3.7中,生成器引发StopIteration异常后,StopIteration异常将被转换成RuntimeError异常,那样它不会悄悄一路影响应用程序的堆栈框架。...它能够实现更明确的运行时检查,了解CPython如何在内部分配内存和释放内存。 启用faulthandler模块,那样发生崩溃后,traceback始终转储出去。...如果谁定制CPython或编写使用解释器的内部API的CPython扩展件,就要明白这一点。 模块属性访问定制 你在Python程序中创建模块时,现在可以针对该模块的实例定制属性访问的行为。...为此,只需要在模块里面创建一个__getattr__方法,就跟为一个类创建方法那样。这样一来,就可以对诸如请求模块里面不存在的函数或方法之类的操作进行拦截、标记或代理。

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PEP 492 -- Coroutines with async and await syntax 翻译

    ,现在原生协程有明确的独立类型 这个改变主要是为了解决原生协程在tornado里使用出现的一些问题 在CPython3.5.2 中更新了__aiter__ 协议。...异常 在CPython 3.6中,旧的__aiter__协议仍将受到引发DeprecationWarning的支持 在CPython 3.7中,将不再支持旧的__aiter__协议:如果__aiter_...在CPython C API,有tp_as_async.am_await函数的对象,该函数返回一个迭代器(类似__await__方法) 如果在async def函数之外使用await语句,会引发SyntaxError...__aiter__方法,则引发TypeError异常。...如果尝试对其使用__iter__或__next__方法,会引发TypeError异常。 未装饰的生成器不能yield from一个原生协程,这样做会引发TypeError异常。

    1K20

    27 个问题,告诉你Python为什么这么设计

    为什么CPython不使用更传统的垃圾回收方案? CPython退出时为什么不释放所有内存? 为什么有单独的元组和列表数据类型? 列表是如何在CPython中实现的?...字典是如何在CPython中实现的? 为什么字典key必须是不可变的? 为什么 list.sort() 没有返回排序列表? 如何在Python中指定和实施接口规范? 为什么没有goto?...对于字节和字节数组对象也有类似的方法。 异常有多快? 如果没有引发异常,则try/except块的效率极高。实际上捕获异常是昂贵的。...并采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 字典如何在CPython中实现?...如何在Python中指定和实施接口规范? 由C++和Java等语言提供的模块接口规范描述了模块的方法和函数的原型。许多人认为接口规范的编译时强制执行有助于构建大型程序。

    6.7K11

    Python3.6、3.7、3.8、3.9新特性

    在与其他类实例进行比较时,它也会有适当的行为。这是因为dataclasses除了帮我们自动生成 _init_ 方法外,还生成了一些其他特殊方法,如 repr、eq 和 hash 等。...在Python 3.7中,生成器引发StopIteration异常后,StopIteration异常将被转换成RuntimeError异常,那样它不会悄悄一路影响应用程序的堆栈框架。...-X 激活的选项包括: asyncio模块的调试模式。这为异步操作提供了更详细的日志记录和异常处理,而异常操作可能很难调试或推理。 面向内存分配器的调试钩子。...这对于编写CPython扩展件的那些人很有用。它能够实现更明确的运行时检查,了解CPython如何在内部分配内存和释放内存。...Python 3.8中向新型类(如class A(object))的类变量中的写入操作变得更快。

    4.9K52

    Python官方二十七问,你知道个啥?

    这对于 __init__() 方法非常有用,特别是在派生类方法想要扩展同名的基类方法,而必须以某种方式调用基类方法时。 最后,它解决了变量赋值的语法问题:为了 Python 中的局部变量(根据定义!)...对于字节和字节数组对象也有类似的方法。 09. 异常有多快? 如果没有引发异常,则 try/except 块的效率极高。实际上捕获异常是昂贵的。...列表是可变的,这意味着您始终可以更改列表的元素。只有不变元素可以用作字典的 key,因此只能将元组和非列表用作 key。 18. 列表如何在 CPython 中实现?...并采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...如何在 Python 中指定和实施接口规范? 由 C++和 Java 等语言提供的模块接口规范描述了模块的方法和函数的原型。许多人认为接口规范的编译时强制执行有助于构建大型程序。

    2.5K20

    27 个问题,告诉你Python为什么这么设计?

    这对于 __init__() 方法非常有用,特别是在派生类方法想要扩展同名的基类方法,而必须以某种方式调用基类方法时。 最后,它解决了变量赋值的语法问题:为了 Python 中的局部变量(根据定义!)...对于字节和字节数组对象也有类似的方法。 异常有多快? 如果没有引发异常,则try/except块的效率极高。实际上捕获异常是昂贵的。...列表是可变的,这意味着您始终可以更改列表的元素。只有不变元素可以用作字典的key,因此只能将元组和非列表用作key。 列表如何在CPython中实现?...并采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 字典如何在CPython中实现?...如何在Python中指定和实施接口规范? 由C++和Java等语言提供的模块接口规范描述了模块的方法和函数的原型。许多人认为接口规范的编译时强制执行有助于构建大型程序。

    3.1K20

    干货 | 27 个问题,告诉你 Python 为什么如此设计?

    这对于 __init__() 方法非常有用,特别是在派生类方法想要扩展同名的基类方法,而必须以某种方式调用基类方法时。 最后,它解决了变量赋值的语法问题:为了 Python 中的局部变量(根据定义!)...对于字节和字节数组对象也有类似的方法。 09. 异常有多快? 如果没有引发异常,则 try/except 块的效率极高。实际上捕获异常是昂贵的。...列表是可变的,这意味着您始终可以更改列表的元素。只有不变元素可以用作字典的 key,因此只能将元组和非列表用作 key。 18. 列表如何在 CPython 中实现?...并采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...如何在 Python 中指定和实施接口规范? 由 C++和 Java 等语言提供的模块接口规范描述了模块的方法和函数的原型。许多人认为接口规范的编译时强制执行有助于构建大型程序。

    2.6K20

    干货 | 27 个问题,告诉你 Python 为什么如此设计?

    这对于 __init__() 方法非常有用,特别是在派生类方法想要扩展同名的基类方法,而必须以某种方式调用基类方法时。 最后,它解决了变量赋值的语法问题:为了 Python 中的局部变量(根据定义!)...对于字节和字节数组对象也有类似的方法。 09. 异常有多快? 如果没有引发异常,则 try/except 块的效率极高。实际上捕获异常是昂贵的。...列表是可变的,这意味着您始终可以更改列表的元素。只有不变元素可以用作字典的 key,因此只能将元组和非列表用作 key。 18. 列表如何在 CPython 中实现?...并采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...如何在 Python 中指定和实施接口规范? 由 C++和 Java 等语言提供的模块接口规范描述了模块的方法和函数的原型。许多人认为接口规范的编译时强制执行有助于构建大型程序。

    2.7K10

    Python 核心设计理念27个问题及解答

    这对于 __init__() 方法非常有用,特别是在派生类方法想要扩展同名的基类方法,而必须以某种方式调用基类方法时。 最后,它解决了变量赋值的语法问题:为了 Python 中的局部变量(根据定义!)...对于字节和字节数组对象也有类似的方法。 09. 异常有多快? 如果没有引发异常,则 try/except 块的效率极高。实际上捕获异常是昂贵的。...列表如何在 CPython 中实现? CPython 的列表实际上是可变长度的数组,而不是 lisp 风格的链表。...并采用了一些巧妙的方法来提高重复添加项的性能; 当数组必须增长时,会分配一些额外的空间,以便在接下来的几次中不需要实际调整大小。 19. 字典如何在 CPython 中实现?...如何在 Python 中指定和实施接口规范? 由 C++和 Java 等语言提供的模块接口规范描述了模块的方法和函数的原型。许多人认为接口规范的编译时强制执行有助于构建大型程序。

    3.4K21

    python基础题目大全,测试你的水平,巩固知识(含答案)

    1:在继承中基类的构造(init()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。...62、列举面向对象中带双下划线的特殊方法,如:new、init new:构造方法,创建一个对象,实例化时第一个被执行,返回一个创建好的对象及init(self)的self, 只有继承了object的类才会有这个方法...init:初始化方法,init在new的基础上完成一些其它初始化的动作,init没有返回值 63、如何判断是函数还是方法?...85、介绍一下except的用法和作用? try…except…except…[else…][finally…] -- 执行try下的语句,如果引发异常,则执行过程会跳到except语句。...对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

    92820

    100 个基本 Python 面试问题第四部分(61-80)

    Q-59:Python 中的 Class 是什么? Q-60:Python 类中的属性和方法是什么? Q-61:如何在运行时为 Class 属性赋值?...Q-65:你如何在 Python 中使用 Try/Except/Finally 处理异常? Q-66:你如何为 Python 中的预定义条件引发异常? Q-67:什么是 Python 迭代器?...Q-61:如何在运行时为 Class 属性赋值? 我们可以在运行时指定属性的值。我们需要添加一个 init 方法并将输入传递给对象构造函数。请参阅以下示例来说明这一点。...("到达最后一个区块") 输出是: 在 try 块中执行代码 进入except块 到达最后一个区块 回到目录 Q-66:你如何为 Python 中的预定义条件引发异常?...我们可以根据某些条件引发异常。 例如,如果我们希望用户只输入奇数,否则会引发异常。

    3K21

    Python3.8 了解的差不多了吧,Python3.9 新特性了解一下!

    ,教你阅读 Cpython 的源码(一) 语言上的变化 1、使用 Python 进行相对导包的时候,__import__ 出现异常时类型由原来的 ValueError 变成了 ImportError。...但是现在出现异常 traceback 信息的时候还会显示 __main__模块的绝对路径。(由 Victor Stinner 在 bpo-20443 中贡献。)...调用此方法后,如果在使用默认执行程序时调用executor()中的loop.run,则会引发RuntimeError。 注意,使用asyncio.run()时不需要调用这个函数。...loop.shutdown_default_executor() threading 在子解释器中,生成守护进程线程现在会引发异常。子解释器中从不支持守护进程线程。...同时删除 xml.etree.cElementTree 方法。 删除 3.4 中不支持的旧 plistlib 模块的实现。

    1.1K20

    Python3.8 了解的差不多了吧,Python3.9 新特性了解一下!

    ,教你阅读 Cpython 的源码(一) 语言上的变化 1、使用 Python 进行相对导包的时候,__import__ 出现异常时类型由原来的 ValueError 变成了 ImportError。...但是现在出现异常 traceback 信息的时候还会显示 __main__模块的绝对路径。(由 Victor Stinner 在 bpo-20443 中贡献。)...调用此方法后,如果在使用默认执行程序时调用executor()中的loop.run,则会引发RuntimeError。 注意,使用asyncio.run()时不需要调用这个函数。...loop.shutdown_default_executor() threading 在子解释器中,生成守护进程线程现在会引发异常。子解释器中从不支持守护进程线程。...同时删除 xml.etree.cElementTree 方法。 删除 3.4 中不支持的旧 plistlib 模块的实现。

    1K40

    Python3.8 了解的差不多了吧,Python3.9 新特性了解一下!

    ,教你阅读 Cpython 的源码(一) 语言上的变化 1、使用 Python 进行相对导包的时候,__import__ 出现异常时类型由原来的 ValueError 变成了 ImportError。...但是现在出现异常 traceback 信息的时候还会显示 __main__模块的绝对路径。(由 Victor Stinner 在 bpo-20443 中贡献。)...调用此方法后,如果在使用默认执行程序时调用executor()中的loop.run,则会引发RuntimeError。 注意,使用asyncio.run()时不需要调用这个函数。...loop.shutdown_default_executor() threading 在子解释器中,生成守护进程线程现在会引发异常。子解释器中从不支持守护进程线程。...同时删除 xml.etree.cElementTree 方法。 删除 3.4 中不支持的旧 plistlib 模块的实现。

    1.7K30

    教程 | PyTorch内部机制解析:如何通过PyTorch实现Tensor

    _C 模块定义在 torch/csrc/Module.cpp 文件中。init_C()/ PyInit__C()函数创建模块并根据需要添加方法定义。...这个模块被传递给一些不同的__init()函数,这些函数会添加更多的对象到模块中,以及注册新的类型等。..._C 模块,以便它们可以在._C 模块中调用。下面我们来了解这些方法的工作原理。...回想前文所述,我们从以上的 generic 目录中调用 THPTensor *函数(如 init)。如果我们来看一下这个目录,会发现一个定义了的 Tensor.cpp 文件。...#### 模块对象和类型方法,我们现在已经看到如何在 THP 中封装 TH 的 Tensor 定义,并生成了 THPFloatTensor_init(...)等 THP 方法。

    2.8K50

    通过内置对象理解 Python(一)

    异常 Python 有66个内置的异常类(到目前为止),每个类都用于程序中作为解释和捕获代码中的错误和异常的方法。...在这个函数中有三种情况: 如果 key 不在缓存中,执行 cached_items[key] 将引发 KeyError 异常。此异常会被 except 分支捕获,之后执行此分支下的语句。...在 fetch_from_cache() 函数中将引发 ValueError 异常,用以表示此时传给函数的值不合适。因为 try ... except ......全局变量 上面看到的内置对象中,还有另一组看起来很奇怪的名称,如:__spec__ 、 __loader__ 、__debug__ 等。 这些实际上不是 builtins 模块所特有的。...__package__ 'urllib' __spec__ __spec__ 属性含有详细的模块信息,即元数据,如模块名称、模块类型,以及它的存储路径等。

    52010
    领券