python入门基础(15)--模块和python中数学、日期、时间类模块。

python,入门,基础,模块,数学,日期,时间 · 浏览次数 : 60

小编点评

**模块管理方法** **1. 使用模块** * 将程序代码按照功能或其他标准,分别放入不同的文件。 * 使用模块名或包名来标识模块的名称。 **2. 使用包** * 将不同功能代码放到不同的文件夹中,并让他们能相互引用。 * 使用包名来标识模块的名称。 **3. 使用模块和包** * 可以将模块和包一起使用,以实现更复杂的功能。 * 模块可以包含多个函数,每个函数可以单独处理问题。 * 包可以将多个模块组合在一起,以实现更复杂的逻辑。 **4. 使用命名空间** * 使用命名空间来组织代码,将同类或相关类放在一起。 * 命名空间可以包含多个模块,每个模块可以包含多个函数。 **5. 使用导入语句** * 使用导入语句来导入模块或模块中的函数或类。 * 导入语句可以从多个模块中导入函数或类。 **6. 使用模块化工具** * 许多编程工具,例如 PyCharm 和 Visual Studio Code,提供模块化工具,可以帮助您管理代码并进行协作。

正文

接上篇,当我们创建了很多类,比如  图书馆里的藏书,分社会科学类,艺术类、生活类、农业类、工业类等,而工业类又分为轻工业、重工业、信息工业,然后再细分。当分的越来越细时,程序就会越来越大。如何管理,便成了程序开发过程中一个重要的环节。于是可以按照图书馆分类管理的思想,对程序代码进行管理。

 将一个应用程序,按照代码的功能或其他标准,分别放入不同的文件。这些文件就是不同的模块。这样方便管理和维护代码。

同样,也可以将不同的功能代码放到不同的文件夹中,并让他们能相互引用,这就是包。

模块和包都是复杂程序的一种组织方式。

一  、模块

python中模块是包含函数或类的python程序,以".py"为后缀名,用作模块的python程序与其他程序并无多大区别。

要使用模块,python中有三个方法可以导入模块或模块中的函数

import 模块名    这是将整个模块全部导入,使用函数时,先用模块名+"."+函数名,如  import numpy     numpy.mat()

import 模块名 as new_name(给模块取个新名字)  这是给导入模块重新命名,使用函数,用新名+“.”+函数名  如 import numpy as np    np.mat()

from 模块名 import 函数名      这个是直接导入函数,在该模块中,只能使用该函数,如 from numpy import mat      则在该模块下,numpy的其他函数不能被使用,只能用mat()函数。 当然,如果用“*”代替函数名,则numpy的所有函数均可使用。

下面通过最常见的math函数来观察一下。

import math
from math import sqrt
import math as calc

print("调用math.sqrt:\t",math.sqrt(3))
print("直接调用sqrt:\t",sqrt(5))
print("新函数名调用sqrt:\t",calc.sqrt(4))

运行结果:

 上述例子,是直接导入了系统现在有的模块或包,那么自己应该怎么处理呢?自己编写模块和平时写程序一样,既可以是解决某个问题的独立程序,也可以是几个函数构成(如math函数),模块名就是代码保存的文件名。

前面例子中,有一个Calc的类,里面有加、减、乘、除四则运算,那可不可以把它设置为一个模块呢?上文说过,几个函数也可以构成模块。那我们把定义类的“class Calc:”去掉试,就让这四个函数在一起(注意,把四个函数中的self去掉),实例化等放到另一个模块中。

修改名称为clac.py,其中代码如下:

def calcadd(x,y):
    return x+y
    
def calcreduce(x,y):
    return x-y
    
def calcmultiply(x,y):
    return x*y
    
def calcdeviate(x,y):
    return x/y

上述导入math模块的文件,命名为newtest.py,将原打印加、减、乘、除的四个语句,拷贝过来并修改,代码如下:

import math
from math import sqrt
import math as calcper

import calc as new_calc

print("调用math.sqrt:\t",math.sqrt(3))  #前一例子调用math模块
print("直接调用sqrt:\t",sqrt(5))
print("新函数名调用sqrt:\t",calcper.sqrt(4))
    
print("相加的结果是:%s"%new_calc.calcadd(20,50))
print("相乘的结果是:%s"%new_calc.calcmultiply(23,50))
print("相除的结果是:%s"%new_calc.calcdeviate(30,50))
print("相减的结果是:%s"%new_calc.calcreduce(20,50))

运行结果:

重点注意一下:calc.py和newtest.py必须在同一目录下。模块的其他见https://www.cnblogs.com/codingchen/p/16157832.html 中的介绍。

二、部分常见模块功能

1、math和random

前述导入的math模块,主要是数学函数,比如常见的对数函数、三角函数、反三角函数等,还有一些常量,如圆周率pi、自然数e等

 random则包含了常见的随机函数,如random、randint ,按概率生成的函数如gauss(),还有像shuffle(乱序表),choice(随机选择)等。

对上述代码进行适当修改,完成演示:将上述代码中固定的数字,用随机数,choice等完成。在calc.py文件不变的情况下,将newtest.py文件进行修改如下:

import calc as new_calc
import math
import random

m=float(random.random())
n=float(random.choice([5,7,9,13,15,11,13]))  #注意choice()中用的是[1,2,3],而不是(1,2,3)

print("%s"%m)
print("%s"%n)   
print("相加的结果是:%s"%new_calc.calcadd(m,n))
print("相乘的结果是:%s"%new_calc.calcmultiply(m,n))
print("相除的结果是:%s"%new_calc.calcdeviate(n,m))  #m、n位置不一样
print("相减的结果是:%s"%new_calc.calcreduce(m,n))

