python基础篇{模块}

 python基础学习路线:

   · 数据分析之python基础篇{基础语法}
   · 数据分析之python基础篇{数据类型}
   · 数据分析之python基础篇{控制流语句}
   · 数据分析之python基础篇{函数}
   · 数据分析之python基础篇{模块}
   · 数据分析之python基础篇{文件操作}
   · 数据分析之python基础篇{Pymysql}
   · 数据分析之python基础篇{面向对象}

  在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块。

  说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块

  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
  • 模块让你能够有逻辑地组织你的 Python 代码段。
  • 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
  • 模块能定义函数,类和变量,模块里也能包含可执行的代码

import

  在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。形如:import module1,mudule2...

  当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。

  在调用math模块中的函数时,必须这样引用:模块名.函数名

import math
math.sqrt(4)
	运行结果:2.0
# 一次导入多个包
import math,random,time

from…import 语句

  Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:from 模块名 import 函数名1,函数名2....

# 从整个math包里面只导入这四个函数
from math import sin,cos,tan,degrees
sin(10)
cos(1)
	运行结果:-0.5440211108893699
	         0.5403023058681398
from math import * # * 匹配 ,代表所有函数都导进来

   这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。

   注意:通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数。

  想一想: 为什么加上模块名调用更合理呢?
  答: 因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名

as

  模块名称太长了,不方便输入,可以设置一个别名

import math as m
m.ceil(5.1)
	运行结果:6

常用模块

  这里简单介绍datetime时间模块和time时间模块,介绍在数据分析中经常用到的一些功能,详细介绍,请大家移步:Python之日期与时间处理模块

datetime时间模块

  datetime模块提供了处理日期和时间的类,既有简单的方式,又有复杂的方式。它虽然支持日期和时间算法,但其实现的重点是为输出格式化和操作提供高效的属性提取功能。

from datetime import datetime
# 这里注意, 如果使用的是语法import datetime
# 则导入整个datetime包, 要使用datetime.datetime才能够使用
now = datetime.now() #返回指定时区日期时间的datetime对象
print(now)
	运行结果:2021-06-29 14:24:13.031632
datetime(2020,4,1) # 生成一个时间数据
	运行结果:datetime.datetime(2020, 4, 1, 0, 0)
from datetime import datetime
# 这里注意, 如果使用的是语法import datetime
# 则导入整个datetime包, 要使用datetime.datetime才能够使用
now = datetime.now() #返回指定时区日期时间的datetime对象
#取出时间中的某一部分
now.year
now.month
now.day

datetime与时间戳

  电脑中的时间由cpu储存, 所以一般叫做cpu时间.cpu时间是计算从1970年1月1日0点0分到目前这个时间点所经历的的秒数什么?你说1970年以前的时间, 那当然就是负的啦,

  那么时间戳和datetime之间如何转换呢?把一个datetime类型转换为timestamp需要调用timestamp()方法,时间戳转换成时间需要调用fromtimestamp()方法

datetime.now().timestamp() 
	运行结果:1624948872.775596

  时间戳最重要的用途就是,可以计算出cpu的运行时间,借此来推算出程序的效率。

a_time = datetime.now().timestamp()
datetime.now().timestamp() - a_time
	运行时间:25.669857025146484
# 时间戳转换成时间
datetime.fromtimestamp(1530892800)# 括号内为秒数,从1970年1月1日0点
# 或者可以这样写
datetime_test = 150000000
datetime.fromtimestamp(datetime_test)
	运行结果:datetime.datetime(2018, 7, 7, 0, 0)
	         datetime.datetime(1974, 10, 3, 10, 40)

str转换为datetime

  很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:datetime.strptime(<时间字符串>,<你输入格式>)

datetime.strptime('2008:12:01 3:24:12','%Y:%m:%d %H:%M:%S')
	运行时间:datetime.datetime(2008, 12, 1, 3, 24, 12)
time = input("请输入你想查询的时间: 格式为:'%Y-%m-%d %H:%M:%S' ")
c = datetime.strptime(time, '%Y-%m-%d %H:%M:%S')
print(c)
	运行结果:请输入你想查询的时间: 格式为:'%Y-%m-%d %H:%M:%S' 2001-12-01 12:02:28
	         2001-12-01 12:02:28

datetime转换为str

  如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:

from datetime import datetime
now = datetime.now()
now.strftime('%Y------%d  ======= %H')
	运行结果:'2021------29  ======= 14'
now.strftime('%y-%m-%d %H:%M:%S')
now.strftime('%Y %m %d')
	运行结果:'21-06-29 14:53:34'
             '2021 06 29'

time时间模块

&esmp; time的sleep()方法可以规定程序每次休息几秒钟

import time
for i in range(5):
    print(i)
    time.sleep(2) # 每次休息2秒钟

  time获取当前时间用asctime()方法,time()方法可以获取当前的时间戳

time.asctime() # 获取当前时间
time.time() #获取当前时间戳

time模块应用

  计算一段代码执行时间

# 在运行之前,记录一个开始时间
start_time = time.time()
num = 0
for i in range(1,100000001):
    num+=i
print(num)
# 运行之后,用当前时间,减去刚来记下来的开始时间
print(time.time() - start_time , 's')
	运行结果:5000000050000000
	         14.545671224594116 s

random模块

import random
# 返回一个随机小数
print(random.random()) 
 # 返回(1-5)随机整型数据
print(random.randint(1,5))  
 # 返回(1-10)随机数据
print(random.randrange(1,10)) 
 #随机打乱列表 
L = [1,2,3,4,5]
random.shuffle(L)  
#随机数种子,即想要生存随机数,又想要大家生存的随机数一样
random.seed(100)   # 100个人生成随机数都一样

  小练习:

# 验证码:大写字母和数字的组合,
# 36个元素 26个 10个
for i range(4):
    # 生成1-36的随机数
    n = random.randint(1,36)
    #判断这个数字是否大于11
    if n < 11:
        t = random.randint(0,9)
    else:
        # 随机生成65到90范围的数字,因为在ASCII码中 65对应A ,90对应Z
        t = chr(random.randint(65,90))
    #每次生成一个
    #拼接到s上面来
    s += t
print(s)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值