我有两个文件,app.py
和database.py
在同一个目录中。
我主要有以下代码段:
应用程序类型
import database
db = "demo_database"
print(database.show_database_information())
数据库.py
from app import db
database_username = "root"
database_password = "password"
def show_database_information():
information = {}
information["filename"] = db
information["username"] = database_username
information["password"] = database_password
return information
当我尝试运行app.py
时,出现以下错误:
Traceback (most recent call last):
File "K:\PyPrac\circular_call\app.py", line 1, in <module>
import database
File "K:\PyPrac\circular_call\database.py", line 1, in <module>
from app import db
File "K:\PyPrac\circular_call\app.py", line 3, in <module>
print(database.show_database_information())
AttributeError: module 'database' has no attribute 'show_database_information'
然后我更新了app.py
并包含了__main__
检查,如下所示:
应用程序类型
import database
db = "demo_database"
if __name__ == '__main__':
print(database.show_database_information())
现在它运行平稳,没有任何错误。你知道吗
我有几个问题
__main__
作用域之后运行?你知道吗
我能理解的如下。也许有更专业的人可以详细说明!你知道吗
if __name__ == '__main__':
此条件用于检查python模块是直接运行还是导入。你知道吗__name__
是该模块的名称,而不是main。因此,在这种情况下,最好调用if __name__ == '__main__':
伙计!!你正在创造一个循环的时刻。让我告诉你怎么做。你知道吗
但是从
database.py
你从app导入了db。这就产生了一个循环力矩。你知道吗另一方面
这使您
database.py
成为模块的名称,而不是__main__
,这就是它工作的原因。没有什么神奇的:)更新:将
from app import db
这一行放入函数show_database_information()
这是你的热修复程序。你知道吗相关问题 更多 >
编程相关推荐