模块和包的导入

模块

1.python中一个py文件就是一个模块
2.怎么在一个模块中使用另外一个模块的内容
前提:被使用的模块的模块名(py文件的文件名)必须符合变量名的要求
使用原则:先导入才能使用(能被别的模块使用的内容只能是全局变量
3.导入模块
import 模块名(py文件名) - 导入指定模块,导入后可以通过’模块名.xxx’的方式使用这个模块中所有的全局变量
from 模块名 import 变量1,变量2… -导入指定模块中的指定变量,导入后可以直接使用
from 模块名 import * - 导入指定模块中所有的变量,导入后可以直接使用
import 模块名 as 新模块名 - 导入模块的时候对模块重命名,通过’新模块名.xxx’的方式使用这个模块中所有的全局变量
from 模块名 import 变量1 as 新变量1,变量2 as 新变量2… - 对导入的变量重命名
as 关键字 用于对文件名的改写,只针对当前文件名改写有效,导入模块中模块本身的变量依然没有改变
"""
Author:大王
Date:2022/8/3 14:09
只有行动才能说明一切
"""
# /test1.py

a = 100
def func1():
    print('test中的函数')


name = 'test'
if __name__ == '__main__':
    from keyword import kwlist
    print(kwlist)
# 导入方式1
import test1

print(test1.a)
print(test1.name)
test1.func1()
# 导入方式2
from test1 import a, name, func1
print(a)

# 导入方式3
from test1 import *

print(a)

# 修改模块名或者模块中的变量名
import test1 as t1

print(t1.a)
#
from test1 import a as b, name as newname

print(b)
print(newname)
4.导入模块的原理
不管以什么样的方式导入了模块,或者模块中的内容。系统都会在导入模块的时候进入到对应模块将模块中的代码全部执行一遍
根源原理存在的问题:可能存在导入模块的时候执行一些完全没有必要执行的代码
导入模块的时候选择性执行代码:
在被导入的模块中添加指定的if语句
(if__name__ == '__main__')
将不需要被别的模块执行的代码放入到这个if语句中

1.包就是包含__init__.py文件的文件夹
包就是用来管理py文件,对py文件按照特点的方式进行分类。
2.怎么使用包中的内容
1)import 包名 - 导入指定的包(必须是包,文件夹无意义),导入后可以通过’包名.xxx’的方式使用__init__.py文件中所有内容
2)import 包名.模块名 - 导入指定的包中指定的模块(这个操作文件夹也可以用)
(一般要重命名,不然包名和模块名太复杂了)
3)from 包名 import 模块名1,模块名2,模块名3…(实则导入的是模块,用模块中的变量时还是要用模块名.变量名)
(如果想导入__init__.py直接使用变量1,变量2…)
4)from 包名.模块名 import 变量1,变量2…
不管用什么方式导入包的时候,实则__init__.py文件将会自动执行,所有 包名.(init.py文件中任意变量都可以使用)但是其他文件就不行了,其他文件需要 包名.模块名.变量

init.py文件说明

当一个文件夹中有init.py时声明这个文件夹是一个包
init.py也叫初始化这个包
这个包的作用上述也讲过,调用包,这个文件也会自动执行
1.init.py也可以作为创建快捷键使用
file是一个包名
test4是包中的模块名
"""
Author:大王
Date:2022/8/3 16:17
只有行动才能说明一切
"""
/init.py
print('lai')
# 1.创建快捷键
from file.test4 import a
#将tset4的包中的a导入到init中
# 2.封装通用工具
def remove_file():
    print('删除文件')

print('end')
b = 40
"""
Author:大王
Date:2022/8/3 15:19
只有行动才能说明一切
"""


from file import a    #虽然from file.test4 import a也执行,但是只能在init主程序中有数据,还需要导入在这个主程序中使用,如果init文件中没有from file.test4 import a 将只能
file.remove_file()
from file.test4 import a
print(a)
print(file.b)     #  虽然没有导入这个init文件,但是因为它自动执行(导入),所有可以用file.b的方式获取数据
file.remove_file()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值