有没有办法让用户定义的Python函数像内置语句一样工作?
可以让用户定义的Python函数像语句一样工作吗?换句话说,我想说:有没有办法让用户定义的Python函数像内置语句一样工作?,python,Python,可以让用户定义的Python函数像语句一样工作吗?换句话说,我想说: myfunc 而不是: myfunc() 不管怎么说,它都会被调用,比如说,print 我已经听到你们都在写关于这是一件多么可怕的事情的回答,我问这个问题很愚蠢,为什么我想这样做,我真的应该做其他的事情,但是请相信我的话,这是我需要做的事情来调试我遇到的问题,它不会被检入或使用,比如,空中交通管制系统。不,这是不可能的 从中可以看到,规范中的简单语句列表没有扩展的余地 此外,print作为语句在Python 3.0中不再存
myfunc
而不是:
myfunc()
不管怎么说,它都会被调用,比如说,print
我已经听到你们都在写关于这是一件多么可怕的事情的回答,我问这个问题很愚蠢,为什么我想这样做,我真的应该做其他的事情,但是请相信我的话,这是我需要做的事情来调试我遇到的问题,它不会被检入或使用,比如,空中交通管制系统。不,这是不可能的 从中可以看到,规范中的简单语句列表没有扩展的余地
此外,
print
作为语句在Python 3.0中不再存在,并被print()
内置函数所取代。不,这是不可能的
从中可以看到,规范中的简单语句列表没有扩展的余地
此外,
print
作为一条语句在Python 3.0中不再存在,而是被print()
内置函数所取代。如果您想要的是在Python语言中添加一条新语句(如print
),那么这并不容易。您可能需要修改lexer、解析器,然后重新编译Python的C源代码。为了方便起见,有很多工作要做。如果您想要在Python语言中添加一条新语句(如print
),那么这并不容易。您可能需要修改lexer、解析器,然后重新编译Python的C源代码。为了方便起见,有很多工作要做。如果要传入参数,则不需要。您可以做一些事情来构建一个滥用\uuu str\uuu
方法的对象,但强烈建议不要这样做。如果要传入参数,还可以使用其他运算符,如重载Not。您可以做一些事情来构建一个滥用\uuu str\uuu
方法的对象,但强烈建议不要这样做。您还可以使用其他操作符,如重载Python 2.x中的print不是一个函数,它是一个语句,就像while和def是语句一样。在Python 2.x中,print不是一个函数,它是一个语句,就像while和def是语句一样。我不会实现它,但如果我实现它,我会给带有myfunc的代码一个特殊的扩展名,编写一个导入钩子来解析文件,添加括号使其成为有效的Python,并将其输入到解释器中。我不会实现这一点,但如果我实现了这一点,我会给带有myfunc的代码一个特殊的扩展名,编写一个导入钩子来解析文件,添加括号使其成为有效的Python,并将其输入解释器。这可能不会解决您的问题,但我还是要提到它。如果myfunc
是模块的一部分,并且您是这样使用它的:
from mymodule import myfunc
myfunc # I want this to turn into a function call
然后你可以这样做:
import mymodule
mymodule.myfunc # I want this to turn into a function call
然后,您可以从mymodule
中删除myfunc
,并重载该模块,使其在每次请求myfunc
成员时调用特定函数。这可能不会解决您的问题,但我还是要提到它。如果myfunc
是模块的一部分,并且您是这样使用它的:
from mymodule import myfunc
myfunc # I want this to turn into a function call
然后你可以这样做:
import mymodule
mymodule.myfunc # I want this to turn into a function call
然后,您可以从mymodule
中删除myfunc
,并重载该模块,使其在每次请求myfunc
成员时调用特定函数。不可能以计划的方式进行,或者不需要大量工作
如果你很大胆和冒险,请阅读这篇关于元循环评估的维基百科文章。Python对自己的编译器/计算器对象有很好的检查和反映,您可以按照这些思路拼凑一些东西
“”“元循环实现适合于扩展该语言
它们是用英文写的,对于编写
与编程语言紧密集成,例如
复杂的调试器。一种用元循环设计的语言
心中的实现通常更适合于在中构建语言
一般来说,即使是与宿主语言完全不同的语言
我相信pypy也在做类似的事情,你可能想调查一下
不可能有计划地进行,或者没有大量工作
如果你很大胆和冒险,请阅读这篇关于元循环评估的维基百科文章。Python对自己的编译器/计算器对象有很好的检查和反映,您可以按照这些思路拼凑一些东西
“”“元循环实现适合于扩展该语言
它们是用英文写的,对于编写
与编程语言紧密集成,例如
复杂的调试器。一种用元循环设计的语言
心中的实现通常更适合于在中构建语言
一般来说,即使是与宿主语言完全不同的语言
我相信pypy也在做类似的事情,你可能想调查一下
我很好奇,在什么情况下可能需要您这样做?为什么不向我们展示您必须调试的内容,我们将向您展示如何在不创建语句的情况下进行调试。Python只有20条左右的语句(如print),您是否试图在调试过程中替换这20条语句中的一条?如果是,哪一个。你有什么具体问题?我对此也很好奇。我不认为那样的言论是可憎的;我只是想不出myfunc()在任何情况下都不会做完全相同的事情。你能解决这些问题吗