u=math.sin(m)
v=math.cos(n)
print("%s"%u)
print("%s"%v)   
print("相加的结果是:%s"%new_calc.calcadd(u,v))
print("相乘的结果是:%s"%new_calc.calcmultiply(u,n))  #n没有变化
print("相除的结果是:%s"%new_calc.calcdeviate(n,u))
print("相减的结果是:%s"%new_calc.calcreduce(v,n))    #n没有变化

注意一下:choice()的用法,choice()中用的是[1,2,3]的序列,而不是(1,2,3)。运行结果如下:

 2)日期与时间类

此类标准库有calendar 、datetime和time三个模块,通过下面的例子,先了解一下datetime 和time这两个模块,代码如下(仔细阅读一下注释):

import datetime
import time
import calendar 

print(datetime.datetime.now())
print(time.time())
aa =  datetime.datetime.now()  #定义一个aa,将当前时间赋值给aa
bb = datetime.datetime(2023,9,23,21,56,35,120129) #定义一个bb,将当前时间赋值给bb
cc = aa-bb #将aa-bb的差赋值给cc

print("%s\n"%cc) #打印出cc

aaa=datetime.timedelta(days=5,hours=10)
bbb=datetime.timedelta(hours=6.5)
ccc=aaa+bbb
print("%s\n"%ccc.days)
print("%s\n"%ccc.seconds)
print("%s\n"%ccc.total_seconds())

print(aa+datetime.timedelta(minutes=20))
print("\n")
#闰年的处理,datetime会自动处理闰年
a=datetime.datetime(2020,3,1)
b=datetime.datetime(2020,2,28)
print("%s\n"%(a-b).days)

ab=datetime.datetime(2023,3,1)
ba=datetime.datetime(2023,2,28)
print("%s"%(ab-ba).days)

运行结果如下:

 

 

与python入门基础(15)--模块和python中数学、日期、时间类模块。相似的内容:

python入门基础(15)--模块和python中数学、日期、时间类模块。

接上篇,当我们创建了很多类,比如 图书馆里的藏书,分社会科学类,艺术类、生活类、农业类、工业类等,而工业类又分为轻工业、重工业、信息工业,然后再细分。当分的越来越细时,程序就会越来越大。如何管理,便成了程序开发过程中一个重要的环节。于是可以按照图书馆分类管理的思想,对程序代码进行管理。 将一个应用程

python入门基础(13)--类、对象、全局函数,类内部调用

面向过程的编程语言,如C语言,所使用的数据和函数之间是没有任何直接联系的,它们之间是通过函数调用提供参数的形式将数据传入函数进行处理。 但可能因为错误的传递参数、错误地修改了数据而导致程序出错,甚至是崩溃。当需要修改或维护程序时要从程序提供的一堆数据中去寻找和修改它,要扩展函数的功能,只能重新建立一

python入门基础(14)--类的属性、成员方法、静态方法以及继承、重载

上一篇提到过类的属性,但没有详细介绍,本篇详细介绍一下类的属性 一 、类的属性 方法是用来操作数据的,而属性则是建模必不的内容,而且操作的数据,大多数是属性,比如游戏中的某个boss类,它的生命值就是属性(不同级别的boss,有不同的生命值),被攻击方法(不同的攻击,伤害值不同),当boss被攻击时

全渠道定价、库存决策,混合整数规划建模求解,MNL选择模型,内附代码!

敲敲敲详细的高分牛刊论文阅读笔记,还有Python的PyLogit包详解!全渠道、运筹规划领域入门/基础模型,内附论文的主要内容翻译解读、模型讲解和代码实现!

通过模仿学会Python爬虫(一):零基础上手

好家伙,爬虫来了 爬虫,这玩意,不会怎么办, 诶,先抄一份作业回来 1.别人的爬虫 Python爬虫史上超详细讲解(零基础入门,老年人都看的懂)_ChenBinBini的博客-CSDN博客 # -*- codeing = utf-8 -*- from bs4 import BeautifulSoup

Python单元测试之道:从入门到精通的全面指南

**在这篇文章中,我们会深入探讨Python单元测试的各个方面,包括它的基本概念、基础知识、实践方法、高级话题,如何在实际项目中进行单元测试,单元测试的最佳实践,以及一些有用的工具和资源** ## 一、单元测试重要性 测试是软件开发中不可或缺的一部分,它能够帮助我们保证代码的质量,减少bug,提高系

跟我学Python图像处理丨带你入门OpenGL

摘要:介绍Python和OpenGL的入门知识,包括安装、语法、基本图形绘制等。 本文分享自华为云社区《[Python图像处理] 二十七.OpenGL入门及绘制基本图形(一)》,作者:eastmount。 一.OpenGL入门知识 1.什么是OpenGL OpenGL(Open Graphics L

聊聊神经网络的基础知识

来自《深度学习入门:基于Python的理论与实现》 张量 Numpy、TensorFlow、Pytorch等框架主要是为了计算张量或是基于张量计算。 标量:0阶张量;12,4,3, 向量:一阶张量;[12,4,3] 矩阵:二阶张量;[ [12,4,3], [11,2,3] ] 多阶张量:多维数组;

[转帖]Python学习之十七_django的入门

# Python学习之十七_django的入门 ## 前言 ``` Python学习了一周, 慢慢总结摸索. 自己还是有多不会的地方. 感慨这些年浪费的时间. 所有的时间都是选择大于努力. 努力最多感动自己. 生活是需要的是正确的选择. 平凡的实在人太难在一个固化的社会生存. 共勉. ``` ##

Python多线程编程深度探索:从入门到实战

title: Python多线程编程深度探索:从入门到实战 date: 2024/4/28 18:57:17 updated: 2024/4/28 18:57:17 categories: 后端开发 tags: 多线程 并发编程 线程安全 Python 异步IO 性能优化 实战项目 第1章:Pyth