模块
模块包括:1、自定义模块。2、系统模块
一般来说.py文件 都可以被看成一个模块,
导入模块的方法:
1、import 模块名
调用格式:模块名.变量 模块名.函数 模块名.类
2、from 模块名 import 变量|函数|类
调用格式:from 模块名 import 变量1,变量2,变量3,。。。
在代码中可以直接使用变量、函数、类
3、from 模块名 import *
导入该模块中所有内容
但是如果想要限制获取的内容,可以在模块中使用__all__=[使用*可以访问的内容]
4、无论是import还是from形式,都会将模块内容进行加载
如果不希望其进行调用,就会用到__name__
在自己的模块里__main__叫:main
如果在其他模块中通过导入的方式调用的话:name:模块名
假设:模块model.py
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def login(self, username, password):
if self.username == username and self.password == password:
print('登录成功!!!')
else:
print('登录失败!!!')
def show(self):
print(self.username, self.password)
def run():
print('models跑步-----------------')
def eat():
print('models吃饭-----------------')
run()
eat()
# if __name__ == '__main__':
# run()
# eat()
#这种情况下的运行结果是:lleff 367456785673
在test1.py中来引用:
from models import User
u1=User('lleff','367456785673')
u1.show()
运行结果:
包
包 -------》py.文件
文件夹------》非py.文件
一个包中可以包含多个文件;项目>包>模块>类 函数 变量
- __init __.py文件
当导入包的时候,默认调用__init__.py文件
作用:
1、导入包的时候,把一些初始化的函数,变量,类定义在__init__.py文件中
2、此文件中函数,变量的访问,只需要通过包名.函数
3、结合__all__=[‘通过*可以访问的文件’]
我的文件夹如下 :
__init __.py
__all__=['models']
print('------------->user的__init__---------->')
def func1():
print('---------------1_________')
def func2():
print('---------------2###########')
model.py
class Article:
def __init__(self, name, author):
self.name = name
self.author = author
def show(self):
print('发表文章名字:{}作者是:{}'.format(self.name, self.author))
models.py
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def login(self, username, password):
if self.username == username and self.password == password:
print('登录成功!!!')
else:
print('登录失败!!!')
def show(self):
print(self.username, self.password)
执行文件package.py
# 使用包中的User类
# from user import models
#
# u = models.User('admin', '123456')
# u.show()
from user.models import User
from articale.articles.model import Article
# from .models import User # 当前目录下的models里面的User类
u1 = User('llyyrr', '122826')
u1.login('lluu', 'ddec')
u1.show()
a1 = Article('坏小孩', 'zzt')
a1.show()
运行结果