热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python编译()函数

Python编译()函数原文:https://www.geek

Python 编译()函数

原文:https://www.geeksforgeeks.org/python-compile-function/

Python compile()函数以源代码为输入,返回一个准备执行的代码对象,这个代码对象以后可以被 exec()函数执行。

语法编译(源、文件名、模式、标志=0,dont _ inherit = False,optimize=-1)

参数:


  • 来源–可以是普通字符串、字节字符串或 AST 对象

  • 文件名-这是读取代码的文件。如果不是从文件中读取的,您可以自己命名。

  • 模式–模式可以是执行模式、评估模式或单一模式。

  • a .eval–如果源是单个表达式。

  • b .exec–它可以取一个包含 Python 语句、类和函数等的代码块。

  • c .single–如果由单个交互语句组成,则使用该语句

  • 标记(可选)和 dont _ inherit(可选)–默认值=0。它注意哪些未来的语句会影响源代码的编译。

  • 优化(可选)–告知编译器的优化级别。默认值-1。



Python 编译()函数示例


示例 Python 中的简单编译()示例。

这里 filename 是 mulstring,exec 模式允许使用 exec()方法,编译方法将字符串转换为 Python 代码对象。

Python 3

# Python code to demonstrate working of compile().
# Creating sample sourcecode to multiply two variables
# x and y.
srcCode = 'x = 10\ny = 20\nmul = x * y\nprint("mul =", mul)'
# Converting above source code to an executable
execCode = compile(srcCode, 'mulstring', 'exec')
# Running the executable code.
exec(execCode)

输出:

mul = 200

示例 2:另一个演示正在编译


计算机编程语言

# Another Python code to demonstrate working of compile().
x = 50
# Note eval is used for single statement
a = compile('x', 'test', 'single')
print(type(a))
exec(a)

输出:


50

示例 3: Python 从文件编译函数

在这个例子中,我们将使用一些字符串显示方法获取 main.py 文件,然后我们读取文件内容并编译它来编码对象并执行它。

main.py:

Python 3

String = "Welcome to Geeksforgeeks"
print(String)

Code: 这里我们将文件内容作为字符串读取,然后编译成一个 Code 对象。

Python 3

# reading code from a file
f = open('main.py', 'r')
temp = f.read()
f.close()
code = compile(temp, 'main.py', 'exec')
exec(code)

输出:

Welcome to Geeksforgeeks

示例 4:使用 eval() 编译()

这里,当源是单个表达式时,使用 eval。

Python 3

# Another Python code to demonstrate
# working of compile() with eval.
x = 50
# Note eval is used for statement
a = compile('x == 50', '', 'eval')
print(eval(a))

输出:

True

应用:



  1. 如果 Python 代码是字符串形式或者是 AST 对象,并且您想要将其更改为代码对象,则可以使用 compile()方法。

  2. compile()方法返回的代码对象稍后可以使用 exec()和 eval()等方法调用,这些方法将执行动态生成的 Python 代码。


推荐阅读
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...
    一、根据题意,填写出空格中的内容Java平台包括三个技术方向,其中J2ME代表____________、J2SE代表___________、J2EE代表 ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
author-avatar
紫逸石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有