Python —— 模块、包

news2024/11/15 4:02:46

一、模块和包

1. 模块module

模块是 Python 程序架构的一个核心概念。Python中模块就是一个.py文件,模块中可以定义函数变量。模块可以被其他模块引用

1.1. 创建模块文件

创建文件:utils.py

# 定义变量 
name = '张三'

# 定义函数
def sum(a,b):
    return a+b

# 定义类
class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return 'name:{},age:{}'.format(self.name,self.age)

1.2. 导入模块中的功能

整体导入模块

# 导入模块
import utils

# 使用模块中功能
print(utils.name)
# 调用模块中的sum方法
result = utils.sum(10,20)
# 创建模块utils中的Person类对象
p = utils.Person('张三',30)

导入模块中部分功能

# 从模块中导入部分功能
from utils import name, sum

# 使用name
print(name)
# 调用sum函数
result = sum(10,20)

导入模块中全部功能

from utils import *

# 使用name
print(name)
# 调用sum函数
result = sum(10,20)
# 创建Person对象
p = Person('林青霞',60)

2. 模块的导入冲突

如果两个模块中有同名的变量、函数或者类,同时引入就可能出现冲突

2.1. 部分导入冲突

from hello import name
from hi import name

print(name)

同时引入name的话,输出的namehi中的name,是有顺序的

局部引入冲突解决方案

可以通过as 给功能起别名

from hello import name as hello_name
from hi import name as hi_name

print(hello_name)
print(hi_name)

2.2. 全部导入冲突

from hello import *
from hi import *

print(name)

同样输出的是hi中的name属性

全部引入冲突解决方案

直接引入模块

import hello
import hi

print(hello.name)
print(hi.name)

3. 模块的内置变量__name__

__name__是模块中的内置变量,每个模块都有这个属性

创建hello.py

print(__name__)

直接运行hello.py,结果为:

__main__

其它模块导入hello.py

import hello

结果为:

hello

3.1. __name__的特点

  • 如果将当前模块作为启动项,__name__值为__main__
  • 如果当前模块当作依赖引入,__name__值不为__main__,为依赖的模块名称

3.2. __name__作用

python没有入口函数的概念,可以通过__name__的功能

def sum(m,n):
    return m+n

if __name__ == '__main__':
    a = 10
    b =20
    result = sum(a,b)
    print(result)

主程序的代码放在if __name__ == '__main__':里。这样当前模块即可以独立测试运行,也可以被其他文件导入使用。如果不添加此if判断,别的地方导入当前文件模块时,会运行一些不需要的代码。

4. 包 package

包就是个文件夹,用来放模块的,限定了模块的命名空间

4.1. 包的作用

  • 用来管理模块的
  • 让业务更清晰化
  • 解决一些命名的问题
network包:可以用来管理网络访问
    cart模块中,可以提供购物车的增删改查功能
    product中,可以提供商品的查看功能
    user模块中,可以提供登录,注册等功能

storage包:可以用来管理本地存储
    cart模块中,可以提供购物车存储功能
    product中,可以提供商品存储功能
    user模块中,可以提供用户信息存储功能

4.2. 引入包中模块的功能方法一

import 包名.模块名

import pkg.hello

#访问模块中的属性
print(pkg.hello.name)

#访问模块中的函数
pkg.hello.say()

#访问模块中的类
nice = pkg.hello.Nice()

4.3. 引入包中模块的功能方法二(推荐)

from pkg import hello

#访问模块中的属性
print(hello.name)

#访问模块中的函数
hello.say()

#访问模块中的类
nice = hello.Nice()

4.4. 引入包中模块的功能方法三(推荐)

from pkg.hello import name
from pkg.hello import say
from pkg.hello import Nice

#访问模块中的属性
print(name)

#访问模块中的函数
say()

#访问模块中的类
nice = Nice()

4.5. 引入包中模块的功能方法四

from pkg.hello import *

#访问模块中的属性
print(name)

#访问模块中的函数
say()

#访问模块中的类
nice = Nice()

二、系统的内置模块

1. sys模块

  • sys.argv 获得启动时的参数
  • sys.path 获取加载的环境
  • sys.exit()程序退出

2. time模块

