【问题标题】:Return `undefined` from Python function with PyV8?使用 PyV8 从 Python 函数返回“未定义”?
【发布时间】:2013-06-08 01:30:15
【问题描述】:

我正在使用 PyV8,我想用 undefined 调用一个 javascript 函数。似乎同时评估 undefinednull 返回 Python 的 None 值:

>>> evaljs("undefined")
None
>>> evaljs("null")
None

当然,问题在于它们在 javascript 中并不相同:

>>> evaljs("undefined === null")
False
False
>>> evaljs("undefined") == evaljs("null")
None
None
True

有什么好的方法可以做到这一点吗?我实际上想编写一个 Python 函数,可从 javascript 调用,它在某些情况下返回 undefined,在其他情况下返回 null

编辑SSCCE-ness:

import PyV8

context = PyV8.JSContext()

def evaljs(s):
    with context:
        res = context.eval(s)
        print res
        return res

【问题讨论】:

  • @bfavaretto:我的意思是我想编写一个返回undefined而不是null的Python函数
  • 我错过了,抱歉。

标签: javascript python undefined v8 pyv8


【解决方案1】:

正如您在此处看到的:null object in Python?,在 Python 中没有 nullundefined,只有 None... 所以您只能在 JavaScript 中表示 undefinednull在 Python 中作为None。 JavaScript 出于自身原因将两者区分开来,据我自己的经验所知,“未定义”对于 JavaScript 来说是相当独特的。

我唯一能想到的就是深入到源代码中,看看在 JavaScript v8 引擎中是如何跟踪 undefined 和 null 的,并在评估具有 null 或 undefined 结果的 JavaScript 语句时尝试让该对象返回。 .. 但这是一项相当艰巨的任务。

【讨论】:

    【解决方案2】:

    答案是:在当前版本中没有办法做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 2019-09-02
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      相关资源
      最近更新 更多