南阳网站建设制作价格,网站域名设计找谁,公司的网站可以用个人备案吗,巴彦淖尔网站建设compile() 函数是什么 compile() 函数将一个字符串编译为字节代码。 compile将代码编译为代码对象#xff0c;应用在代码中可以提高效率。 语法 compile(source, filename, mode, flags0, dont_inheritFalse, optimize-1) 参数
source#xff1a;表示要编译的源代码字符串、…compile() 函数是什么 compile() 函数将一个字符串编译为字节代码。 compile将代码编译为代码对象应用在代码中可以提高效率。 语法 compile(source, filename, mode, flags0, dont_inheritFalse, optimize-1) 参数
source表示要编译的源代码字符串、AST对象或代码对象。filename表示源代码的文件名。如果源代码不是从文件中读取的可以使用一个虚拟的文件名。mode表示编译模式可以指定为 exec, eval, single。flags可选参数用于指定编译时的标志。可以使用ast.PyCF_*常量进行按位或运算的组合用于控制编译过程中的不同行为。dont_inherit可选参数如果设置为True则编译时不会继承当前作用域的符号表。optimize可选参数指定编译优化级别的标志。默认值为-1表示使用默认优化级别。
返回表达式执行结果。 示例 首先code下新建demo.py
from code.cal import add,mul
from code.sqrt import sqrt__all__ [ add,mul,sqrt]cal.py
def add(a,b):return abdef mul(a,b):return a*bsqrt.py
def sqrt(a):return a**2编写调用脚本test.py
import traceback
import os
import requests
import threading
import time
import json
import logging
loglogging.getLogger()def compile_funcs(codefile,funname_list):Args:codefile: Path of Pythons Code filefunname_list: list of function namesReturn: dict of func info try:#读取代码with open(codefile) as f:codef.read()#将字符串编译为字节代码methods_objcompile(code,,exec)scope {}exec函数族的作用是根据指定的文件名找到可执行文件并用它来取代调用进程的内容;换句话说就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件也可以是任何Linux下可执行的脚本文件exec(methods_obj,scope)fun_object{}for name in funname_list:fun_obj scope.get(name,None)fun_object[name] fun_objreturn fun_objectexcept Exception as e:traceback.print_exc(e)return None#函数名称
func_lists[add,mul,sqrt]
#传入code下的demo.py
func_dict compile_funcs(./code/demo.py,func_lists)
#获取返回对象
add func_dict[add]
mul func_dict[mul]
sqrt func_dict[sqrt]
#传参调用
c add(2,3)
d mul(3,3)
e sqrt(5)
print(fadd(2,3){c})
print(fmul(3,3){d})
print(fsqrt(5){e})结果
add(2,3)5
mul(3,3)9
sqrt(5)25总结 compile() 函数的应用场景包括 1、动态执行代码可以将源代码字符串编译为代码对象然后使用exec()函数执行。 2、动态求值表达式将单个表达式编译为代码对象然后使用eval()函数求值。 3、AST分析和修改将源代码字符串编译为AST对象然后使用ast模块进行分析和修改操作例如静态代码分析、代码转换等。 在使用某些代码需要提炼出公共的代码块是可以使用方便后续的使用和添加