结合代码论述Python的动态执行.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
结合代码论述Python的动态执行

结合代码论述Python的动态执行特性 U201110678张永钰摘要:Python是一种动态解释型语言,本文主要研究其动态特性。本文通过结合代码实例,通过分析Python语言的变量动态特性、Python脚本动态执行过程以及类与模块中的动态特性,详细展现了Python语言的动态执行特性。关键词:Python、动态特性一、python的动态python是一门动态解释型语言,本文主要研究其动态特性。所谓动态是什么呢?其实就是当且仅当程序运行时才能知道对象的类型。def func(arg): print(hello world %s % arg)if __name__ == __main__: func(.)例如上面的func函数,arg是什么定义类型的,会传入什么样的参数程序(在func函数的作用域内)一无所知。但是,参数一旦传入,程序能通过参数来找到参数对应的类型,从而判断能否进行print操作。那么,对象本身必须包含对应的类型信息(以下称元信息)。动态类型以及由它提供的多态性,这个概念无疑是Python语言的简洁性和灵活性的基础。在Python中,并不会声明脚本中使用的对象的确切的类型。事实上,程序甚至可以不在意特定的类型;相反地,它们能够自然地适用于更广泛的场景下,因为动态类型是Python语言灵活性的根源。二、Python中的动态变量在Python中,并不会声明中使用的对象的确切的类型。事实上,程序甚至可以不在意特定的类型;相反地,它们能够自然地适用于更广泛的场景下,因此动态类型是Python语言灵活性的根源。1)变量创建?一个变量,例如a,当代码第一次给它赋值时就被创建了,之后的赋值将会改变已创建的变量名的值。从技术上来讲,python在代码运行之前先检测变量名,可以当成是最初的赋值创建变量2)变量类型?变量用于不会有任何和它关联的类型信息或约束。类型的概念是存在于对象中而不是变量中。变量原本是通用的,她只是在一个特定的时间点,简单地引用了一个特定的对象而已3)变量使用?当变量出现在表达式中时,它会马上被当成引用的对象所代替,无论这个对象是什么类型,此外,所有的变量必须在其使用前明确地赋值,使用未赋值的变量会产生错误。从概念上来说,python会执行三个不同的步骤去完成这个请求:1. 创建一个对象代表值32. 创建一个变量a,如果它还没有创建的话3. 将变量与新的对象3连接(引用,指针指向)如图.1 所示的是一个在python中的内部结构。变量和对象保存在内存的不同部门,并通过连接相关联。变量总是连接到对象,并且绝不会连接到其他的变量上,但大部分的对象可以连接到其他的对象(例如:一个列表对象能够连接到它所包含的对象)图1如图.1:变量名和对象,在运行a=3后,变量a变成对象3的引用,在内部,变量事实上是到对象内存空间的一个指针在python中从变量到对象的连接称为引用,也就是说,引用是一种关系,以内存中的指针的形式显示。一旦变量被使用(引用),python自动跟随这个变量到对象的连接。变量是一个系统表的元素,拥有指向对象的连接的空间。对象是被分配的一块内存,有足够的空间去表现他们所代表的值。引用是自动形成的从变量到对象的指针。至少从概念上来讲,在脚本中,每一次用过运行一个表达式生成一个新的值,python都会创建一个对象去表现这个值。从内部来看,作为一种优化,python缓存了不变的对象并对其进行复用,例如,小的int和字符串。但是,从逻辑的角度来看,这工作起来就像每一个表达式结构的值都是一个不同的对象,每一个对象都有不同的内存。从技术来讲,对象有更复杂的结构而不仅仅是有足够的空间去表现她的值那么简单。每一个对象都有两个标准的头部信息:一个类型标识符去标示这个对象的类型,以及一个引用的计数器,用来决定是不是可以回收这个对象。三、在python中动态执行包含python脚本的字符串import sysimport StringIO# create file-like string to capture outputcodeOut = StringIO.StringIO()codeErr = StringIO.StringIO()code = def f(x): x = x + 1 return xprint This is my output.# capture output and errorssys.stdout = codeOutsys.stderr = codeErrexec code# restore stdout and stderrsys.stdout = sys.__stdout__sys.stderr = sys.__stderr__print f(4)s = codeErr.getvalue()prin

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档