python模块初识

模块简介


什么是模块?

用书里的话说:模块是最高级别的程序组织单元。这句话的意思是,模块什么都能封装

  • 函数可以封装变量
  • 类可以封装函数和变量
  • 那么模块就是封装类、函数和变量

像我们使用pycharm每次写代码之前都要创建一个.py文件,这个文件本质上就是一个模块,我在在这个项目中也可以导入我们自己创建的模块

模块的导入和使用

比如我们先创建一个自己写的python文件-->test.py,代码如下

a = '我是模块中的变量a'

def hi():
    a = '我是函数里的变量a'
    print('函数“hi”已经运行!')

class Go2:
    a = '我是类2中的变量a'
    def do2(self):
        print('函数“do2”已经运行!')

再创建一个文件,导入这个模块并输出

import test  # 导入test模块

print(test.a)  # 使用“模块.变量”调用模块中的变量

test.hi()  # 使用“模块.函数()”调用模块中的函数

A = test.Go2()  # 使用“变量 = 模块.类()”实例化模块中的类
print(A.a)  # 实例化后,不再需要“模块.”
A.do2()  # 实例化后,不再需要“模块.”

import语句还有一种用法是import…as…。比如我们觉得import test太长,就可以用import test as t语句,意思是为“test”取个别名为“t”

另外,当我们需要同时导入多个模块时,可以用逗号隔开。比如import a,b,c可以同时导入“a.py,b.py,c.py”三个文件

还有一种导入方式是:from...import..跟格式看上去类似,就是从某一个模块中导入一部分使用

from test import hi

hi() # 使用函数“hi”时无需加上“模块.”前缀

对于from … import …语句要注意的是,没有被写在import后面的内容,将不会被导入

如果使用了未导入部分的代码,程序将会报错

程序入口

当我们有了一大堆py文件组成一个程序的时候,为了【指明】某个py文件是程序的运行入口,我们可以在该py文件中写出这样的代码

if __name__ == '__main__'   -->>就是程序的入口


#代码块 1……

if __name__ == '__main__':
    #代码块 2……
  1. 当这个文件被直接运行时,将会执行代码块2
  2. 当这个文件通过import被导入到其他文件时,代码块2不会执行

模块引用


如何使用他人的模块?

比如之前用到的time模块和random模块之类的

一般情况下使用time模块,都是来作为延时的,如下代码

import time   

print('第一句话,过两秒出现第二句。')
time.sleep(2)
print('第二句话。')

如何自学模块

下面以random模块为例,英文好的话可以阅读官方文档:https://docs.python.org/3.6/library/random.html

我们也可以直接进行百度

import random  # 调用random模块

a = random.random()  # 随机从0-1之间抽取一个小数
print(a)

a = random.randint(0,100)  # 随机从0-100之间抽取一个数字
print(a)

a = random.choice('abcdefg')  # 随机从字符串/列表/字典等对象中抽取一个元素(可能会重复)
print(a)

a = random.sample('abcdefg', 3) # 随机从字符串/列表/字典等对象中抽取多个不重复的元素
print(a)

items = [1, 2, 3, 4, 5, 6]  # “随机洗牌”,比如打乱列表
random.shuffle(items)
print(items)

运行代码可以看到

另外,我们还可以使用dir()函数查看一个模块,看看它里面有什么变量、函数、类、类方法

看到生疏的再去百度

总结如下图

time模块的小练习,计时器

import time

input("欢迎使用“时间管理器”!请按回车继续。")

while True:
    task_name = input('请输入任务名:')
    task_time = int(input('你觉得自己至少可以专注这个任务多少分钟?输入 N 分钟'))
    input('此次任务信息:\n我要完成的任务:%s\n我至少要专注:%d分钟\n按回车开始计时:'%(task_name,task_time))
    start = time.time()  # 开始计时
    start_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))  # 格式化日期
    
    # 实际代码:分钟转成秒要乘60,用-1来倒计时。
    # for t in range(task_time*60,0,-1):
    for t in range(task_time,0,-1):
        info = '请专注任务,还要保持专注 ' + str(t) + ' 秒哦!'
        print(info,end="")
        print("\b"*(len(info)*2),end="",flush=True)
        time.sleep(1)
    print('你已经专注了 %d 分钟,很棒~再加把劲,完成任务!'%task_time)  # 倒计时后,才继续运行之后的代码。

    # 询问任务是否完成
    task_status = input('请在任务完成后按输入y:')
    if task_status == 'y':
        end = time.time()  # 一定用户按了 y,就记下结束时间。
        end_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))  # 日期格式化
        actual_time = int((end -start)/60)  # 始末时间相减,从秒换算到分,除以60。
        start_end = start_time + '——' + end_time + '\n'
        with open('timelog3.txt','a', encoding = 'utf-8') as f:
            f.write(task_name + ' 的预计时长为:' + str(task_time) + '分钟\n')
            f.write(task_name + ' 的实际时长为:' + str(actual_time) + '分钟,具体时间为:' + start_end)
        again = input('建立一个新任务请按 y, 退出时间日志记录器请按 q:')
        if again == 'q':            
            break
    else:
        print('抱歉,你的输入有误。请重启时间记录器。')

print('愿被你善待的时光,予你美好的回赠。')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值