精华内容
下载资源
问答
  • 交互式执行eval
    2021-01-13 20:48:11

    我有一些代码,比如:try:

    c = compile(s, COMPILE_STRING_FN, "single")

    except Exception as e:

    answer = (idx, "compile-exception", (e.__class__.__name__, str(e)))

    else:

    try:

    ret = eval(c, globals, locals)

    except Exception as e:

    answer = (idx, "eval-exception", (e.__class__.__name__, str(e)))

    else:

    if ret is not None:

    try:

    ret = str(ret)

    except Exception as e:

    ret = "" % (e.__class__.__name__, str(e))

    answer = (idx, "return", ret)

    这并不像预期的那样工作,因为ret总是None-值(如果有的话)将被打印出来。这不是我想要的-我想把它放在ret中。在

    似乎"single"对我来说不是正确的编译模式。而且,s = "def f(): return 42"不起作用。在

    但是,"eval"也不是,因为我想支持任何命令,而不仅仅是单个表达式。在

    而对于模式"exec",我也不会得到返回值。在

    那么,解决办法是什么呢?在

    更多相关内容
  • 具有交互式Go REPL,行编辑和代码完成功能的独立可执行文件:只需从命令行运行gomacro ,然后键入Go代码。 例子: $ gomacro [greeting message...] gomacro> import "fmt" gomacro> fmt.Println("hello, world!")...
  • eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。即变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果。语法eval(expression[, globals[, locals]])...

    eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。即变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果。

    语法

    eval(expression[, globals[, locals]])

    expression : 表达式。

    globals : 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

    locals : 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

    命名空间:

    python是用命名空间来记录变量的轨迹的,命名空间是一个dictionary,键是变量名,值是变量值。

    在一个 Python 程序中的任何一个地方,都存在几个可用的名字空间。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变 量。

    每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间, 任何模块均可访问它,它存放着内置的函数和异常。

    python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。可以用print (locals())来查看该函数体内的所有变量名和变量值。

    参数查找:

    当后两个参数都为空时,很好理解,就是一个string类型的算术表达式,计算出结果即可。等价于eval(expression)。

    当locals参数为空,globals参数不为空时,先查找globals参数中是否存在变量,并计算。

    当两个参数都不为空时,先查找locals参数,再查找globals参数。

    例子:

    1、简单表达式print(eval('1+2'))

    输出结果:3

    2、字符串转字典print(eval("{'name':'linux','age':18}")

    输出结果:{'name':'linux','age':18}3、传递全局变量print(eval("{'name':'linux','age':age}",{"age":1822}))

    输出结果:{'name': 'linux', 'age': 1822}4、传递本地变量

    age=18

    print(eval("{'name':'linux','age':age}",{"age":1822},locals()))

    输出结果:{'name': 'linux', 'age': 18}

    展开全文
  • if len(sys.argv) > 1: fun_name = eval(sys.argv[1]) fun_name() else: print '缺失参数' except NameError, e: print e print '未定义的方法[%s]' % sys.argv[1] def fuck(): print 'This is a ...

    展开全部

    话不多e5a48de588b662616964757a686964616f31333337616566说

    直接上代码:# encoding: utf-8

    __author__ = 'zhanghe'

    import sys

    def test():

    """

    命令行测试python调用自定义方法

    """

    print sys.argv

    try:

    if len(sys.argv) > 1:

    fun_name = eval(sys.argv[1])

    fun_name()

    else:

    print '缺失参数'

    except NameError, e:

    print e

    print '未定义的方法[%s]' % sys.argv[1]

    def fuck():

    print 'This is a test!'

    if __name__ == '__main__':

    test()

    """

    sys.argv[0] 文件名

    sys.argv[1] 命令行输入的参数1

    sys.argv[2] 命令行输入的参数2

    测试用例:

    $ python /home/zhanghe/code/python/test/test_sys_arg.py

    $ python /home/zhanghe/code/python/test/test_sys_arg.py fuc

    $ python /home/zhanghe/code/python/test/test_sys_arg.py fuck

    """

    展开全文
  • Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应。  Node 自带了交互式解释器,可以执行以下任务: 读取 - 读取用户...
  • Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。 Node 自带了交互式解释器,可以执行以下任务: ...
  • Node 自带了交互式解释器,可以执行以下任务:  读取 – 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。  执行执行输入的数据结构  打印 – 输出结果  循环 – 循环操作以上步骤直到用户
  • Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应。 Node 自带了交互式解释器,可以执行以下任务: 读取 – 读取用户...
  • 为什么和何时由于强大的脚本宿主引擎WSH没有提供交互式控制台,即 。 js.js使用内置的eval()将WSH的功能转换为交互式控制台。 这样您就可以立即执行; 例如使用Math对象和运算符制作一个高级计算器; 使用...
  • 【本文章的地址为:【Python】用eval、exec、compile函数做一个伪交互式编程窗口】 闲的胃疼的我,明明各种大事有如天灾一样砸我头上我还不务正业搞这些没用的东西。 这东西单独用当然觉得很没用,甚至觉得没有...

    【未经个人同意不得以各种方式转载本文章,该文章仅发布于CSDN】

    【本文章的地址为:【Python】用eval、exec、compile函数做一个伪交互式编程窗口



    闲的胃疼的我,明明各种大事有如天灾一样砸我头上我还不务正业搞这些没用的东西。
    这东西单独用当然觉得很没用,甚至觉得没有一点意义,毕竟我还没做出成品。花了一晚上时间才做出来的伪交互式觉得自己好nb好nb能以假乱真,至于和真正的交互式有没有使用上的差别我也不好说毕竟我也不懂,这代码我是靠感觉一点一点去码出来的,(各种有如黑盒般的报错整的我头皮发麻



    运行效果:

    (算是以假乱真的程度了,但我还不知道这代码有没有问题毕竟是大概感觉没问题才发的
    伪交互式脚本

    代码可以直接使用

    #这脚本为啥没有出现惯用的“XJ_”式命名习惯呢?为啥没写出一个类出来呢?
    #因为这代码只是我一点一点尝试然后码出来的一个阶段性成果罢了,
    #如果在不知道逻辑关系、无法完成功能的情况下还硬着写类的话那只会烦中添乱,
    #只有获得了明显的运行结果后才想着如何封装出自己想要的形状。
    #这边的个人小建议:试完代码后不要急着投入使用要先封装起来至少封装成函数注明下功能参数返回值啥的要不然到时候一堆手尾(别名shi山)直接逼到你自暴自弃得想重开新项目(然后又继续堆粪?
    
    text=""#待执行的字串
    holdOn=False#判断是否多行输入
    while(True):
        text_input=input("..." if holdOn else ">>>")
        text=text+text_input+'\n'
        if(holdOn==False and len(text_input)):#如果当前是第一行输入,并且当前输入不为空
            try:
                code=compile(text,'','eval')#尝试作为eval进行编译
                rst=eval(code)#执行代码
                text=''#【执行后清空记录】
                if(rst):#如果结果不空那就输出结果
                    print(rst)
            except:
                try:
                    code=compile(text,'','exec')#尝试作为exec进行编译【进行语法检查】
                    exec(code)#执行代码
                    text=''#执行后清空记录
                except Exception as err:
                    if(str(err).count("unexpected EOF")):#如果只是EOF错误那么说明是多行输入,置holdOn为真
                        holdOn=True
                        continue
                    print(err)#输出错误
                    text=''#【清空记录】
        elif(holdOn==True):#如果当前并不是第一行输入
            if(len(text_input)==0):#如果当前输入为空
                holdOn=False
            try:
                code=compile(text,'','exec')#尝试作为exec进行编译【进行语法检查】
                if(holdOn):#如果holdOn为真,代表代码还没输入完毕
                    continue
                exec(code)#执行代码
                text=''#【执行后清空记录】
            except Exception as err:
                if(str(err).count("unexpected EOF") and holdOn):#如果是EOF错误并且holdOn为真那么就继续,否则就是输入的代码段有问题
                    continue
                print(err)#输出错误
                text=''#【清空记录】
                holdOn=False
    
    

    如果说这代码有多装b呢,好像真的没啥可以秀的,顶多就在桌面放着个py脚本双击下就能进交互式(而且还不知道靠不靠谱),让正在苦学py的学子们看了直呼nb,但估计会接着下一句“你这东西有啥用的?不就放了个py脚本在桌面双击一下就进交互式吗,我还不如Win+R运行cmd执行py还来得方便呢”

    展开全文
  • IZK:互动动物园管理员 izk是一个现代而简单的izk外壳,具有自动完成功能,历史搜索,vi绑定,语法突出显示和漂亮的打印功能。 安装 要安装izk ,只需运行 $ pip install izk izk仅适用于Python 3。 我不打算...
  • Python-交互式编程介绍

    2021-01-19 15:59:32
    这种交互式的编程环境,我们也可以称之为REPL,即读取(Read)输入的内容,执行Eval)用户输入的指令,打印(Print)执行结果,然后进行循环(Loop),Python支持交互式编程。
  • python的交互式编程

    千次阅读 2019-11-09 08:35:17
    这种交互式的编程环境,我们也可以称之为REPL,即读取(Read)输入的内容,执行(Eval)用户输入的指令,打印(Print)执行结果,然后进行循环(Loop),Python支持交互式编程。 一、Python的交互式编程 二、Pycharm里进入...
  • Node.js REPL(Read Eval Print Loop 交互式解释器) 表示一个电脑的特定环境,类似于 Windows 系统的终端(命令行)或 Unix/Linux shell,可以在终端中输入命令,并接收系统的响应。 简单的说,Node.js REPL 就是 ...
  • Python 中的可执行对象 eval,exec 和 compile 与其在深度学习训练中的应用实例 eval 计算指定表达式的值。也就是说它要执行的python代码只能是单个表达式(注意eval不支持任何形式的赋值操作),而不能是复杂的代码...
  • Epiforecast评分和交互式评估工具。 贡献步骤 从dev创建一个新分支 在dev创建拉取请求 分公司main是生产分公司。 发布就绪后,分支dev将合并到main中。 建筑 该项目需要最新版本的gnu / make和docker。 构建使用...
  • Tinker 实现 Laravel 命令行交互式 Shell由 学院君 创建于2年前, 最后更新于 1年前版本号 #19508 views4 likes0 collectsREPL 与 PsySHLaravel 自带了一个功能强大的 REPL —— Tinker,所谓 REPL,是 Read–Eval–...
  • 于是百度了下,发现 whiptail 支持这个,并且 Ubuntu 自带这玩意,并且在百度上找到了参考链接——交互式shell脚本对话框----whiptail指令。于是,准备开工。 主脚本Interactive.sh 代码如下—— #!/bin/bash #
  • 它是一个REPL(Read-Eval-Print Loop)工具,是一个交互式的命令行工具,可以用于执行 Java 语言的变量声明、语句和表达式,而且可以立即看到结果。因此,使用该工具可以很方便地学习 Java 或测试 Java 的新 API。对于...
  • 寻找命令文件,执行指令; (3)前一个命令完成后才继续显示命令提示符%,等待用户输入下一条命令; (3)如果输入“exit”或“logout”,则退出shell. (4)允许命令参数间有多个空格,也允许命令前后有空格 (5)支持输出...
  • 在为我的编程语言实现解释器时,我首先想到了一个简单的控制台窗口,该窗口允许用户输入一些代码,然后将其...Python / Ruby交互式控制台(IDLE,irb)如何"共享"代码? 输入的代码如何处理?例:>> def x:&g...
  • 当前最著名的交互式编程环境莫属Jupyter Notebook了,程序员可以启动一个交互的Session,在这Session中编写代码、执行程序、获取结果,所见即所得。 交互式编程的优势包括: 快速启动一个程序:程序员不需要“编译...
  • 24.OpenCV的交互式前景提取 文章目录前言一、交互式前景提取二、OpenCV-Python资源下载总结 前言   人工干预(体现交互)的方法将前景从图像中分割或提取出来。 一、交互式前景提取   交互式前景提取的基本...
  • 交互式 mongo shell大部分的 mongodb 教程,在第一章都会讲解这种方式。mongo 127.0.0.1:27017use testdb.users.findOne()2. mongo --eval 运行一段脚本不进入交互模式,直接在 OS 的命令行下运行一段mongodb脚本。...
  • Klipse是一个Javacript插件,用于在技术博客中嵌入交互式代码段。 参见示例 获得有关Klipse的付费支持 从技术上讲,Klipse是一小段javascript代码,用于评估浏览器中的代码段,并且可以在任何网页上插入。 如果您...
  • ) #对应注释掉的矩阵定义赋值 第二种 eval(input())函数 eval(字符串) 能够以python表达式的方式解析并执行字符串,并将返回结果输出。输入list接收list,输入int j接收int。示例如下 people = input() relationship ...
  • 此外,在今年的交互式和社交 iGibson 挑战赛中,我们结合 iGibson 模拟器、Google 的扫描对象数据集,以及在现实人类环境中模拟的行人,深入探讨了交互式和社交导航,例如机器人如何学习与环境中的人和对象互动。...
  • Tinker 实现 Laravel 命令行交互式 Shell由 学院君 创建于2年前, 最后更新于 1年前版本号 #19508 views4 likes0 collectsREPL 与 PsySHLaravel 自带了一个功能强大的 REPL —— Tinker,所谓 REPL,是 Read–Eval–...
  • 03-交互式解释器

    2020-09-08 15:15:29
    Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。 REPL 的交互式的编程环境可以实时的验证你所...
  • 简介Java 9 正式版已于当地时间的 9 月 21 日(北京时间大约是9月22日凌晨)如期发布。可前往Oracle 官网下载。Java 9 没有像 Java 5/Java 8 那样引入新的...特性▶ 交互式命令行(JEP 222: jshell: The Java Shell...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,295
精华内容 5,718
热门标签
关键字:

交互式执行eval