Python基础知识入门(五)(一)

简介: 模块是一个包含所有定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数、变量等功能来完成数据处理。

一、模块应用

      模块是一个包含所有定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数、变量等功能来完成数据处理。


1.模块导入

      import a                 导入名称为 a 的模块,调用时使用 a.x (x为函数、变量名)进行调用,  例如:导入import random,调用random.randint()。


      from a import b     导入名称为 a 的模块中名称为 b 的函数或变量,调用时使用 b 直接调用,例如: 导入from random import randint ,调用randint()。


      from a import*       导入名称为 a 的模块所有方法,调用时直接使用函数或变量名进行调用,例如: 导入from  random import*,调用randint()。


2.模块别名

      import aaa as a  在使用过程中如名称太长,可用 as 修改模块名字,修改后用a.x进行调用,例如: import random as rd,调用rd.randint()。


3.__name__

      每个模块都有一个__name__属性,其值是'__main__'时,表明该模块自身在运行,否则是被引入。如不想让模块中的某些代码执行,可以用__name__属性来使程序仅调用模块中的一部分。

# YKH.py
print('我是 YKH 模块__name__值:'+__name__)
if __name__ == '__main__':
  print('YKH 模块被直接运行了')
# 我是 YKH 模块__name__值:__main__
# YKH 模块被直接运行

注意:


      __name__ == '__main__'在自身模块调用时,值为'__main__',


      且执行 if  __name__ == '__main__' 下所有内容。

# x.py
print('我是 x 模块__name__值:'+__name__)
if __name__ == '__main__':
  print('x 模块被直接运行了')
# y.py
import x
print('我是 y 模块__name__值:'+__name__)
if __name__ == '__main__':
  print('y 模块被直接运行了')
# 我是 x 模块__name__值 x
# 我是 y 模块__name__值__main__
# y 模块被直接运行

注意:    


      __name__ == '__main__'在自身模块调用时,值为'__main__',且执行if __name__ ==


'__main__' 下所有内容,调用其他模块时 __name__ 值为调入模块名,所以 __name__ 值不


为'__main__',故不会执行调入模块下if __name__ == '__main__' 下所有内容。


4.dir()函数

      内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回。

import random
print(dir(random))
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 
'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', 
'_Set', '__all__', '__builtins__', '__cached__', '__doc__', 
'__file__', '__loader__', '__name__', '__package__', '__spec__',
 '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', 
'_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', 
'_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 
'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 
'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 
'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 
'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 
'weibullvariate']

5.常用模块

1)random

函数

描述(import random)

 random()

在[0,1)范围内随机生成一个浮点数。

如random.random() 

 uniform(x,y)

[x,y]范围内随机生成一个浮点数。

如random.uniform(3,5)。

randint(x,y)

在指定范围内随机一个整数。

如random.randint(1,10)。

randrange([start,] stop [,step])

指定范围内按指定基数递增集合中获取一个随机数,默认值为 1。


start -- 指定范围内的开始值,包含在范围内。


stop -- 指定范围内的结束值,不包含在范围内。


step -- 指定递增基数。


如random.randrange(1, 100, 2)从 1-100 中选取一个奇数。

choice(x)

从序列x中随机挑选一个元素,x --可以是一个列表、元组、字符串。

如random.choice(range(10)),从0到9中随机挑选一个整数。

sample(x,y)

从序列中随机指定个数的元素。

如x = [1,2,3,4,5],random.sample(x,3)。

 seed([x])

改变随机数生成器种子,需在调用其他随机函数之前调用此函数。

如random.seed(8),提前指定种子数字为8。

 shuffle(x)

将序列x的所有元素随机排序。

如random.shuffle(x)。


2)time、datetime

函数

描述(import time)

time()

返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

time.time(),返回 1668499929.629205 。

sleep(x)

推迟调用线程的运行,可通过参数x指秒数,表示进程挂起的时间。

time.sleep(3),延迟3秒后继续执行。

asctime(x)

