lua'的Python等价物;s加载文件

lua'的Python等价物;s加载文件,python,function,lua,Python,Function,Lua,在lua中有一个名为loadfile的函数,该函数允许程序将.lua文件解析到当前项目中。所有函数和变量的工作方式都好像它们写在同一个文件中一样 这对于加载插件很有用。我正在尝试将一个电报机器人移植到python,但找不到一个允许我加载.py文件并使函数位于该文件上下文中的函数 我尝试了python的execfile并导入该文件,但这不允许加载文件的函数在初始文件的范围内 (即fileA.py加载fileB.py。fileA具有函数“doThis”。fileB无法使用execfile访问“doT

在lua中有一个名为
loadfile
的函数,该函数允许程序将.lua文件解析到当前项目中。所有函数和变量的工作方式都好像它们写在同一个文件中一样

这对于加载插件很有用。我正在尝试将一个电报机器人移植到python,但找不到一个允许我加载.py文件并使函数位于该文件上下文中的函数

我尝试了python的
execfile
并导入该文件,但这不允许加载文件的函数在初始文件的范围内

(即fileA.py加载fileB.py。fileA具有函数“doThis”。fileB无法使用execfile访问“doThis”)

如何在python中实现与lua的loadfile相同的功能


我使用的是python 2,您通常不应该这样做,因为通配符导入会使代码更难调试,但是:

from other_module import *
这会将
other_module
中定义的所有内容导入当前模块的全局命名空间。这不完全一样,但你会发现它离你很近

execfile("other_module.py", globals())

非常相似,只是它不会将模块缓存在文件B顶部的
sys.modules

中:
来自文件A导入点此
不适用于您?还是我误解了?@TehTris它对我不起作用,因为函数需要能够读取fileA上的变量,就像它们在同一个文件中一样。此外,每次我添加插件时都需要这样做有点乏味。您使用的是python 2还是python 3?我忘了提到,我需要能够从文件中获取一个变量,但每个文件都有一个名为name的变量。(插件)我当前的代码允许我获取变量,但仍然不是全局变量<代码>值={};execfile(文件,值);plugin=values['plugin']不过,我可以用你的答案来解决问题。在这种情况下,你想做的可能是使用空字典的
execfile
操作,
{}
。然后从字典中找出相同的命名对象,并将其放入自己的一个(以插件的名称)中。如果它是一个包含函数的数组,并且我在fileA中创建了一个与fileB中的函数相同的新函数,这是否可行,这是否允许函数像写入文件一样使用fileA中的函数和变量?可以通过构造新的函数对象来实现。我概述了如何做的一部分。基本上,您需要从fileB的函数中提取代码对象,并创建一个使用fileA全局变量的新函数。谢谢,我会在有机会的时候再看这个