首页 > 编程语言 >python执行字段串代码

python执行字段串代码

时间:2023-11-10 21:46:52浏览次数:35  
标签:code name exec python 代码 字段 func eval age

很多时候,我们会让用户自己写代码,然后保持,需要的时候执行,这个时候,保持的代码是字符串,怎么执行呢,这里简单介绍一下

1. eval

如果是单行语句或者表达式可以使用eval执行,如:

eval("2+4+5")

2. exec

如果是多行的代码,可以使用exec执行(可以使用变量,也可以产生变量),如:

lenth=10
code = 'for i in range(1,lenth): print(i)'
exec(code)

3. complie配和types的FunctionType 执行字符串方法

from types import FunctionType
func_str = "def main(age):\n    print(name,age)"
func_code = compile(func_str, '', 'exec')
func = FunctionType(func_code.co_consts[0], globals())
name='test'
func(23)

4. quickjs 执行js的字符串方法

from quickjs import Function
code = 'function main (context){\n  return {"res": context["name"]+context["age"]}\n}'
name = 'main'
f = Function(name, code)
f.set_memory_limit(256 * 1024)
f.set_time_limit(5)
res = f({"name":"test","age":23})
print(res)

 

参考:

python-字符串作为代码执行(exec、eval、locals、compile)

 

标签:code,name,exec,python,代码,字段,func,eval,age
From: https://www.cnblogs.com/276815076/p/17824220.html

相关文章

  • wxFormBuilder + python + wxWidget
    -------------#-*-coding:utf-8-*-#############################################################################PythoncodegeneratedwithwxFormBuilder(version3.10.1-0-g8feb16b3)##http://www.wxformbuilder.org/####PLEASEDO*NOT*EDITTHISFIL......
  • Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入
    从表格中选择数据要从MySQL中的表格中选择数据,请使用"SELECT"语句:示例选择"customers"表格中的所有记录,并显示结果:importmysql.connectormydb=mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",datab......
  • Python七种运算符及其优先级
    例:a=10,b=201、算术运算符运算符描述实例+加-两个对象相加a+b输出结果30-减-得到负数或是一个数减去另一个数a-b输出结果-10*乘-两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200/除-x除以yb/a输出结果2%取模-返......
  • python3: dlt - 数据结构
    python3:dlt-数据结构    一、程序:1[wit@fedoranull]$cattest.py2#!/usr/bin/envpython334567#testthisscript8defmsg():9print("\nhello,python3!\n")101112#runningmsg()13#msg()1415......
  • python计算代码运行时间
    记录一下自己用python编写计算运行时间的代码 时间类importtimeimportnumpyasnp#编写时间类来方便操作classTimer:def__init__(self):self.times=[]#记录时间self.start()defstart(self):#开始时间启动self.start_time=time.time()......
  • 代码写的都队-数据库设计心得博客
    指导老师:刘琴项目:基于隐私保护的众包系统组名:代码写的都队组员:李明胜、桑健康、刘豪奇、杜洋、史涛、夏金茗作者:桑健康我们的项目是基于隐私包含的众包系统。在设计之前,我们先把需求搞清楚。业务需求雇主能发布需求,工人能接单,完成任务。哈哈,听上去还挺简单的,但涉及到雇主取......
  • qt代码积累
    QT自适应电脑分辨率,在main函数中最前端设置如下代码intmain(intargc,char*argv[]){#if(QT_VERSION>QT_VERSION_CHECK(5,6,0))QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);#endifQApplicationa(argc,argv);appapp;returna.ex......
  • python删除二维数组的某一行某一列
    Python删除二维数组的某一行某一列1.简介在Python中,二维数组可以通过列表嵌套的方式实现。删除二维数组的某一行或某一列可以使用Python内置的列表操作方法来实现。在本篇文章中,我将向你介绍如何使用Python来删除二维数组的某一行或某一列。2.删除二维数组的某一行删除二维......
  • 梦断代码 读书笔记 02
    工程师和艺术家软件开发者是工程师还是艺术家。这个问题,总结了软件开发过程中无数细节问题,这些问题统统没有答案。软件开发领域的圣战比宗教中的还要多。从项目管理到软件设计,只有模糊的建议,以经验性方法为主导,估算工期的方法叫“拍”:一拍脑袋有了,一拍胸口干了,一拍大腿坏了,一拍......
  • C代码作业
    题目,用函数求两数中的较大值intcompare(intx,inty){ intz=0; if(x>y) z=x; else z=y; returnz;}intmain(){ inta=0; intb=0; intc=0; scanf("%d%d",&a,&b); c=compare(a,b); printf("%d",c); return0;......