【MK】Python全栈 阶段一:习题汇总 七:Python模块

这篇博客主要介绍了Python的模块和包的使用,包括导入方式如import package、from package import module等,以及第三方库如datetime和time的使用,详细讲解了时间模块的多个函数,并给出了编程题目来巩固所学知识。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。



一、单选题

二、多选题

1.X

  • A .
  • B .
  • C .
  • D .

三、练习题

3.1 Python 模块与包

3.1.1 基础代码

1、目录结构在这里插入图片描述
2、【Cat 】→【Action】

def roar():
    return 'cat roar'

def dump():
    return 'cat dump'

def run():
    return 'cat running'

3、【Dog】→【Action】

def roar():
    return 'dog roar'

def dump():
    return 'dog dump'

def run():
    return 'dog running'

4、【Animal】→ 【init.py】

def animal_test():
    return 'animal test'

5、与【Animal】同级的 Test_01.py

def Test_01():
    return 'Test_01'

3.1.2 导包方式:函数导入

3.1.2.1 import package
1. 【方式一】导入主包
>>> import Animal
>>> Animal.animal_test()

'animal test'
import Test_01
>>> result = Test_01.Test_01()
>>> result

'Test_01'
3.1.2.2 from package import module
2. 【方式二】导入子包中的模块

(1)函数名被覆盖

from Animal.Cat import Action
>>> Action.run()
'cat running'

>>> from Animal.Dog import Action    # Action 覆盖了以上Action
>>> Action.run()
'dog running'

(2)不用担心重名问题

>>> from Animal.Cat import Action as cat_Action
>>> from Animal.Dog import Action as dog_Action

>>> cat_Action.run()
'cat running'

>>> dog_Action.run()
'dog running'
3. 【方式三】导入子包中的模块中的函数

(1) from 包名.子包名.模块名 import 函数名

>>> from Animal.Cat.Action import run
>>> run()
'cat running'


from Animal.Dog.Action import run as dog_run   # 避免函数重名被覆盖

>>> dog_run()
'dog running'

(2)更改【Animal】→ init.py】 的代码

在一个包的环境下,如果想在 init.py 中导入其他的包或者是模块 只需要在 [要导入的] 包名前面加 .

1)方式一

from .Cat import Action
>>> from Animal import Action
>>> Action.run()
'cat running'

2)方式二

from .Cat.Action import run
>>> from Animal import run
>>> run()
'cat running'

3)方式三

__ init __.py 文件

from .Cat.Action import run as cat_run
from .Dog.Action import run as dog_run

Test_01.py文件中调用 【注意】此时 Animal 与 Test_01.py 在同一文件夹下(同级),如果不在同一文件夹下会报错

from Animal import cat_run
from Animal import dog_run

# from Animal import cat_run, dog_run    # 也可以放入一行导入

cat_run_result = cat_run()
dog_run_result = dog_run()

print(cat_run_result)
print(dog_run_result)
4. 【方式四】导入主包中的模块

与【Animal】同级的【main.py】

def animal():
    return 'I am animal module function'

1)方式一不推荐使用

>>> import Animal.main
>>> Animal.main.animal()
'I am animal module function'

2)方式二推荐使用

>>> from Animal import main
>>> main.animal()
'I am animal module function'

3.1.3 导包方式:变量名导入

【Cat】→ 【Action.py】

cat_name = '米粒儿'

【Test_01.py】

from Animal.Cat.Action import cat_name
print(cat_name)

3.1.4 导包方式:类名导入

3.2 Python 第三方包的使用

3.2.1 时间包:datetime

一、获取当前时间

from datetime import datetime
now = datetime.now()
print(now, type(now))

import datetime
print(datetime.datetime.now())   # 返回当前年月日时分秒毫秒的datetime对象

二、获取时间间隔

from datetime import datetime
# timedelta:是函数名    
# 原因:(1)timedelta 函数写在 __init__.py 文件中  (2)timedelta写在其他模块下,在__init__.py文件中被导入
from datetime import timedelta   


three_days = timedelta(days=3)

# 获取3天以后的时间
after_three_day = datetime.now() + three_days
print(after_three_day)

# 获取3天以前的时间
before_three_day = datetime.now() - three_days
print(before_three_day)



# 获取1个小时以前的时间
one_hour = timedelta(hours=1)
before_one_hour = datetime.now() - one_hour
print(before_one_hour)

补充:函数参数介绍

time_obj = timedelta(days=0, seconds=0,microseconds=0, milliseconds=0,minutes=0,hours=0,weeks=0)

# days=0 间隔天数
# seconds=0 间隔秒数
# microseconds=0 间隔微秒;百万分之一秒,
# milliseconds=0 毫秒;千分之一秒,
# minutes=0 间隔分钟数
# hours=0 间隔小时数
# weeks=0 间隔周数; 参数为1表示七天

