当前位置: 首页 > news >正文

Python函数 之 模块和包

1.模块 

1, 在Python 中, 每个 `.py` 结尾的 Python 代码⽂件 都可以称为是⼀个模块。

2, 在模块中 别⼈书写好的功能(变量, 函数, 类),我们可以拿来直接使⽤。

3, 我们自己写的代码文件, 想要作为模块让别⼈使⽤, 你的代码⽂件名(模块名) 满足标识符的规则

4, 想要使用 别人模块中写好的功能,需要先导入别人写好的功能。

5, as 关键字 , 可以给模块或者功能起别名


2.模块导入的方法

模块就好比是工具包, 要想使用这个工具包中的工具, 就需要先 导入模块 

(1)方式一:多用于导入系统中的常用的模块和功能

  • 导入模块:
    • import 模块名    # 模块名 就是代码文件名,不要 .py

  • 使用其中的功能:
    • 模块名.功能名    # 功能可以是变量,函数 和类
import random
num = random.randint(1, 10)
print(num)

(2)方式二:多用于导入自己书写的,或者是第三方的模块

  • 导入模块:
    • from 模块名 import 功能名   # 导入指定的功能

  • 使用其中的功能:
    • 功能名()

  • 小tips:导入模块时可以使⽤快捷键 Alt 回⻋

from random import randint
num = randint(1, 10)
print(num)

需求:

1. 定义⼀个模块 tools.py , 在模块中定义⼀个函数 sum_2_num(), 可以对两个数字求和。

2. 新定义⼀个代码⽂件, 调⽤ tools.py ⽂件中的sum_2_num() 函数, 对 10 和 20 求和。

tools.py文件:

def sum_num(a, b):return a + b

新文件:xx.py

# import tools
#
# num = tools.sum_num(10, 20)
# print(num)from tools import sum_num as sn# num = sum_num(10, 20)
num = sn(10, 20)
print(num)

3.__name__ 变量

  • 导⼊模块的时候, 会执行模块中的代码
  • 作用:如果在导⼊模块的时候, 模块中的部分代码不想被执⾏, 可以使⽤ __name__ 来解决
  •  __name__ 变量:是 Python 解释器内置的变量(变量的值是⾃动维护的), 每个代码⽂件中,都有这个变量
    • 在模块中 直接右键运⾏代码⽂件, __name__ 变量的值是 '__main__'
    • 如果是被导⼊运行代码文件, __name__ 变量的值 是 模块名(文件名)
  • 总的来说,所以: if __name__ == '__main__':
                                     # 在这个 if 的缩进中书写的代码 , 导⼊的时候不会被执⾏

解析: 

(1)在xx.py中导入模块tools的时候,会执行tools模块中的代码,如下图:

 

(2)使用_name_变量的原理:在模块中 __name__ 的值是'__main__',在被导入的文件中,他的值是模块名(文件名)

(3)使用判断语句,控制导入的模块里的代码执行与否: 

 


4.模块的导⼊顺序

  1. 在导⼊模块的时候, 会先从代码所在的目录进⾏导⼊
  2. 如果没有找到,回去 Python 系统的⽬录查找导⼊
  3. 如果没有找到, 报错

注意点: 我们⾃⼰定义的代码文件名字 不要和你带入的系统的模块文件名⼀样。


5.包(package)

(1)包的创建

(2)包的导入

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设置DepthBufferBits和设置DepthStencilFormat的区别
  • 动手学深度学习54 循环神经网络
  • 企业微信群发消息高效指南,一文了解!
  • 新型开发语言的试用感受-仓颉语言发布之际
  • RedHat运维-Ansible自动化运维基础26-管理用户与认证
  • 体积大的快递怎么寄便宜?如何寄件寄包裹更省钱?
  • 贪心算法-以高校教材管理系统为例
  • Pandas中使用函数作为map函数的参数时为什么不用传入函数的参数的问题解答
  • 【R语言+Gephi】利用R语言和Gephi实现共发生网络的可视化
  • Web3时代的数字身份认证:安全性与隐私保护探讨
  • Python面试题:如何在 Python 中发送 HTTP 请求?
  • 复合机器人:手脚眼脑的完美结合
  • 一文了解java中Optional
  • Quartz 核心
  • 在误装Windows server2019 后如何利用Windows.old恢复?
  • 自己简单写的 事件订阅机制
  • 【React系列】如何构建React应用程序
  • android 一些 utils
  • css的样式优先级
  • CSS魔法堂:Absolute Positioning就这个样
  • echarts花样作死的坑
  • ES10 特性的完整指南
  • Logstash 参考指南(目录)
  • 不上全站https的网站你们就等着被恶心死吧
  • 从零搭建Koa2 Server
  • 工作中总结前端开发流程--vue项目
  • 将 Measurements 和 Units 应用到物理学
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 正则学习笔记
  • 白色的风信子
  • 正则表达式-基础知识Review
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​水经微图Web1.5.0版即将上线
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #Linux(make工具和makefile文件以及makefile语法)
  • (4)事件处理——(7)简单事件(Simple events)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (回溯) LeetCode 40. 组合总和II
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 设计一套高性能的弱事件机制
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [1127]图形打印 sdutOJ
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C++] sqlite3_get_table 的使用
  • [C++][数据结构][算法]单链式结构的深拷贝