1.import 导入问题
导入也是一种启动程序的方法。
导入从本质上讲,就是载入另一个文件,并能够读取那个文件的内容。
更大的程序往往以多个模块文件的形式出现。一个模块文件被设计成主文件,或叫做顶层文件(就是那个启动后能够运行整个程序的文件)
导入必须找到文件,将其译成字节码,并且运行代码。
模块往往就是变量名的封装,被认作是命名空间。在一个包中的变量名就是所谓的属性:也就是说,属性就是绑定在特定对象上的变量名。
from 和 import很相似,只不过增加了对载入组件的变量名的额外的赋值。从技术上讲,这是从模块的属性进行了拷贝,以便能够成为接收者的一个简单的变量。
通过import得到了具有属性的模块,而使用from时,则会获得文件变量名的拷贝。
一个模块被另一个程序第一次引入时,其主程序将运行。
每个模块都有一个 name 属性,当其值是 __main__时, 表明该模块自身在运行,否则是被引入。
下面这幅图就是说, 如果__name__
属性不是__main__
时,其导入结果是什么样的。
这里又涉及到 __name__
属性
python文件在创建之初为自动加载一下内建变量,其中包括__name__
。
作用:
__name__
属性可以标识模块的名字,可以显示一个模块的某个功能是被自己执行还是被别的文件调用执行。也就是说,__name__
属性可以表示当前程序运行在哪一个模块中。
常见报错
如果碰到报错:TypeError: 'module' object is not callable
,那么最有可能就是因为import导入包的姿势不对❎。通常来说导入包的方法是:
from 包名.模块名 import 类名/方法名 【其中,包名就是文件夹名;模块名就是python文件名】
- import 包,因为变量名相同,导致别的包中的变量覆盖了当前包的方法、包名