Day16-17 模块与datetime模块

本文介绍了Python模块的概念,包括定义、命名、导入和搜索路径,强调了`if name == 'main'`的作用。此外,详细讲解了datetime模块,特别是datatime类和其他相关类的使用,并给出了实际操作的例题。
摘要由CSDN通过智能技术生成

模块

1.定义

*模块,*简单来说就是时一个.py文件,其中可以包括我们需要的任意代码。程序的设计目标是运行,而模块的设计目标是由其他程序导入并使用。

2.命名

built-in Namespace:内置命名空间
Global Namespace:全局命名空间
Local Namespace:本地命名空间
查询三种命名空间的时候,按照本地-全局-内置进行查询,其实也好理解,就近肯定是最先用的。

3.导入

在这里插入图片描述
import语句在程序中最好放在什么位置:建议首先导入标准库模块,之后是第三方模块,最后才是自定义模块,所以通常的做法是将所有的import语句放在shebang行和模块文档之后,其他语句之前。

4. if __name__ == '__main__'

Python 属于脚本语言,是动态的逐行运行,都是从第一行进行运行,所以在引用模块的时候为了避免多余的语句运行,需要一句话对多余的不必要的语句进行标记。
if name == ‘main的意思是:当 .py 文件被直接运行时, if name == ‘main’ 之下 的代码块将被运行;当 .py 文件以模块形式被导入时, if name == ‘main’ 之下的代码块不被运行。
5.搜索路径存储查询
搜索路径被存储在 sys 模块中的 path 变量中。查询方法如下:

import sys
print(sys.path)

6.包

定义:包就是一个目录,其中包含一组模块和一个__init__.py文件。将多个模块保存在一起。
创建步骤:(1)创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字。 (2)在文件夹中创建一个 init.py 的模块文件,内容可以为空。 注意,只要放上这个文件,就算里边没有其他的模块,也会被认为是一个包。(3)将相关的模块放入文件夹中。
命名方法:保证顶级模块名字即包的名字不能与标准库中的任何顶级名字相同。
导入方法:只要包的目录在程序目录的子目录中,或者存在于Python的路径中,就能导入这些模块。
在这里插入图片描述

7.例题

1.怎么查出通过 from xx import xx导⼊的可以直接调⽤的⽅法?

2.了解Collection模块,编写程序以查询给定列表中常见的元素。
模块

def most_element(language):
    a=0
    b=0
    for i in range(len(language)):
        for j in range(len(language)-1):
            if language[i]==language[j+1]:
                a=a+1
        if a>b:
            b=a
            cc=language[i]
    return cc

主程序


from Day16 import most_element

language = ['PHP', 'PHP', 'Python', 'PHP', 'Python', 'JS', 'Python', 'Python','PHP', 'Python']
print(most_element(language))

结果:
在这里插入图片描述

模块

148页-157页

定义

Python中的标准库提供了广泛的功能,涵盖了大概200个左右的包和模块。虽然很多高质量的模块被开发出来,但是很多模块放在标准库找中极难维护,所以只能进行单独维护。
datatime是Python中处理日期的标准模块,它提供了4种对日期和时间进行处理的类:datatime、data、time、timedelta。

datatime类

在这里插入图片描述

datatime其他类

在这里插入图片描述

例题

1.假设你获取了用户输入的日期和时间如 2020-1-21 9:01:30 ,以及一个时区信息如 UTC+5:00 ,均是 str ,请 编写一个函数将其转换为timestamp:

import datetime
from dateutil import parser
def to_timestamp(dt_str, tz_str):
    dt1= parser.parse(dt_str, tz_str)
    dt=dt.timestamp()
    return dt
dt_str='2020-6-1 08:10:30'
tz_str='+7:00'
aa=to_timestamp(dt_str, tz_str)
print(aa)

2.编写Python程序以选择指定年份的所有星期日。

import datetime
def all_sundays(year):
    d1=datetime.date(year,1,1)
    d2=datetime.date(year,12,31)
    a=d1.isoweekday()
    td=(d2-d1).days
    d3=d1
    for i in range(td):
        if d3.isoweekday()==7:
            print(d3)
        t=datetime.timedelta(days=1)
        d3=d3+t
    return ''
    
all_sundays(2020)  

结果:

2020-01-05
2020-01-12
2020-01-19
2020-01-26
2020-02-02
2020-02-09
2020-02-16
2020-02-23
2020-03-01
2020-03-08
2020-03-15
2020-03-22
2020-03-29
2020-04-05
2020-04-12
2020-04-19
2020-04-26
2020-05-03
2020-05-10
2020-05-17
2020-05-24
2020-05-31
2020-06-07
2020-06-14
2020-06-21
2020-06-28
2020-07-05
2020-07-12
2020-07-19
2020-07-26
2020-08-02
2020-08-09
2020-08-16
2020-08-23
2020-08-30
2020-09-06
2020-09-13
2020-09-20
2020-09-27
2020-10-04
2020-10-11
2020-10-18
2020-10-25
2020-11-01
2020-11-08
2020-11-15
2020-11-22
2020-11-29
2020-12-06
2020-12-13
2020-12-20
2020-12-27
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值