模块
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