翼度科技»论坛 编程开发 python 查看内容

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

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
接上篇,当我们创建了很多类,比如  图书馆里的藏书,分社会科学类,艺术类、生活类、农业类、工业类等,而工业类又分为轻工业、重工业、信息工业,然后再细分。当分的越来越细时,程序就会越来越大。如何管理,便成了程序开发过程中一个重要的环节。于是可以按照图书馆分类管理的思想,对程序代码进行管理。
 将一个应用程序,按照代码的功能或其他标准,分别放入不同的文件。这些文件就是不同的模块。这样方便管理和维护代码。
同样,也可以将不同的功能代码放到不同的文件夹中,并让他们能相互引用,这就是包。
模块和包都是复杂程序的一种组织方式。
一  、模块
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函数来观察一下。
  1. import math
  2. from math import sqrt
  3. import math as calc
  4. print("调用math.sqrt:\t",math.sqrt(3))
  5. print("直接调用sqrt:\t",sqrt(5))
  6. print("新函数名调用sqrt:\t",calc.sqrt(4))
复制代码
运行结果:

 上述例子,是直接导入了系统现在有的模块或包,那么自己应该怎么处理呢?自己编写模块和平时写程序一样,既可以是解决某个问题的独立程序,也可以是几个函数构成(如math函数),模块名就是代码保存的文件名。
前面例子中,有一个Calc的类,里面有加、减、乘、除四则运算,那可不可以把它设置为一个模块呢?上文说过,几个函数也可以构成模块。那我们把定义类的“class Calc:”去掉试,就让这四个函数在一起(注意,把四个函数中的self去掉),实例化等放到另一个模块中。
修改名称为clac.py,其中代码如下:
  1. def calcadd(x,y):
  2.     return x+y
  3.    
  4. def calcreduce(x,y):
  5.     return x-y
  6.    
  7. def calcmultiply(x,y):
  8.     return x*y
  9.    
  10. def calcdeviate(x,y):
  11.     return x/y
复制代码
上述导入math模块的文件,命名为newtest.py,将原打印加、减、乘、除的四个语句,拷贝过来并修改,代码如下:
  1. import math
  2. from math import sqrt
  3. import math as calcper
  4. import calc as new_calc
  5. print("调用math.sqrt:\t",math.sqrt(3))  #前一例子调用math模块
  6. print("直接调用sqrt:\t",sqrt(5))
  7. print("新函数名调用sqrt:\t",calcper.sqrt(4))
  8.    
  9. print("相加的结果是:%s"%new_calc.calcadd(20,50))
  10. print("相乘的结果是:%s"%new_calc.calcmultiply(23,50))
  11. print("相除的结果是:%s"%new_calc.calcdeviate(30,50))
  12. 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文件进行修改如下:
  1. import calc as new_calc
  2. import math
  3. import random
  4. m=float(random.random())
  5. n=float(random.choice([5,7,9,13,15,11,13]))  #注意choice()中用的是[1,2,3],而不是(1,2,3)
  6. print("%s"%m)
  7. print("%s"%n)   
  8. print("相加的结果是:%s"%new_calc.calcadd(m,n))
  9. print("相乘的结果是:%s"%new_calc.calcmultiply(m,n))
  10. print("相除的结果是:%s"%new_calc.calcdeviate(n,m))  #m、n位置不一样
  11. print("相减的结果是:%s"%new_calc.calcreduce(m,n))
  12. u=math.sin(m)
  13. v=math.cos(n)
  14. print("%s"%u)
  15. print("%s"%v)   
  16. print("相加的结果是:%s"%new_calc.calcadd(u,v))
  17. print("相乘的结果是:%s"%new_calc.calcmultiply(u,n))  #n没有变化
  18. print("相除的结果是:%s"%new_calc.calcdeviate(n,u))
  19. print("相减的结果是:%s"%new_calc.calcreduce(v,n))    #n没有变化
复制代码
注意一下:choice()的用法,choice()中用的是[1,2,3]的序列,而不是(1,2,3)。运行结果如下:

 2)日期与时间类
此类标准库有calendar 、datetime和time三个模块,通过下面的例子,先了解一下datetime 和time这两个模块,代码如下(仔细阅读一下注释):
  1. import datetime
  2. import time
  3. import calendar
  4. print(datetime.datetime.now())
  5. print(time.time())
  6. aa =  datetime.datetime.now()  #定义一个aa,将当前时间赋值给aa
  7. bb = datetime.datetime(2023,9,23,21,56,35,120129) #定义一个bb,将当前时间赋值给bb
  8. cc = aa-bb #将aa-bb的差赋值给cc
  9. print("%s\n"%cc) #打印出cc
  10. aaa=datetime.timedelta(days=5,hours=10)
  11. bbb=datetime.timedelta(hours=6.5)
  12. ccc=aaa+bbb
  13. print("%s\n"%ccc.days)
  14. print("%s\n"%ccc.seconds)
  15. print("%s\n"%ccc.total_seconds())
  16. print(aa+datetime.timedelta(minutes=20))
  17. print("\n")
  18. #闰年的处理,datetime会自动处理闰年
  19. a=datetime.datetime(2020,3,1)
  20. b=datetime.datetime(2020,2,28)
  21. print("%s\n"%(a-b).days)
  22. ab=datetime.datetime(2023,3,1)
  23. ba=datetime.datetime(2023,2,28)
  24. print("%s"%(ab-ba).days)
复制代码
运行结果如下:

 
 
翻译
搜索
复制

来源:https://www.cnblogs.com/codingchen/p/17718577.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具