我是python编程的新手。如何使用C或C++向python解释器添加新的内置函数和关键字?
发布于 2019-12-17 17:12:29
对于Python3.6及更高版本,请使用import builtins。
# example 1
import builtins
def f():
print('f is called')
builtins.g = f
g() # output = f is called
####################################
# example 2
import builtins
k = print
def f(s):
k('new print called : ' + s)
builtins.print = f
print('abc') # output = new print is called abc发布于 2021-06-10 00:30:56
虽然David Wolever的答案是完美的,但需要再次注意的是,发问者是Python的新手。基本上,他想要的是一个全局函数,这可以通过两种不同的方式来完成……
我认为发问者的解决方案是第二种选择,任何刚接触Python的人都应该考虑同样的问题。
对于高级用户,我同意Wolever的建议,即在内置模块中插入新函数不是一个好主意。然而,用户可能正在寻找一种方法来避免在项目中的每个脚本中导入经常使用的模块。这是一个有效的用例。当然,这些代码对于不是项目一部分的人来说是没有意义的,但这不应该是一个问题。无论如何,这些用户应该查看PYTHONSTARTUP环境变量。我建议在Python文档的索引中查找它,并查看与此环境变量相关的所有链接,看看哪个页面适合您的目的。然而,此解决方案仅适用于交互模式,而不适用于子主脚本。
对于一个全面的解决方案,请查看我已经实现的这个函数:https://drive.google.com/file/d/19lpWd_h9ipiZgycjpZW01E34hbIWEbpa/view
还有另一种方式是扩展或嵌入 Python,这是一个相对复杂的主题。最好在上面阅读Python文档。对于基本用户,我想说的是...
Python扩展意味着向interpreter.
中插入
而且高级用户已经知道他们在做什么了!
发布于 2021-12-10 13:22:30
您可以使用builtins模块。
示例1:
import builtins
def write(x):
print(x)
builtins.write = write
write("hello")
# output:
# Hello示例2:
import builtins
def hello(*name):
print(f"Hello, {' '.join(name)}!")
builtins.hello = hello
hello("Clark", "Kent")
# output:
# Hello, Clark Kent!https://stackoverflow.com/questions/6965090
复制相似问题