三、时间对象转时间字符串:strftime

# 获取时间对象
from datetime import datetime
now = datetime.now()

# 时间转字符串
# format:'%Y-%m-%d %H:%M:%S'
date_str_01 = now.strftime('%Y-%m-%d %H:%M:%S')
date_str_02 = now.strftime('%Y/%m/%d %H:%M:%S')
date_str_03 = now.strftime('%Y/%m/%d')
date_str_04 = now.strftime('%H:%M:%S')

print(date_str_01, type(date_str_01))
print(date_str_02, type(date_str_02))
print(date_str_03, type(date_str_03))
print(date_str_04, type(date_str_04))

四、时间字符串转时间类型:strptime

# 获取时间模块
from datetime import datetime

str_date = '2021-10-10 13:13:13'

# 时间字符串转时间类型
date_obj = datetime.strptime(str_date, '%Y-%m-%d %H:%M:%S')
print(date_obj, type(date_obj))

对三进行转换

# 时间字符串转时间类型
now_obj_01 = datetime.strptime(date_str_01, '%Y-%m-%d %H:%M:%S')
print(now_obj_01, type(now_obj_01))

new_obj_02 = datetime.strptime(date_str_02, '%Y/%m/%d %H:%M:%S')
print(new_obj_02, type(new_obj_02))

new_obj_03 = datetime.strptime(date_str_03, '%Y/%m/%d')
print(new_obj_03, type(new_obj_03))

new_obj_04 = datetime.strptime(date_str_04, '%H:%M:%S')
print(new_obj_04, type(new_obj_04))

五、日期对象转时间戳

import datetime

now = datetime.datetime.now()
now_timestamp = datetime.datetime.timestamp(now)
print(now_timestamp)      # 秒级时间戳  浮点类型

六、时间戳转日期对象

#import datetime
#now = datetime.datetime.now()
#now_timestamp = datetime.datetime.timestamp(now)

datetime_obj = datetime.datetime.fromtimestamp(now_timestamp)
print(datetime_obj)

3.2.2 时间模块:time

一、获取当前时间戳

import time
now = time.time()
print(now, type(now))

二、时间戳类型转本地时间

t_obj = time.localtime(now)
print(t_obj, type(t_obj))

三、修改时间戳:获取100000秒以前的时间 → 再转本地时间

before = now - 100000
before_t_obj = time.localtime(before)
print(before_t_obj, type(before_t_obj))

四、时间戳(秒级)转换成 毫秒级

print(time.time() * 1000)
print(time.time())    # 对比作用
3.2.2.1 时间模块:localtime

一、获取本地时间函数:localtime

import time
t = time.localtime()
print(t)
3.2.2.2 暂停函数:sleep

一、循环

for i in range(10):
	print(i)
	time.sleep(1)

二、区分时间戳与本地时间

now = time.time()
print(now)

time.sleep(5)

t = time.localtime()
print(t)
3.2.2.3 时间对象转时间字符串:strftime
import time
str_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(str_time)
3.2.2.4 时间字符串转时间类型:strptime
import time
time_obj = time.strptime('2021-12-12', '%Y-%m-%d')
print(time_obj)

3.2.3 内置包:os

import os

# 返回当前路径
current_path = os.getcwd()
print(current_path)

# 创建文件夹:一
new_path = '%s/Test_01'%current_path
# os.makedirs(new_path)

# 返回指定目录下的所有文件或文件夹
data = os.listdir(current_path)
print(data)

# 创建文件夹:二、多层文件夹
new_path_02 = '%s/Test_02/ABC'%current_path
# os.makedirs(new_path_02)

# 创建文件夹:三、
# os.makedirs('Test_03')   # 相对路径:默认创建在  执行脚本  所在的目录下

# 删除文件夹
# os.removedirs('Test_02/ABC')   # 相对路径

# 修改文件夹名
# os.rename('Test_03', 'Test_03_New')

# 修改文件名
# os.rename('Test_01.py', 'Test_01_New.py')

# 只能删除空文件夹
# os.rmdir('%s/Test_03_New' % current_path)
3.2.3.1 os.path模块
import os
import os.path

# 返回当前路径
current_path = os.getcwd()
print(current_path)
print(os.path.isabs(current_path))
print(os.path.isabs('Animal'))


# 创建文件夹:一
new_path = '%s/Test_01' % current_path
if not os.path.exists(new_path):
    os.makedirs(new_path)

# 创建文件夹:二、多层文件夹
# new_path_02 = '%s/Test_02/ABC' % current_path
new_path_02 = os.path.join(current_path, 'Test_02', 'ABC')
print(new_path_02)
if not os.path.exists(new_path_02):
    os.makedirs(new_path_02)

