提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、包是什么?
# 文件夹 包
# 文件夹:非 py 文件 包:py 文件夹
#一个包中可以存放多个模块
# 项目 > 包 > 模块 > 类 函数> 变量
# 使用包中的User类
# from user import models
#
# u=models.User('admin','123456')
# u.show()
# 第二种方法
from user.models import User
u=User('admin',"123456")
u.show()
from article.models import Article
a=Article('个人总结','家位')
a.show()
'''
article
|-models.py
|--__init__.py
|--...
user:
|-models.py
|-__init__.py
...
package.py
from 包 import 模块
from 包.模块 import 类:函数:变量
from 包 模块 import *
'''
from user.models import *
# print(version)
u=User('admin','123456')
创建了2个python 包文件分别是article , 和 user
article 下的models.py文件
class Article:
def __init__(self,name,author):
self.name=name
self.author=author
def show(self):
print("发表文章名字:{}的作者是{}".format(self.name,self.author))
class Tag:
def __init__(self,name):
self.name=name
user报下的models.py 文件
__all__=['User'] #只是针对from user.models import * 起作用
version='1.1'
class User:
def __init__(self,username,password):
self.username=username
self.password=password
def login(self,username,password):
if username==self.username and password==self.username:
print('登录成功')
else:
print('登录失败')
def publish_article(self,article):
print("{}发表了文章{}".format(self.username,article.name))
def show(self):
print(self.username,self.password)
if __name__=='__main__':
print('------User----------')
二、包的__init__的文件
user 下的init 的文件
__all__=['models']
print('-------------> user的__init__')
def create_app():
print('----->create---app')
def printA():
print('----------->AAAAAAAAAAAA')
'''
_init_.py 文件
当导入包的时候,默认调用__init__
作用:
1.当导入包的时候,把一些初始化的函数,变量,类定义在__init__py文件
2.此文件中函数,变量的访问,只需通过包名。函数
3.结合__all__=[通过*可以访问的模块]
'''
# import user
# # from user.models import User
# user.create_app()
# user.printA()
# from 模块 import * 表示可以使用模块里面的所有内容,如果没有定义__all__所有的都可以访问
# 但是如果添加上了__all__ ,只有__all__=['',''] 列表中可以访问
# from 包 import * 表示该包中内容(模块)是不能访问,就需要在__init__.py 中定义__all__=["定义可以访问的内容"]
from user import *
user=models.User('admin','123456')
user.show()
'''
article
|-models.py
|--__init__.py
|--...
user:
|-models.py
|-__init__.py
|-test.py
'''
#用户发表文章
#创建用户对象
#发表文章,文章对象
from user.models import User
from article.models import Article
user=User('admin','123456') #---->>user 就是通过导入的user类创建完成的
article=Article('个人总结','阿奇')
user.publish_article(article)
三 循环导入导致的问题
'''
循坏导入:大型的python项目中,需要很多的python 模块,由于架构不当,可能会出现模块之间的相互导入
模块A:
def test():
f()
模块B:
def f(0:
test()
解决产生循环导入:
1.重新重建架构
2.将导入的语句放到函数里面
3,把导入语句放到模块的最后
'''
from 循环导入2 import func
def task1():
print('----task1--------')
def task2():
print('------task2--------')
func()
#调用task1
if __name__=='__main__':
#调用task1
task1()
task2()
def func():
print('-----循坏导入2里面的func----1--')
from 循环导入1 import task1 #加载循坏1,并执行循环1的动作
task1()
print('-----循坏导入2里面的func----2--')
搜索路径
'''
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1.当前目录
2. 如果不在当前目录,python 则搜索在shell 变量 PYthon 下的每个目录
3. 如果都找不到,Python 会查看默认路径,UNIX下,默认路径一般为usr/local/lib/python/.
模块搜索路径存储在 system 模块的 sys.path 变量中,变量里包含当前目录,PYTHONPATH 和由安装过程决定的默认目录
'''
'''
自定义模块
系统模块
'''
import sys
print(sys.path) #导入包时的搜索顺序
print(sys.version) #打印系统的python 版本
print(sys.argv) #脚本传参,运行程序时的参数,argv 是一个列表,默认存放程序本身
``
四 time 与 datetime 模块使用
# time 模块
#1.时间
import time
t=time.time()
print(t)
time.sleep(3)
t1=time.time()
print(t1)
# 将时间戳转成字符串
s=time.ctime(t)
print(s)
t=time.localtime(t)
print(t)
print(t.tm_year,t.tm_hour)
#将元组的转成时间戳
t=time.mktime(t)
print(t)
# 将元组的时间转成字符串
s = time.strftime('%Y-%m-%d %H:%M:%S')
print(s)
# 将字符串转成元组的方式
r=time.strftime('2019/06/20','%y%m%d')
print(r)
'''
time 模块
重点
time()
sleep()
strfitme('格式') %Y %m %d .....
了解:
t=time.localtime(t)
元组 ---->> t.tm_year t.tm_mon
'''
'''
datetime 模块
time 时间
date 日期 (data 数据)
datatime 日期时间 now()
timedelta 时间差 timedelta(days="",week="“,...)
'''
import datetime
import time
print(datetime.time.hour) #对象
print(time.localtime().tm_hour) #打印小时数
#因为date是类,所以要求创建对象
d=datetime.date(2019,6,20)
print(d.day)
print(time.time())
print(datetime.date.day)
print(datetime.date.ctime(d))
#datetime ,timedelta
print(datetime.date.today())
#时间差
timedel=datetime.timedelta(days=10,hours=2)
print(timedel)
# datetime.datetime.now() --->>得到当前的日期和时间
now=datetime.datetime.now()
print(now)
result-now +timedel
#时间差的应用
#缓存: 数据redis 作为缓存 redis.set(key,value,时间差) 会话: session