返回一个可读的形式为"Tue(星期) Nov(月份) 15 06:56:32 2022"


(2022年11月15日 周二06时56分32秒)的24个字符的字符串 。time.asctime(),返回 Tue Nov 15 06:56:32 2022。


time.asctime(time.gmtime()),返回 Tue Nov 15 06:56:32 2022。


time.asctime(time.localtime()),返回 Tue Nov 15 06:56:32 2022。

ctime(x)

把时间戳(按秒计算的浮点数)转化为time.asctime()的形式。

如参数为None的时候,将会默认time.time()为参数。

time.ctime(),返回 Tue Nov 15 06:56:32 2022。


gmtime(x)

将一个时间戳转换为UTC时区(0时区)的struct_time,


如参数为None,默认time.time()为参数 。


ti


localtime(x)

类似gmtime(),作用是格式化时间戳为本地的时间。


如参数为None,默认time.time()为参数。


time.localtime(),返回 time.struct_time(tm_year=2022, tm_mon=11, tm_mday=15, tm_hour=7, tm_min=14, tm_sec=54, tm_wday=1, tm_yday=319, tm_isdst=0)


mktime(x)

与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,

返回用秒数来表示时间的浮点数。

x = (2022,11,15,6,56,32,1,319,0)
time.mktime(x),返回 1668495392.0 。


strftime(x)

格式化时间,返回可读字符串表示的当地时间,格式由参数 x 决定。

time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())

返回 2022-11-15 07:57:58 。


strptime(x)

根据指定的格式把一个时间字符串解析为时间元组。time.strptime("15 Nov 22 32 56 06", "%d %b %y %S %M %H")


返回 time.struct_time(tm_year=2022, tm_mon=11, tm_mday=15, tm_hour=6, tm_min=56, tm_sec=32, tm_wday=1, tm_yday=319, tm_isdst=-1) 。

3)math

函数

描述(import datetime)

now()

获取当前日期和时间 。

datetime.datetime.now(),返回 2022-11-16 06:06:16.112800 。

today()

获取当前日期和时间 。

datetime.date.today(),返回 2022-11-16 。

datetime.datetime.today(),返回 2022-11-16 08:27:33.373906 。

year

获取日期年 。

datetime.date.today().year ,返回 2022 。

datetime.datetime.today().year ,返回 2022 。

month

获取日期月 。

datetime.date.today().month,返回11 。

datetime.datetime.today().month,返回 11 。

day

获取日期日。

datetime.date.today().day,返回 16 。

datetime.datetime.today().day,返回16 。

hour

获取时间小时。

datetime.datetime.today().hour,返回 12 。 

minute

获取时间分钟。

datetime.datetime.today().minute,返回 13 。

second

获取时间秒数。

datetime.datetime.today().second,返回 15 。

isocalendar()

返回一个包含三个值的元组,三个值依次为:

年份,周数,星期数(周一为1…周日为7) 。

datetime.date.today().isocalendar() ,返回 (2022, 46, 3)。

weekday()

返回指定日期所在的星期数(周一为 0, 周日为 6 )

datetime.datetime.today().weekday(),返回 2 。

isoweekday()

返回符合ISO标准的指定日期所在的星期数(周一为1…周日为7)  。

datetime.datetime.today(). isoweekday(),返回 3 。

toordinal()

返回公元公历开始到现在的天数。公元1年1月1日为1 。

datetime.date.today().toordinal(),返回 738475。

timetuple()

将时间日期格式化,返回一个类型为time.struct_time的数组 。datetime.datetime.today().timetuple() ,


返回 time.struct_time(tm_year=2022, tm_mon=11, tm_mday=16,


tm_hour=8, tm_min=39, tm_sec=28, tm_wday=2, tm_yday=320, tm_isdst=-1)  

strftime(x)

格式化时间,返回可读字符串表示的当地时间,格式由参数 x 决定。

datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),

返回 2022-11-16 06:36:32 。

timedelta()