time模块,包含和时间相关信息

time.time()获取当前时间戳,单位是秒,(相对于1970年1月1日的0点0时0分0秒)

import time
result = time.time() # 获取当前时间
print(result)

time.sleep(秒)阻断程序

import time

# print('程序开始')
# 睡眠3秒钟
time.sleep(3)
# print('程序结束')

3. datetime模块

datetime获取日期

datetime.datetime.now().year
datetime.datetime.now().month
datetime.datetime.now().day

import datetime
# 获取当前年
year = datetime.datetime.now().year
# 获取月
month = datetime.datetime.now().month
# 获取日期
day = datetime.datetime.now().day
print(year)
print(month)
print(day)

# 格式化日期时间
now = datetime.datetime.now()
str_time = datetime.datetime.strftime(now, "%Y-%m-%d %H:%M:%S")

4. 计算排序

aaa = [2, 4, 1, 2, 3, 6]
# 列表最大值
print(max(aaa))
# 列表最小值
print(min(aaa))
# 列表和
print(sum(aaa))
# 列表长度
print(len(aaa))
# 列表排序
print(sorted(aaa))
# 列表倒序
print(sorted(aaa, reverse=True))

5. math模块

math是数学相关的库

math.pow        求幂
math.floor    取下
math.ceil        取上
round                四舍五入
math.sin cos tan…

import math
# 幂
print(math.pow(10, 2))
# 向下取整
print(math.floor(1.8234234234234))
# 向上取整
print(math.ceil(1.1234234234234))
# 四舍五入
print(round(1.6234234234234))

# sin  传入弧度值  pi 3.14 180度
print(math.sin(1.57))

5. random模块

random主要用来产生随机数

random.randint(start,end)	# 随机整数,[start,end]
random.random()						# 随机浮点数, [0,1)
random.uniform(start,end)	# 随机浮点数, [start,end]
random.choice([])					# 随机数组, 返回单个元素
random.choices([])				# 随机数组, 返回列表
import random

# 随机整数
print(random.randint(10, 20))
# 随机小数 [0, 1)
print(random.random())
# 随机浮点类型数据
print(random.uniform(1.3, 8.5))

# 从列表中随机获取元素
lst = [10,20,30]
print(random.choice(lst))

# 随机返回列表 返回单个元素的列表
print(random.choices(lst))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1630989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】ViTAE:Vision transformer advanced by exploring intrinsic inductive bias

ViTAE:Vision transformer advanced by exploring intrinsic inductive bias 论文地址摘要:简介:3 方法论3.1 重温视觉变压器3.2 ViTAE3.3 缩减单元3.4 Normal cell3.5 模型细节 4 训练4.1 Implementation details4.2 Comparison with the state-of-the-…

选择洗地机需要注意什么?六大选购技巧,亲测有效

这些年,洗地机行业的「卷」,就从来没停过!特别是最近一两年,随随便便升级点啥,都能出个新款!那么,面对种类繁多的洗地机,我们应该怎么去选购呢?今天笔者来给大家讲讲选择…

怎么通过PHP语言实现远程控制棋牌室

怎么通过PHP语言实现远程控制棋牌室呢? 本文描述了使用PHP语言调用HTTP接口,实现控制棋牌室,通过专用的包间控制器,来实现包间内所有电器以及门锁的独立控制。 可选用产品:可根据实际场景需求,选择对应的规…

穷人想要改命,是选择打工还是创业? 2024创业项目小成本!2024轻资产创业!2024风口行业!2024普通人做什么行业赚钱?

今日话题穷人想要改命,是选择打工还是创业? 改命的方式就是跳进水里,忍受呛水,学会游泳,这个过程越年轻实现越好,就像小鹰往山崖下跳,要么学会飞,要么就狠狠的被摔死。打工思维和创…

请编写函数fun,该函数的功能是:实现B=A+A‘,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

回归预测 | MATLAB实现BO-BP贝叶斯优化BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现BO-BP贝叶斯优化BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-BP贝叶斯优化BP神经网络多输入单输出回归预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 回归预测 | MATLAB实现BO-BP贝叶斯优化BP神经网络多输入单输出回归预测 B…

