不明白变量如何在__init__.py中起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不明白变量如何在__init__.py中起作用相关的知识,希望对你有一定的参考价值。
首先,我在__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文件中看到新值。
答案
虽然我不能理解你,因为你的解释真的令人困惑。我想你是用这种方式打印dbname
:
# edit.py
from xxx import dbname
print(dbname)
crud(another_value)
print(dbname)
然后你会发现你得到了相同的价值观。那是因为当你from xxx import dbname
,你得到原始dbname
的本地副本。要获得原始dbname
,您需要使用sys.modules["xxx"].dbname
。
以上是关于不明白变量如何在__init__.py中起作用的主要内容,如果未能解决你的问题,请参考以下文章