使用变量进行导入

时间:2011-01-21 11:21:53

标签: python python-3.x python-import

我有以下模式:

databasename = "mydatabase"
import databasefunctions

在数据库函数中我有以下方法。

def checkStatusOfDatabase(database=databasename):

但是我收到一条错误消息:NameError:在定义checkStatusOfDatabase的行上没有定义名称'databasename'。

我当然可以在databasefunctions模块中移动databasename的定义,但这不适合我的设计。我还能如何实现主模块中定义的数据库名称作为任何导入模块的默认值。

2 个答案:

答案 0 :(得分:4)

你不能(也不应该)这样做;这样做会导致在没有主模块的情况下导入databasefunctions是不可能的。但是,您可以实现如下默认值:

# databasefunctions
DEFAULT_NAME = ""
def checkStatusOfDatabase(database=DEFAULT_NAME):

# main
import databasefunctions
databasefunctions.DEFAULT_NAME = "mydatabase"

答案 1 :(得分:0)

您可以使用__builtin__模块

import __builtin__
__builtin__.foo = 'bar'

当您执行类似的访问方法时,可以从所有其他模块访问它。您可以使用它并执行此操作:

import __builtin__
dbName = __builtin__.get('foo', 'ham') # dictionary access with default return
def checkStatusOfDatabase(database=dbName):
    ...