不明白变量如何在__init__.py中起作用

问题描述 投票:0回答:1

首先,我在__init__.py文件中有一个变量和函数:

dbname = 'dbname'
def crud(_dbname):
    global dbname
    dbname = _dbname
    print(dbname) # the value here is correct

    from . import edit
    edit.render()

edit.py里面,我print(dbname)

from . import *

def render():
    print(dbname) # wrong value

然后我从其他文件中调用每个url中的这个包方法:

from .crud import crud
@admin.route('/user/', methods=['GET', 'POST'])
@login_required
def adminuser():
   crud('user')

from .crud import crud
@admin.route('/group/', methods=['GET', 'POST'])
@login_required
def admingroup():
   crud('group')

它总是打印user?或者,如果我在crud方法和edit.py文件中打印dbname,它们会打印不同的值。

dbname已在crud中更新,但无法在edit.py文件中看到新值。

python package global-variables
1个回答
0
投票

虽然我不能理解你,因为你的解释真的令人困惑。我想你是用这种方式打印dbname

# edit.py
from xxx import dbname

print(dbname)
crud(another_value)
print(dbname)

然后你会发现你得到了相同的价值观。那是因为当你from xxx import dbname,你得到原始dbname的本地副本。要获得原始dbname,您需要使用sys.modules["xxx"].dbname

© www.soinside.com 2019 - 2024. All rights reserved.