模块初识

1.模块的定义

本质上就是.py结尾的python文件,用来从逻辑上组织python代码(变量,函数,类,逻辑),为了实现一个功能。

2.模块的调用方法

首先编写一个模块文件:

 1 name='Tao'
 2 
 3 def say():
 4     print(name)
 5 
 6 def logger():
 7     print('logger')
 8 
 9 def login():
10     print('login')

方法一:import module1,module2

 1 print(module_test.name) 2 module_test.say() 

方法二:from ... import ...

1 from module_test import say
2 say()
3 
4 from module_test import logger
5 logger()
6 
7 from module_test import login
8 login()

from import 与import的区别(看import后面): 

    a.import module_test调用时需要加模块名前缀module_test.say()。

    b.from module_test import say调用时直接say()不用加模块名前缀。

方法三:from ... import ... as ...

 1 from module_test import login as login_tao #调用时更改函数名 2 login_tao() 

3.调用模块的本质

a.import module_test的本质

    将module_test内的所有代码解释一遍统一赋值给了module_test的变量,调用的时候加上module_test的前缀。

b.from module_test import login的本质

    只找login这个函数的代码,相当于把module_test模块中的login代码解释赋值给了login调用时不用加模块前缀,直接调用。

4.包(package)

定义:用来从逻辑上组织模块的,放模块的,本质是一个目录(必须带有一个__init__.py文件)。

导入包的方法:import 包名。

导入包的本质:导入包的本质就是执行pack里面的__init__.py文件,即import 包名这行代码直接执行__init__.py文件。

    运用导入包的本质,即导入包的本质就是执行pack里面的__init__.py文件调用模块。通过在__init__.py文件内写入导入模块代码,可实现导入包即调用模块的功能

__init__.py文件:

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # Author:James Tao
4 
5 print('from the package')
6 
7 from . import module_test#从当前目录下导入module_test,‘.’代表__init__的路径即当前目录

执行调用:

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 # Author:James Tao
4 
5 #导入包的方法
6 import pack #执行__init__.py,调用module_test
7 pack.module_test.login()

5.当模块在不同级目录下时,模块的调用方法

a.调用同级文件中的module时直接from 文件名 import 模块名。

 1 from pack import module_test 2 module_test.login() 

b.直接加环境变量,将模块所在文件的地址加到sys.path中。

1 print(sys.path)
2 day5_DIR=os.path.dirname(os.path.abspath(__file__))
3 pack_DIR=day5_DIR+'\'+'pack'
4 sys.path.append(pack_DIR)
5 print(sys.path)
6 
7 import module_test
8 module_test.login()

6.模块导入优化

from 模块名 import 函数名

执行时直接:函数名(),节省代码,避免重复调用

7.模块的分类

a.标准库,自带模块

b.开源模块,别人写的模块

c.自定义模块,自己写的模块

代码目录结构:

原文地址:https://www.cnblogs.com/BIT-taozhen/p/9862375.html