python中的模块和包

目录

1.模块介绍

python之所以这么火就是因为它灵活的模块功能

模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里面的功能

常见的场景:

一个模块就一个包含了一组功能的python文件,通过Import去导入

在Python中,模块的使用方式都是一样的,但是可以使用不同语言编写,只要提供接口python都适用

2.模块的使用方式

import module_name

在文件导入时,执行文件就会先执行被导入文件,把被导入文件里面的变量添加到内存空间

只在第一次导入时才能执行module_name.py,文件内部的代码,此处的显示效果只打印一次

在第一次导入模块时就会发生三件事

1,为源文件(spam模块)创建新的名称空间,在spam中定义的函数和方法若是使用到了global时访问的就是这个名称空间

2,在新创建的命名空间中执行模块中包含的代码,见初始导入import spam
提示:导入模块时到底执行了什么?

3,创建名字spam来引用该命名空间
这个名字和变量名没什么区别,都是‘第一类的’,且使用spam.名字的方式
可以访问spam.py文件中定义的名字,spam.名字与test.py中的名字来自
两个完全不同的地方。

为模块起别名

下面再使用的时候就成了别名,与原来的模块名没有说什么关系!

Import spam as sm
print(sm.money)

from module_name import variable_name

区别

使用from…import…则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了、无需加前缀:spam.

**缺点:**容易与当前文件夹的变量冲突

**同样也支持起别名:**在使用的时候直接用别名就好(相当于用的是变量名不用再加前缀)

一行导入多个名字:

from spam import read1,read2,money

demo

#测试一:导入的函数read1,执行时仍然回到spam.py中寻找全局变量money
#test.py
from spam import read1
money=1000
read1()

'''
执行结果:
from the spam.py
spam->read1->money 1000
'''

#测试二:导入的函数read2,执行时需要调用read1(),仍然回到spam.py中找read1()
#test.py
from spam import read2
def read1():
    print('==========')
read2()

'''
执行结果:
from the spam.py
spam->read2 calling read
spam->read1->money 1000
'''

from module_name import *

表示把文件或者包里面所有的内容全部导入,在使用的时候容易和文件内部的变量起冲突

使用时直接使用文件内部的变量名就好,但是文件内部有什么变量名并没有提示出来

只适用于文件是你自己创建的,里面有什么变量名你自己可以心知肚明

3.模块搜索路径

内存中已经加载的模块---->内置模块------->sys.path路径中包含的模块

在初始化之后,可以修改python的path,路径放在前面优先于标准库加载

import sys
sys.path.append('/a/b/c/d')
sys.path.insert(0,'/x/y/z') #排在前的目录,优先被搜索

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值