Python Generator 运行细节验证

今天来__next__和send, 改天来throw和close

class A:
    def __setattr__(self, key, val):
        print(‘set %s to %s‘%(key, val))
        self.__dict__[key] = val

def G():
    e = A()
    i = 0
    while 1:
        e.x = (yield i)
        print(‘    e.x is %s‘%e.x)
        i+=1

def p(s):
    print(‘        out put: %s\n‘% s)

g = G()

p(next(g))
p(next(g))
p(g.send(‘x1‘))
p(g.send(‘x2‘))
p(next(g))

结果:

>>>
        out put: 0

set x to None
    e.x is None
        out put: 1

set x to x1
    e.x is x1
        out put: 2

set x to x2
    e.x is x2
        out put: 3

set x to None
    e.x is None
        out put: 4
时间: 2024-12-28 02:25:26

Python Generator 运行细节验证的相关文章

第2章 Python如何运行程序

第2章 Python如何运行程序 ? 本章和下一章将快速地看一看程序的执行--你如何启动代码,以及Python如何运行它.在这一章中,我们将大体上研究一下Python解释器如何执行程序.之后的第3章将向你展示如何建立你自己的程序并运行它. ? 程序的启动细节天生就与特定的平台相关,这两章的部分内容可能并不适用于你工作的平台,所以高级读者应当随心所欲地跳过与他们预期的用途不相关的部分.同样,以往使用过类似的工具并且期望对语言快速进阶的读者可能想把这两章的部分内容束之高阁"以备日后参考".

Python Web运行环境搭建

最近打算用 Python 来开发网站的一些其它功能,先来搭建 Python 的运行环境吧. 安装 Python Python 的目前有两个版本,Python 2.7.5 和 Python 3.3.2.Python 3.x 与 2.x 不仅仅是版本的新旧的区别那么简单,Python3.x 是一个全新的东西. 我下的 Python 2.7.5 这个版本是 .msi 格式的,所以直接安装即可,我将 Python 2.7 安装在了 E:\Python 下.雅加达娱乐城 然后就是配置环境变量,这个学过 J

python模块导入细节

python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 用于执行的可执行程序文件 不用与执行,仅用于被其它python源码文件导入的模块文件 例如文件a.py和b.py在同一目录下,它们的内容分别是: # b.py x="var x in module b" y=5 # a.py: import b import sys print(b.x)

常见的几种语言C,C#,JAVA,Python的运行原理

相对于常见的几种语言C,C#,JAVA,Python的运行原理 由于CPU只能识别机器码,即我们常说的二进制码01010101 有任何语言在计算机上运行最终都要转化成CPU能够识别的机器码010101 对于C语言:通过C语言代码编译器将C语言写出的代码进行编译得到机器码,然后机器码就可以交给CPU去识别,即运行 对于其他语言:代码编译器将代码编译成字节码,然后通过各自的虚拟机将字节码进一步处理(转换)成机器码(0101010101),然后在处理器上运行 Python和C 首先Python是用C开

Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level

[问题] 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent does not match any outer indentation level [解决过程] 1.对于此错误,最常见的原因是,的确没有对齐.但是我根据错误提示的行数,去代码中看了下,没啥问题啊. 都是用TAB键,对齐好了的,没有不对齐的行数啊. 2.以为是前面的注释的内容影响后面的语句的语法了,所以把前面的注释

Python代码运行助手(6)----帮助你走的更久

Python代码运行助手可以让你在线输入Python代码,然后通过本机运行的一个Python脚本来执行代码.原理如下: 在网页输入代码: 点击Run按钮,代码被发送到本机正在运行的Python代码运行助手: Python代码运行助手将代码保存为临时文件,然后调用Python解释器执行代码: 网页显示代码执行结果: 下载 点击右键,目标另存为:learning.py 备用下载地址:learning.py 运行 在存放learning.py的目录下运行命令: C:\Users\michael\Dow

利用.NET Code Contracts实现运行时验证

.NET的Contract类库是Declarative Programming实践的一部分,可以对日常编程带来很多好处: 提高代码可读性,使用者一看Require, Ensure就知道这方法接受什么输入,产生什么输出. 减少重复的验证代码 配合第三方工具,可以方便静态代码分析和单元测试,方便产生API文档,这些功能可以参见Code Contract主页 Contract类本身已经在.NET 4.0之后集成进了System.Diagnostics.Contracts命名空间,但如果想使用Contr

Python:Python的运行过程

1.Python是什么 和Java以及c#一样,Python也是一门基于虚拟机的语言.熟悉Java开发的人在命令行执行一个Java程序的过程通常如下: javac hello.java java hello Python的运行过程与Java类似,只不过将这两步融合成了一步而已.当我们在命令行输入python hello.py时,其实是激活了python的"解释器",告诉它:你要开始工作了,但在"解释"工作之前,python"解释器"的第一项工作和

第一部分 Python如何运行

Python如何运行程序 Python运行脚本时,第一步是编译成所谓的“字节码”,之后将其转发到“虚拟机”中. 1.字节码编译: 当程序执行时,Python内部(对大多数用户是完全隐藏的)会先将源代码(文件中的语句)编译成所谓字节码的形式.编译是一个简单的翻译步骤,而且字节码是源代码底层的.与平台无关的表现形式.概括的说,Python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码指令.这些字节码可以提高执行速度:比起文本文件中原始的源代码语句,字节码的运行速度要快得多. 如果Py