在指定日期时间基础上增加指定时

间和时间。datetime.datetime.now() + datetime.timedelta(days = 5)            加5天 。


datetime.datetime.now() + datetime.timedelta(days = -5)           减5天 。


datetime.datetime.now() + datetime.timedelta(hours=5)             加5小时 。


datetime.datetime.now() + datetime.timedelta(minutes=5)         加5分钟 。


datetime.datetime.now() + datetime.timedelta(seconds=300)    加5秒钟 。

struct_time元组属性如下:

属性

描述

tm_year

2022                                   年

tm_mon

1 到 12                                月

tm_mday

1 到 31                                日

tm_hour

0 到 23                                时

tm_min

0 到 59                                分

tm_sec

0 到 61 (60或61 是闰秒)     秒

tm_wday

0到6 (0是周一)                    一周的第几日

tm_yday

1 到 366(儒略历)                 一年的第几日

tm_isdst

-1, 0, 1                               1 - 夏令时 0 - 非夏令时    -1 - 未确定夏令时


时间日期格式化符号属性如下:

符号

描述

%a

本地简化星期名称 。

%A

本地完整星期名称 。

%b

本地简化的月份名称 。

%B

本地完整的月份名称 。

%c

本地相应的日期表示和时间表示 。

%C

年份的前两位。

%d

月内中的一天(0-31)。

%D

当前日期(11/15/22)

%e

每月的第几天。

%F

当前日期(2022-11-15)

%g

年份的后两位。

%G

当前日期年份。

%h

英文简写月份名。

%H

24小时制小时数(0-23)。

%I

12小时制小时数(01-12)。

%j

年内的一天(001-366)。

%m

月份(01-12)。

%M

分钟数(00-59)。

%p

本地A.M.或P.M.的等价符 。

%r

12小时时间(12:26:15 AM)

%R

显示当前时:分(08:27)。

%S

秒(00-59)。

%u

星期(0-6),每周第几天 。

%U

一年中的星期数(00-53) 。

%V

每年的第几周,使用基于周的年。

%w

星期(0-6),每周第几天 。

%W

一年中的星期数(00-53)。

%x

本地相应的日期表示 。

%X

本地相应的时间表示 。

%y

两位数的年份表示(00-99)。

%Y

四位数的年份表示(000-9999)。

%z

与utc时间的间隔 (如果不存在为空字符)

%Z

时区的名字(如果不存在为空字符)

%%

%号本身 。

3)math

函数

描述(import math)  

sqrt(x)

计算平方根,返回的数据为浮点型数据 。

math.sqrt(9),3.0 。

log(x,y)

计算对数,其中x为真数,y为底数 。

math.log(100,10),2.0 即 100是10^2 。

ceil(x) 

向上取整操作 。

math.ceil(1.23),2 。

floor(x)

向下取整操作 。

math.floor(1.50),1 。

pow(x,y)

计算 x 的 y 次方 。 

math.pow(2,3),8.0 。

fabs(x) 

计算一个数值的绝对值 。

math.fabs(-123),123.0 。

pi 

圆周率 π 。

math.pi,3.141592653589793 。

自然常数 e 。

math.e,2.718281828459045 。

trunc(x)

返回x的整数部分 。

math.trunc(12.36),12 。

modf(x)

返回x的小数和整数 。

math.modf(12.36),(0.35999......, 12.0) 。

fmod(x,y) 

取余 。

math.fmod(3,2),1.0 。

fsum(x)

返回序列中各元素之和 。

math.fsum([1,2,3,4,5]),15.0 。

factorial(x) 

返回x的阶乘 。

math.factorial(3),6 。

gcd(x,y) 

返回整数x和y的最大公约数 。

math.gcd(2,6),2 。


相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
376 7
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
372 1
|
2月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
2月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
571 1
|
3月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
226 5
|
3月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
3月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
182 0
|
3月前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
101 0
|
4月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
241 0
|
4月前
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
381 0

推荐镜像

更多