包的代入与time,datetime模块的使用

本文介绍了Python中的包,包括包的`__init__.py`文件、循环导入问题,以及`time`和`datetime`模块的使用,帮助读者理解Python包管理和日期时间操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、包是什么?

# 文件夹   包
# 文件夹:非 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值