2.导入方法
复制代码
导入一个模块
import model_name
导入多个模块
import module_name1,module_name2
导入模块中的指定的属性、方法(不加括号)、类
from moudule_name import moudule_element [as new_name]
复制代码
方法使用别名时,使用"new_name()"调用函数,文件中可以再定义"module_element()"函数。
3.import本质(路径搜索和搜索路径)
moudel_name.py
复制代码
-- coding:utf-8 --
print("This is module_name.py")
name = 'Hello'
def hello():
print("Hello")
复制代码
module_test01.py
复制代码
-- coding:utf-8 --
import module_name
//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg0ODk1Mg==.html
print("This is module_test01.py")
print(type(module_name))
print(module_name)
复制代码
复制代码
运行结果:
E:\PythonImport>python module_test01.py
This is module_name.py
This is module_test01.py
复制代码
在导入模块的时候,模块所在文件夹会自动生成一个pycache\module_name.cpython-35.pyc文件。
"import module_name" 的本质是将"module_name.py"中的全部代码加载到内存并赋值给与模块同名的变量写在当前文件中,这个变量的类型是'module';
module_test02.py
-- coding:utf-8 --
from module_name import name
print(name)
运行结果;
E:\PythonImport>python module_test02.py
This is module_name.py
Hello
"from module_name import name" 的本质是导入指定的变量或方法到当前文件中。
package_name / init.py
-- coding:utf-8 --
print("This is package_name.init.py")
module_test03.py
-- coding:utf-8 --
import package_name
print("This is module_test03.py")
运行结果:
E:\PythonImport>python module_test03.py
This is package_name.init.py
This is module_test03.py
"import package_name"导入包的本质就是执行该包下的init.py文件,在执行文件后,会在"package_name"目录下生成一个"pycache / init.cpython-35.pyc" 文件。
package_name / hello.py
-- coding:utf-8 --
print("Hello World")
package_name / init.py
-- coding:utf-8 --
init.py文件导入"package_name"中的"hello"模块
from . import hello
print("This is package_name.init.py")
运行结果:
E:\PythonImport>python module_test03.py
Hello World
//代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg0NzY0NA==.html
This is package_name.init.py
This is module_test03.py
在模块导入的时候,默认现在当前目录下查找,然后再在系统中查找。系统查找的范围是:sys.path下的所有路径,按顺序查找。
4.导入优化
module_test04.py
复制代码
-- coding:utf-8 --
import module_name
def a():
module_name.hello()
print("fun a")
def b():
module_name.hello()
print("fun b")
a()
b()
复制代码
复制代码
运行结果:
E:\PythonImport>python module_test04.py
This is module_name.py
Hello
fun a
Hello
fun b
复制代码
多个函数需要重复调用同一个模块的同一个方法,每次调用需要重复查找模块。所以可以做以下优化:
module_test05.py
复制代码
-- coding:utf-8 --
from module_name import hello
def a():
hello()
print("fun a")
def b():
hello()
print("fun b")
a()
b()
复制代码
复制代码
运行结果:
E:\PythonImport>python module_test04.py
This is module_name.py
Hello
fun a
Hello
fun b
复制代码
可以使用"from module_name import hello"进行优化,减少了查找的过程。