是否有与php类似的语法';python中的s$$变量

是否有与php类似的语法';python中的s$$变量,python,django,Python,Django,python中是否有类似于php的$$变量的语法?我实际尝试的是基于一个值加载一个模型 例如,如果值为Song,我想导入Song模块。 我知道我可以使用if语句或lambada,但是类似于php的$$变量的东西会非常方便 我所追求的与此类似 from mypackage.models import [*variable] 然后在视图中 def xyz(request): xz = [*variable].objects.all() *变量是在设置中定义的值,也可以来自coman

python中是否有类似于php的$$变量的语法?我实际尝试的是基于一个值加载一个模型

例如,如果值为Song,我想导入Song模块。 我知道我可以使用if语句或lambada,但是类似于php的$$变量的东西会非常方便

我所追求的与此类似

from mypackage.models import [*variable] 
然后在视图中

def xyz(request): 
    xz = [*variable].objects.all() 

*变量是在设置中定义的值,也可以来自comandline。它可以是项目中的任何模型。

因此您知道一般概念,您试图实现的就是所谓的“反射式编程”

def load_module_attr (path):
    modname, attr = path.rsplit ('.', 1)
    mod = __import__ (modname, {}, {}, [attr])
    return getattr (mod, attr)

def my_view (request):
    model_name = "myapp.models.Song" # Get from command line, user, wherever
    model = load_module_attr (model_name)
    print model.objects.all()
您可以在这里的维基百科条目中看到几种语言的示例


我很确定您想要
\uuuuu导入

请阅读以下内容:

此函数由import语句调用。它可以被替换(通过导入内置模块并分配给
内置。\uuuuu import\uuuu
)以更改import语句的语义,但现在使用导入挂钩通常更简单(请参见
PEP 302
)。直接使用
\uuuuuu import\uuuuu()
是很少见的,除非您想导入一个只有在运行时才知道名称的模块


似乎您希望加载手头上所有可能匹配的模块/模型,并根据请求选择要使用的特定模块/模型。您可以使用“globals()”,它返回全局级别变量的字典,可通过字符串索引。所以,如果你做一些像globals()['Song'],它会给你歌曲模型。这与PHP的$$非常相似,只是它只获取全局范围的变量。对于局部作用域,必须调用locals()

下面是一些示例代码

from models import Song, Lyrics, Composers, BlaBla

def xyz(request):
    try:
        modelname = get_model_name_somehow(request):
        model =globals()[modelname]
        model.objects.all()
    except KeyError:
        pass # Model/Module not loaded ... handle it the way you want to 

我不确定你是否理解我的问题。我试图达到的目标与此类似。从mypackage.models导入[*变量],然后在视图中定义xyz(请求):xz=[*变量].objects.all()*变量是在设置中定义的值,也可以来自comandline。它可以是项目中的任何模型。所以你的方法对这个问题并没有真正的帮助。我还没有测试过它,但从语法上看,它似乎是解决问题的方法。