python基础:包

目录

一、初识模块

1.概念

2.创建模块

3. 导入模块

二、模块导入的原理

三、模块的导入方式 

1.import  模块名

2.import  模块名 as 别名

3.一行导入多个模块

4.from......import......局部导入

扫描二维码关注公众号,回复: 4884497 查看本文章

5.支持导入多行

6.from......import......as 别名

7.from  模块 import *

四、模块的搜索路径

五、.pyc临时文件

六、把模块当做脚本运行


一、初识模块


1.概念

一个包含python代码的文件就是一个模块

使用模块的作用

1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方便维护与管理

2.模块可以增加代码的重用率

2.创建模块

模块本身就是一个文件,所有py代码都可以在文件中直接书写。

不过我们开发共用模块时,最好在模块中书写以下内容。

变量       

  模块中的属性值

函数        

 单独的功能

类          

 相似功能组合

模块测试代码  

 临时使用,被导入时不会执行

先创建一个model1.py模块,如下:


  
  
  1. print( '哈哈哈,呵呵呵')
  2. name= 'zs'
  3. def say_hello():
  4. print( '小星星')
  5. print( 'xxxx')

3. 导入模块

注意:

1.第一次导入模块的时候,模块会从上到下执行一遍


  
  
  1. #导入模块
  2. import model1
  3. model1.say_hello() #调用model1中的say_hello函数

2.模块可以导入多次,就不会执行模块中的内容, 直接在内存中找,不会再重新加载,节省内存


  
  
  1. #第二次导入模块
  2. import model1
  3. model1.say_hello()

 


二、模块导入的原理


1. 模块导入会将要导入的文件执行一遍

2. 导入模块的名称就是我们定义的脚本或包的名称

3. 我们导入模块的过程总结就是:在指定的范围内搜索指定名称的python脚本或者包,将其运行,获取其中的方法


三、模块的导入方式 


1.import  模块名

直接导入模块


  
  
  1. import model1
  2. model1.say_hello() #调用model1中的say_hello函数

 

2.import  模块名 as 别名

如果模块的名称太长,我们可以给这个模块起一个别名


  
  
  1. import model1 as m
  2. m.say_hello()
  3. print(m.name)

 

如果要导入名称相同但功能不同的两个模块,便将模块分别取一个别名用来区分两个模块

3.一行导入多个模块

(1)第一种

不推荐,但经常用,比较方便 

import model1,model2
  
  

(2)第二种 


  
  
  1. import model1
  2. import model2
  3. print(model1.name)
  4. print(model2.age)

 

4.from......import......局部导入

当使用模块中的部分功能的时候,就可以使用局部导入方式。

格式:from 模块 import 某个函数或者类。

作用:直接导入模块中的某个函数或者某个类或变量


  
  
  1. #导入test函数,只能使用test函数,不能使用其他函数
  2. from model2 import test
  3. #调用函数
  4. test() #调用的是model2中的test函数

 

注意:

如果当前文件中的变量或者函数名称和模块中的名称重复,会使用就近原则


  
  
  1. #导入test函数,只能使用test函数,不能使用其他函数
  2. from model2 import test
  3. #调用函数
  4. test() #调用的是model2中的test函数
  5. #就近原则
  6. def test():
  7. print( 'azyazyazy')
  8. test() #调用的是该模块中的test函数

 

5.支持导入多行

格式:from  模块名 import 功能1,功能2,功能3


  
  
  1. from model2 import test,test_2
  2. test()
  3. test_2()

6.from......import......as 别名

当导入的模块和当前模块中的名称相同的时候可以起别名进行区分


  
  
  1. def test():
  2. print( 'azyazyazy')
  3. test()
  4. from model2 import test as t #给test起一个别名
  5. t() #通过别名 调用函数

7.from  模块 import *

格式:from my_module import *

直接导入模块中的所有方法和类和变量

把my_module中所有的不是以下划线(_)开头的名字都导入到当前位置,

大部分情况下我们的python程序不应该使用这种导入方式,

因为*你不知道你导入什么名字,

很有可能会覆盖掉你之前已经定义的名字,而且可读性极其的差。

* 不清楚导入的究竟是什么,可读性差,容易被覆盖

 *代表所有


  
  
  1. from model2 import *
  2. age= 20
  3. test()
  4. print(age)

注意:

如果model2.py中的名字前加_,如_name,在使用from model2 import *时,_name不能被导入

解决办法:

__all__属性

格式:__all__ = [变量1,变量2 ...]

设置导入模块的功能

__all__=['money','read1']

这样在另外一个文件中用from my_module import *就这能导入列表中规定的两个名字

 该属性只在from 模块名 import  * 情况下使用,其他的都不用使用可正常导入(如:_name)的功能


四、模块的搜索路径


当你导入一个模块,Python解析器对模块位置的搜索顺序是:

1、当前目录

2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。

由sys模块的sys.path方法来规定


  
  
  1. import sys
  2. ret=sys.path
  3. print(ret) #返回的为列表

因为sys.path返回的数据类型是列表

1、列表可以修改、我们导入的范围也可以通过修改sys.path这个列表获得暂时的修改。例如通过 sys.path.append()添加目录,导入额外目录的模块。

2、列表是有序的,当搜索的过程当中,在第一个路径下搜索到了,就停止搜索。而且sys.path第一个路径是脚本的当前路径,所以禁止大家将自己的脚本命名成模块的名称。

注意:自己模块命名的时候不能和系统的模块名称相同


五、.pyc临时文件


为了提高加载模块的速度,python解释器会在__pycache__目录中下缓存每个模块编译后的版本,之后,再次被导入时,实际上导入的是这个.pyc的临时文件。

(1)                                                                               (2)

(3)                                                                           (4)

 


六、把模块当做脚本运行


我们可以通过模块的全局变量__name__来查看模块名
1.当做脚本运行

__name__ 的值 等于'__main__'

直接右键Run 'test',执行脚本文件

2.当做模块导入
__name__的值等于模块名

作用:

用来控制.py文件在不同的应用场景下执行不同的逻辑
格式:

if __name__ == '__main__':

   pass

当测试代码


  
  
  1. if __name__ == '__main__':
  2. print( '恭喜过关,撒花撒花~~~')

当程序入口


  
  
  1. def hs_1():
  2. print( '我')
  3. def hs_2():
  4. print( '你')
  5. def hs_3():
  6. print( '我和你')
  7. if __name__ == '__main__':
  8. hs_1()
  9. hs_2()
  10. hs_3()

猜你喜欢

转载自blog.csdn.net/weixin_44239541/article/details/86352158
今日推荐