# 创建文件夹:三、
if not os.path.exists('Test_03'):
    os.makedirs('Test_03')

# 删除文件夹
if os.path.exists('Test_02/ABC'):
    os.removedirs('Test_02/ABC')     # 相对路径

# 修改文件夹名
if os.path.exists('Test_03'):
    os.rename('Test_03', 'Test_03_New')


# 修改文件名
# if os.path.exists('Test_01.py'):
#     os.rename('Test_01.py', 'Test_01_New.py')

# 只能删除空文件夹
if os.path.exists('%s/Test_03_New' % current_path):
    os.rmdir('%s/Test_03_New' % current_path)

# if os.path.exists('Test_01'):
#     os.rmdir('Test_01')

# 路径切割
current_path = current_path + '/Test_01.py'
print(os.path.isfile(current_path))
print(os.path.split(current_path))

print(os.path.isdir(current_path))   # 最后一处有(.py文件),所以不是路径,返回False
print(dir(os.path))

3.2.4 内置包:sys

import sys

# Py启东时加载的模块
modules = sys.modules
print(modules)

# 返回当前Py的环境路径
path = sys.path
print(path)


# 退出程序
# sys.exit(0)   # 后面的代码不会再被执行   与在调试模式中使用exit()是有区别的

# 获取编码格式
code = sys.getdefaultencoding()
print(code)

# 获取当前系统平台
print(sys.platform)

# 获取Python版本
print(sys.version)

# 程序外部获取参数
print(sys.argv)   # 与run运行后返回结果不同


command = sys.argv[1]   # 0索引:Python脚本的名称   1索引:第一个命令
if command == 'modules':
    modules = sys.modules
    print(modules)
elif command == 'path':
    path = sys.path
    print(path)
elif command == 'encoding':
    code = sys.getdefaultencoding()
    print(code)
elif command == 'platform':
    print(sys.platform)
elif command == 'version':
    print(sys.version)
else:
    print('not command')
[Terminal]中运行:  
python 内置库_sys模块.py version

四、编程题

4.1 获取当前日期时间

1、要求

使用from…import…导入datetime模块中的datetime对象,并根据任务要求书写代码。

2、任务

  • 1、使用两种方法获得当前日期时间,并输出到控制台
  • 2、在控制台上分别对日期和时间进行输出
  • 3、使用-拼接年月日得到当前日期

3、任务提示

1、使用format格式化输出得到的当前年份、当前月份、当前日,并用“-”进行连接

4、代码

from datetime import datetime
# 得到当前日期时间(两种方法)
# 得到当前日期
# 得到当前时间
# 得到当前年份用year_变量接收
# 得到当前月份用month_变量接收
# 得到当前天用day_变量接收
# 使用-拼接年月日得到当前日期

4.2 时间字符串转时间类型:strptime

4.2 时间对象转时间字符串:strftime

1、要求

使用from…import…导入datetime模块中的datetime对象,根据任务要求书写代码

2、任务

  • 1、定义一个str_字符串为2019-09-10 8:10:56
  • 2、将str_转换为时间类型2019-09-10 08:10:56,使用str_date变量接收
  • 3、定义now_变量接收当前的日期时间
  • 4、将当前日期时间格式化为——四位的年份/月/日 时:分:秒,使用date_str接收

3、任务提示

  • 1、%Y:代表四位的年份
  • 2、%m:代表月份
  • 3、%d:代表这个月的第几天
  • 4、%H:%M:%S:代表 时:分:秒

4、代码

from datetime import datetime

# 定义一个str_字符串为2019-09-10 8:10:56
str_=

# 将str_转换为日期函数2019-09-10 8:10:56
str_date=
print(str_date)

# 定义now_变量接收当前的日期时间
# 将当前日期时间格式化为——四位的年份/月/日 时:分:秒
date_str=
print(date_str)

4.3 获取时间间隔

1、要求

使用from…import…导入datetime模块中的datetime,timedelta对象,根据任务要求书写代码。

2、任务

  • 1、定义now_变量接收当前日期时间
  • 2、使用now_before接收当前日期时间3天6小时12分钟之前的日期时间
  • 3、使用now_after接收当前日期时间10天之后的日期时间

3、代码实现

from datetime import datetime, timedelta

# 定义now_变量接收当前日期时间
now_=

# 计算当前日期时间3天6小时12分钟之前的日期时间
now_before=

# 计算当前日期时间10天之后的日期时间
now_after=

print(now_before)
print(now_after)

版权声明:本文为博主原创文章,未经博主允许不得转载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InitialHeart2021

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值