【问题标题】:Define a custom function in a function in Python在 Python 中的函数中定义自定义函数
【发布时间】:2020-09-20 09:20:40
【问题描述】:

我正在用 Python 制作一种编程语言。我希望能够通过键入来运行函数:

task $function:
    log "Hey!"

然后你可以通过键入来调用它:

$function

现在,我有这个代码:

def runFunction(self, f):
    ## Here's where I need help. How will you make a function that runs a function that doesn't exist in 
    ## the code?
...

elif i == 'task':
    self.string = line[5:]
    self.output = self.string.replace('{', '')
    self.function = self.output.replace('}', '')
...

elif i not in self.keywords and '$' in i:
    if i == self.function:
        self.runFunction(self.function)

我应该怎么做才能创建runFunction() 函数?

【问题讨论】:

  • 我不太了解您需要帮助的具体内容。您在定义函数(第一个代码块)或执行函数(第二个代码块)时遇到问题吗?您的问题暗示后者,但如果您已经管理了第一部分,那么根据定义,您有一个可以执行的功能。
  • @MisterMiyagi 实际上我两者都有问题。我需要能够定义函数并执行它们。抱歉含糊其辞,我才编程几个月。
  • 如果您首先要寻求有关如何翻译代码的帮助,我们必须知道代码的含义——即语言是如何定义的。如果您是编程新手,那么您可能总体上缺乏很多编程语言本身的经验;您可能想从更简单的语言开始,例如algebraic ones 第一。
  • 不,我知道 Python。我只是在试验,走出我的舒适区去试验,也许可以扩展我的知识。我可以用 Python 制作应用程序,而且我也知道如何使用 tkinter。这只是我在尝试。
  • 如果你想支持递归、作用域变量、类型等,你真的需要学习一些编程语言设计的基础知识,比如@MisterMiyagi 提到的。

标签: python python-3.x


【解决方案1】:

你能做什么?

您可以使用名为 eval() 的 Python 内置函数,它可以让您动态评估表达式。

解决方案

def runFunction(self, f):
    eval(f)

其中 f 必须是字符串

如果你想创建函数:

您可以使用可以评估字符串的 exec()。

演示:

exec("def myFunction(a,b): return a + b")

并像使用它

eval("myFunction(1,2)")

【讨论】:

  • 感谢您的回答!一个问题,我也需要能够定义一个函数。首先,你需要定义一个函数,然后你就可以执行它了。
  • 我刚刚编辑了答案。使用 exec() python 内置函数,您可以创建函数。如果我的回答有用并解决了您的问题,请不要忘记将其标记为正确。 @ineedhelp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 2010-10-17
相关资源
最近更新 更多