模块和包
模块
1.python源代码文件就是一个模块
2.模块中定义的变量 函数 类,都可以让别人使用,同样,可以使用别人定的
好处(别人定义好的可以直接使用,不用重复书写)
3.想要使用,必须先导入模块
4.我们自己写的代码,想要作为模块使用,代码的名字需要满足标识符的规则(由数字,字母下划线组成,不能以数字开头)
导入模块的语法
方式一
import 模块名
# 使用模块中的内容
模块名.工具名
# 举例
import json
import random
random.randint(a,b)
json.load()
json.dump()
from 模块名 import 工具名
# 使用
工具名 # 如果是函数和类需要加括号
# 举例
from random import randint
from json import load,dump
randint()
load()
dump()
方式三【了解】
from 模块 import * # 将模块中所有的内容导入
from random import *
from json import *
randint(a,b)
load()
dump()
对于导入的模块和工具可以使用 as 关键字给其起别名
注意:如果起别名,原来的名字就不能用了
模块的查找顺序
在导入模块的时,会现在当前目录中找这个模块,如果找到就使用,如果没找到回去系统的目录中查找,找到使用,找不到就会报错
注意点:
定义代码文件的时候,你的代码名字不能喝你要导入的模块名字相同
__name__的使用
1.每个代码文件都是一个模块
2.在导入模块时,会执行模块中的代码
3.__name__变量
3.1 __name__变量 是 python 解释器自动维护的变量
3.2 __name__变量,如果代码是直接运行,值是“__main__”
3.3 __name__变量,如果代码是被导入执行,值是 模块名(即代码文件名)
代码练习
1.定义一个模块 tools.py
2.在模块中定义一个函数,func,输出“我是tools模块中的funn函数”
3.在模块汇总定义一个类, Dog,具有属性name,age,方法play,输出‘xx在快乐的玩耍’
4.新建一个代码文件,调用tools模块中的func函数 并创建一个Dog类的对象,调用play方法
tools code
"""
1.定义一个模块 tools.py
2.在模块中定义一个函数,func,输出“我是tools模块中的funn函数”
3.在模块汇总定义一个类, Dog,具有属性name,age,方法play,输出‘xx在快乐的玩耍’
4.新建一个代码文件,调用tools模块中的func函数 并创建一个Dog类的对象,调用play方法
"""
def func():
print('我是tools中的func函数!')
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'name:{self.name}, age:{self.age}'
def play(self):
print(f'{self.name}在快乐的玩耍')
if __name__ == '__main__':
xh = Dog('小花', 5)
xh.play()
调用tools模块
import tools
tools.func()
xb = tools.Dog('小白', 2)
xb.play()
运行结果
我是tools中的func函数!
小白在快乐的玩耍
Process finished with exit code 0
包(package)
在python中,包是一个目录,只不过在目录存在一个文件
__init__.py (可以是空的)
将功能相近或者相似的代码放在一起的
----------------
在paython中使用过程中不需要可以区分是包还是模块,因为使用方式是一样的
random 模块 (单个代码文件)
json 包(目录)
1.import 包名
2.alt 回车 快捷导入