【论文阅读】互连网络的负载平衡路由算法 (GAL, Globally Adaptive Load-balancing 全局自适应负载平衡)

Globally Adaptive Load-balancing 全局自适应负载平衡 GAL: Globally Adaptive Load-balanced routing 全局自适应负载平衡路由 1. GAL on a ring2. GAL on higher dimensional torus3. 实验性能4. 算法稳定性 Stability总结 References Globally Adaptive Load-balancing 全…

node.js + @elastic/elasticsearch 操作elasticsearch数据库

我这边node.js 使用的是 koa2,elasticsearch是8.11.1版本 官网:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/getting-started-js.html 一、elastic/elasticsearch 连接 elasticsearch数据库 如果elasticsearch没有设…

开发模型???

开发模型??? 一:什么是需求??二:开发模型2.1:软件的生命周期2.1.1:软件生命周期 2.2:常见开发模型2.2.1:瀑布模型2.2.2:螺旋模型2.2.3:增量模型 && 迭代模型 二级目录 一级目录二级目录二级目录二级目录三级目录 一:什么是需求?? 用户需求:通常就是一句话,没有…

网络原理(qq消息发送原理)

1.网络初识 IP地址 概念: IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。 就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到…

时间序列生成数据,TransformerGAN

简介:这个代码可以用于时间序列修复和生成。使用transformer提取单变量或者多变时间窗口的趋势分布情况。然后使用GAN生成分布类似的时间序列。 此外,还实现了基于prompt的数据生成,比如指定生成某个月份的数据、某半个月的数据、某一个星期的…

Git变更账户、查看账户

1、变更账户 (1)修改当前文件夹用户 git config user.name “新用户名” git config user.email “新邮箱” (2)修改全局git用户 git config - -global user.name “新用户名” git config - -global user.email “新邮箱”…

TensorRT模型压缩

参考链接: https://www.jianshu.com/p/805b76c9d229 https://blog.csdn.net/chenhaogu/article/details/132677778 基本理论 TensorRT是一个高性能的深度学习推理优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数…

(六)几何平均数计算 补充案例 #统计学 #CDA学习打卡

一. 两个案例 1)几何平均数计算:基金年平均增长率计算 在财务、投资和银行业的问题中,几何平均数的应用尤为常见,当你任何时候想确定过去几个连续时期的平均变化率时,都能应用几何平均数。其他通常的应用包括物种总体…

《HCIP-openEuler实验指导手册》1.2Apache主页面配置

知识点 一、配置服务器监听IP及端口 注释主配置文件“监听IP及端口”部分 cd /etc/httpd/conf cp httpd.conf httpd.conf.bak vim httpd.conf可以在普通模式下搜索Listen关键字 :/Listen按n键继续向后搜索 在/etc/httpd/conf.d中新建子配置文件port.conf: tou…

FPGA秋招-笔记整理(3)无符号数、有符号数

参考:Verilog学习笔记——有符号数的乘法和加法 一、无符号数、有符号数 将输入输出全部定义为有符号数 (1)无符号数的读取按照原码进行,有符号数的读取应该按照补码读取,计算规则为去掉符号位后取反、加1在计算数值…

84.柱形图中最大的矩阵

二刷终于能过了. 思路解析: 不愧是hard,第一步就很难想, 对于每一个矩阵,我们要想清楚怎么拿到最大矩阵, 对于每个height[i],我们需要找到left和right,left是i左边第一个小于height[i]的,right是右边第一个小于height[i]的,那么他的最大矩阵就是height[i] * (right-left-…

暗区突围无限测试资格获取教程 暗区突围怎么参加测试教程推荐

《暗区突围:无限》是一款强调极致真实与沉浸感的军事策略游戏,它邀请玩家踏入危机四伏的战场,通过射击、智取与突袭,铺就一条满载财富的道路。在这片未知与挑战并存的土地上,游戏赋予玩家极高的行动自由,旨…

苍穹外卖绕过微信支付

经过以下改动可实现: 1、不用微信支付端口 2、弹出支付成功的界面 3、数据库修改支付成功后的数据 #在OrderServiceImpl.java里加入Autowiredprivate OrderService orderService; #在OrderServiceImpl.java里的payment函数做以下改动 #图片里有,红色为原…