Python中的所有实例必须是从BaseException派生的类的实例。通过子类不相关的两个异常类,即使它们具有相同的名称,也永远不会等效。内置异常可以由解释器或内置函数生成。...错误发生时,Python中会引发一些内置的异常。...当解释器检测到超过最大递归深度时,将引发此异常。 异常ReferenceError 当在垃圾回收之后使用弱引用代理访问引用对象的属性时,引发ReferenceError。...它返回一个字符串,指示确切的错误。 异常StopIteration 内置函数next()和迭代器的__next __()方法引发StopIteration错误,以表示所有项目都是由迭代器产生的。...err.text) print err 输出: Syntax error (1-9): 软件测试test invalid syntax (, line 1) 异常SystemError 当解释器发现内部错误时
Python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception...当内置函数input()或raw_input()正在等待输入时,键入的中断也会引发此异常。异常继承 BaseException而不被意外地捕获Exception并因此阻止解释器退出的代码被捕获 。...您应该向Python解释器的作者或维护者报告。...确保报告Python解释器的版本(sys.version它也是在交互式Python会话开始时打印的),确切的错误消息(异常关联值)以及触发错误的程序源可能的可能。...当它不被处理时,Python解释器退出; 不打印堆栈追溯。
内置异常基类 在 Python 中,所有异常必须为一个派生自 BaseException 的类的实例。 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称。...+-- SystemExit 解释器请求退出 +-- KeyboardInterrupt 用户中断执行(通常是输入^C) +-- GeneratorExit 生成器...-- EOFError 没有内建输入,到达EOF 标记 +-- ImportError 导入失败 | +-- ModuleNotFoundError 找不到模块...+-- RuntimeError 一般的运行时错误 | +-- NotImplementedError 尚未实现的方法 | +-- RecursionError 解释器检测到超出最大递归深度...+-- SystemError 一般的解释器系统错误 +-- TypeError 对类型无效的操作 +-- ValueError 传入无效的参数 | +-- UnicodeError
内置命名空间 内置命名空间包含Python所有内置对象的名称。当Python运行时,这些可以直接使用。...解释器在启动时直接创建内置命名空间,并且这个命名空间一直存在,直到解释器终止。...例如代码中引用名称x,那么Python将按照以下的顺序搜索x: 本地作用域:如果你在一个函数中引用x,那么解释器首先在该函数本地的最内部作用域内搜索它。...内置作用域:如果在其他地方找不到x,那么解释器将尝试内置的作用域。 ? 这是Python文献中通常所称的LEGB规则(尽管Python文档中并没有实际出现这个术语)。...解释器从内到外搜索名称,查找本地、闭包、全局,最后是内置作用域。 如果解释器在这些位置中找不到名称,那么Python将抛出NameError异常。 下面是LEGB规则的几个例子。
发现 发现这个配置是用来查找目标Python解释器的,当你创建虚拟环境的时候,你的虚拟环境以哪个Python解释器版本作为模板来创建呢?这个时候就需要用到发现这个组件来查找了。...对应的选项有: –discovery {builtin} 解释器发现方法,默认值builtin,即内置的发现组件。现在好像只有这一个可以选择。也就是说,这个选项目前对于普通用户来说没什么用。...除非你能够自己实现一个发现组件。 -p py, –python py,用于创建虚拟环境的目标python解释器,即以这个参数指定的python解释器版本来创建虚拟环境。...默认值是你当前安装virutalenv的python解释器。它有两种格式,分别是: I. python解释器的绝对路径。...它对应的选项有: –creator {builtin, cpyhon3-win, venv},即通过哪个python解释器来创建虚拟环境,默认是builtin,即安装virtualenv的python版本
在上一节中有一句话“接着我们在这个文件所在目录运行Python解释器IPython”,不知道大家还记不记得。...Python模块的搜索路径 当一个名为mylib的模块被导入时,解释器首先搜索内置模块是不是有该名字的模块。 如果没有找到,接着搜索sys.path列出的目录下面是不是有名为mylib的模块。...这是因为,当交互式运行Python解释器时(或者脚本是从标注输入读取的),可以认为传给解释器的脚本文件路径为空,那么就把sys.path[0]设置为空字符串,它告诉Python搜索模块时先从当前文件夹开始...其中一些模块内置在解释器中,它们提供对不属于语言核心但仍然内置的操作的访问,以提高效率或提供对系统调用等操作系统原语的访问。这些模块的集合是一个配置选项,它也取决于底层平台。...一个值得注意的模块是sys,它内置于每个Python解释器中。 Python的标注模块会在我们今后的编程中不断遇到和使用,具体的学习可以在今后用到时再学习。
我们编写程序通常使用开发工具编写,比如:我使用 Pycharm 工具编写 Python 程序,像这种语法错误,在编写程序时,编译器就会检测出来并提示我们,因此,我们编写好的程序几乎不会出现这种问题。...Python 内置异常 我们先来看一下异常层次结构: BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +...详细说明可以查看下面列表: 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError...尚未实现的方法 SyntaxError Python 语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError
1.干货来了 这里我们将Python的基础知识梳理成图谱,一图了然入门Python需要掌握的知识点,真正入门还是要一步步刷代码才行,编程没有捷径,代码量是水平的基本保障,就像开车一样,唯手熟尔。 ?...交互式及while循环 6.函数,执行特定任务的代码块 7.类,模拟实物 8.使用文件及异常处理 9.代码测试 2.Python之禅 Pthon社区的理念都包含在Tim Peters撰写的“Python...要获得这些圭臬经验,只需要在Python解释器中执行命令import this就可以获得了。分享给大家共勉。 ?...翻译和解释 Python之禅 by Tim Peters 优美胜于丑陋(Python 以编写优美的代码为目标) 明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似) 简洁胜于复杂(优美的代码应当是简洁的...3.扩展资料 Python学习宝典:Learn Python3 The Hard Way “ LPTHW宝典下载,公众号回复:20181024 ” LPTHW官网:https://learnpythonthehardway.org
一处可能无法向后兼容的变更涉及处理生成器中的异常。 面向解释器的“开发模式”。 具有纳秒分辨率的时间对象。 环境中默认使用UTF-8编码的UTF-8模式。 触发调试器的一个新的内置函数。...这意味着如何处理生成器的行为方面不太敏锐的一些程序会在Python 3.7中抛出RuntimeError。...Python开发模式 Python解释器新的命令行开关:-X让开发人员可以为解释器设置许多低级选项。...内置breakpoint()函数 Python随带内置的调试器,不过它也可以连入到第三方调试工具,只要它们能与Python的内部调试API进行对话。...不过,Python到目前为止缺少一种从Python应用程序里面以编程方式触发调试器的标准化方法。 Python 3.7添加了breakpoint(),这个内置函数使得函数被调用时,让执行切换到调试器。
迭代器 可迭代(Iterable):直接作用于for循环的变量 迭代器(Iterator):不但可以作用于for循环,还可以被next调用 list是典型的可迭代对象,但不是迭代器 通过isinstance...函数确定,该函数会返回下述字符串中的一个: GEN_CREATED:等待开始执行 GEN_RUNNING:解释器正在执行 GEN_SUSPENED:在yield表达式处暂停 GEN_CLOSED:执行结束...内置的 None 和 Ellipsis 等常量经常用作哨符值==。...新增的库 类似其他语言的线程池的概念 利用multiprocessiong实现真正的并行计算 核心原理:以子进程的形式,并行运行多个python解释器,从而令python程序可以利用多核CPU来提升运行速度...由于子进程与主解释器相分离,所以他们的全局解释器锁也是相互独立的。每个子进程都能够完整的使用一个CPU内核。
解释器会从命名空间中查找runoob,它先从局部空间查找,如果找到了它就会使用局部命名空间的变量runoob,即使全局命名空间也有变量runoob。...(内置名称空间在 Python 解释器启动时就创建了,直到 Python 解释器退出时内置名称空间才失效。...这使得我们可以在程序的任何位置使用内置名称空间内的名称,例如,id(),print()等函数。 模块名称空间当模块被引用时创建,直到 Python 解释器退出时模块名称空间才失效。...(当在函数内部使用一个名称时,为了查找出该名称所引用的对象,Python 解释器先在函数名称空间查找,接着在模块名称空间查找,最后在内置名称空间查找,直到寻找到该名称为止。...在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。 如下: # Python 的一个内建值 int,我们首先将其赋值为 0,然后定义一个函数 fun1()。
):Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令 GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器 环境使用 众所周知,python语言作为一门超级人性化的语言越来越被受到重视...虚拟服务同样受到人们的重视,那么本次项目的目的就是让大家学会使用python制作一个虚拟解释器,这里的虚拟解释器指的是一定意义上的堆栈机。...得益于Python的动态类型,因此我们可以往列表里面存储任何东西,但是我们不能区分列表里面的内置函数和字符串,正确的做法是将Python内置函数单独存放于一个列表,关于这个问题大家可以思考一下。...但是在这之前,我们需要创建一个解释器的循环: def run(self): while self.instruction_pointer opcode = self.code[self.instruction_pointer...然而并没有完,环境搭建好了,最重要的'解释'还没有完成,一个语言解释器包括两部分: 解析:解析部分接受一个由字符序列表示的输入指令,然后将输入字符分解成一系列的词法单元 执行:程序内部的解释器根据语义规则进一步处理词法单元
Python3常见错误 异常名称 描述 解决方法 BaseException 所有异常的父类 Python所有的错误都是从BaseException类派生的,是所有异常的父类 SystemExit 解释器请求退出...所有数值计算错误的基类 \ FloatingPointError 浮点计算错误 这个错误由导致错误的浮点操作产生,前提是已经打开了浮点异常控制(fpectl),启用fpectl时,要求编译解释器提供...MemoryError 内存溢出错误(对于Python 解释器不是致命的) 如果一个程序用尽了所有内存,而且可以恢复,会产生 NameError 未声明/初始化对象 (没有属性) 如果代码引用了一个名字...)试图访问已经垃圾回收了的对象 使用一个weakref代理访问已经被垃圾回收的对象时,会产生 RuntimeError 一般的运行时错误 如果没有其他更特定的异常可用,就要使用RuntimeError异常...如果错误发生在解释器本身,会产生 TypeError 对类型无效的操作 使用+拼接的时候 必须使用字符串,或者将数字转化成字符串 ValueError 传入无效的参数 如果一个函数接收到的值类型正确,但是值不合法时产生
语法错误逻辑错误(异常)一些常见的异常错误是: IOError: 如果文件打不开KeyboardInterrupt: 当用户按下不需要的键时ValueError: 当内置函数收到错误的参数时EOFError...: 如果命中文件末尾而不读取任何数据ImportError: 如果找不到模块语法错误当未遵循该语言的正确语法时,就会引发语法错误。...ImportError当找不到导入的模块时,会发生此事件。KeyError当找不到字典的键时,会发生这种情况。NameError当变量未定义时,会发生这种情况。...例如# 一个用于创建用户定义异常的 Python 程序# 类 MyError 派生自超类 Exceptionclass MyError(Exception): # 构造函数或初始化器 def...# NetworkError 基于 RuntimeError 而不是 Exceptionclass Networkerror(RuntimeError): def __init__(self, arg
搜了下 SF 发现了答案: 原来 windows 下的这些内置模块都是 C 写的,是没有 time.__file__ 属性,也就是看不到源码的,而在linux下则会指向一个 .so 文件。...当解释器是 Cygwin 版本时,time....然而 Pycharm 中加载 Cygwin 版本解释器虽然报错提示找不到模块,但是真正执行的时候是没有问题的,因为相应的模块都以 .dll 形式提供了,只是 Pycharm 无法直接静态分析该版本的 python.exe...,而导致“看起来找不到内置模块”,因此才会出现了 IDE 静态分析提示错误,但是能执行成功的现象。...而且这两个版本的解释器对调用执行基础的模块、函数 都是没有问题的。
'/home/wangbm/.local/lib/python3.7/site-packages' (exists) ENABLE_USER_SITE: True 从输出你可以发现,这个列的路径会比...为了实现这个需求,Python 3.2 + 中给我们提供了一个机制,可以很方便的实现,而不需要你去写这样的逻辑代码。 这个机制实现于 functool 模块中的 lru_cache 装饰器。...在程序退出前执行代码的技巧 使用 atexit 这个内置模块,可以很方便的注册退出函数。 不管你在哪个地方导致程序崩溃,都会执行那些你注册过的函数。 示例如下 ?...如果clean()函数有参数,那么你可以不用装饰器,而是直接调用atexit.register(clean_1, 参数1, 参数2, 参数3='xxx')。...在 Python 可以使用 上下文管理器 达到这种效果 import contextlib def callback(): print('B') with contextlib.ExitStack
简介 和其他的语言一样,Python中也有异常和错误。在 Python 中,所有异常都是 BaseException 的类的实例。 今天我们来详细看一下Python中的异常和对他们的处理方式。...Python中的内置异常类 Python中所有异常类都来自BaseException,它是所有内置异常的基类。...异常 即使我们的程序符合python的语法规范,但是在执行的时候,仍然可能发送错误,这种在运行时发送的错误,叫做异常。...: Failed to open database 上面的例子中,我们在捕获IOError之后,又抛出了RuntimeError,通过使用异常链,我们很清晰的看出这两个异常之间的关系。...,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
当一个变量在局部、闭包或全局作用域中找不到时,Python 会在内置作用域中寻找它。...当你想告诉 Python 解释器某个类没有定义某个操作符时,就是在这个类的操作符定义中使用 NotImplemented 。...解释器当前的操作是不受支持的。...Python 冻结了这两个模块,因为它们实现了导入系统的核心,因此,当解释器启动时,它们不能像其他 Python 文件一样被导入。本质上,它们的存在是为了引导导入系统。...字节码是用于Python虚拟机的一组微指令。这个“虚拟机”是 Python 解释器的逻辑所在。它本质上是在本地计算机上模拟一个非常简单的基于栈的计算机,以便执行 Python 代码。
语句 Python解释器在运行出现异常时,会返回异常信息,告诉我们错误出现在哪一行,错误类型是什么,具体原因是什么。...下表列出了Python中的标准异常类型: 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入...序列中没有此索引(index) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError...尚未实现的方法 SyntaxError Python语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError...以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。
第一,它让 Python 文件的作用更加明确 首先需要明白 __name__ 的作用,当脚本直接被 Python 解释器执行时,其值就是 "__main__",当其被其他 Python 程序 import...的时候,其值就是对应的 Python 脚本文件名,可以在 Python 解释器验证下,假定有个 some_script.py 其内容如下: print("some_script.py") print(...__name__) 在 Python 解释器导入一下: ❯ vim some_script.py ❯ python Python 3.8.5 (v3.8.5:580fbb018f, Jul 20 2020...,会发现程序不停的在创建进程,同时也在不停的报错 RuntimeError,即使你 Ctrl C 也无法终止程序。...其实我是这样理解的,Python 的多程序就是启动了多个 Python 解释器,每个 Python 解释器都会导入你这个脚本,复制一份全局变量和函数给子进程用,如果有了if __name__ == "_
领取专属 10元无门槛券
手把手带您无忧上云