Python基础11 模块一

一 模块的概念

1 模块的概念介绍

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

模块的作用:

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

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

2  创建模块

模块本身就是一个文件,所有的py代码都可以在文件中直接书写,不过我们开发共用模块时,

最好在模块中书写一下内容。

变量             模块中的属性值

函数             单独的功能

类                 相似的功能组合

模块测试代码         临时使用,被导入时不会执行

注意 :

(1)模块名称遵循标识符

(2)模块只有第一次被导入的时候执行,多次导入不会执行

例  model01.py 是一个简单的模块,这个模块的功能就是打招呼

假设此py文件的文件名是model01

print('我是一个具有独立功能的模块')
def say_hello():
    print('你好,世界')

2模块的导入原理

原理介绍

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

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

3   我们导入模块的过程总结就是:在指定范围内搜索指定名称的python脚本或包,

     将其运行,获取其中的方法

3 模块的导入方式

     1、import 模块名

     2、import 模块名 as 别名

     3、import 模块名1,模块名2,... 一行导入多个模块。

     4、from ... import ...

     5、from ... import ... as 别名

     6、from ... import 功能1,功能2,...

     7、from ... import *   导入所有

 

 1 import 模块名

作用

直接导入模块

1   import  模块名
作用 直接导入模块

import model01
print(model01.name)
print(model01.say_hello)

 2、import 模块名 as 别名

import model01 as m
m.say_hello()

3、import 模块名1,模块名2,... 一行导入多个模块。

import model01,model02
model01.say_hello()
model02.func()

4、from ... import ...  局部导入方式

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

form   模块  import  某个函数或者类。

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

from model import say_hello
say_hello()

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

from model01 import say_hello

say_hello()        

def say_hello():
    print('hello python')

say_hello()

"""
我是一个具有独立功能的模块
你好,世界
hello python
"""

5、from ... import ... as 别名

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

如  from my_module import read1 as read

from  model01 import say_hello as SayHello

def say_hello():
    print('hello world')

SayHello()
say_hello()

"""
我是一个具有独立功能的模块
你好,世界
hello world
"""

 6、from ... import 功能1,功能2,...支持导入多行

如  from my_model import  read1,read2,money

from model02 import test1 , tese2

test1()
test2()

7、from 模块 import *   导入所有

from model02 import * 把model02 中所有的不是以下划线—开头的名字都导入到当前位置

大部分情况下我们的python程序不应该使用这种方式导入,因为*你不知道你导入的什么名字,

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

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

from model01 import *


tese1()
test2()

__all__属性

__all__ = [变量1,变量2....]  设置导入模块的功能。

__all__ = ['money','read1']

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

4.模块搜索路径

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

1、当前目录

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

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

 

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

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

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

因此需要注意的是:自己模块命名的时候不能和系统的模块名称相同。

5  pyc.临时文件

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

6 把模块当做脚本运行

我们可以通过模块的全局变量__name__来查看模块名

当做脚本运行:

__name__的值等于 "__main__"

当做模块导入:

__name__的值等于模块名

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

if __name__ == '__main__':

     pass

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值