【Python】从入门到上头— 使用包、模块、安装第三方模块(7)
一.什么是模块
在Python中,一个.py文件就称之为一个模块(Module)。
模块好处?:
- 方便重用代码,写完一个通用的模块,可以在很多地方直接拿来用
- 相同名字的函数和变量完全可以分别存在不同的模块中
二.使用模块
使用
Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。
-
使用模块的第一步,就是通过
import关键字导入模块:#1导入sys模块 import sysdef test():args = sys.argv #2使用该模块的变量if len(args)==1:print('Hello, world!')elif len(args)==2:print('Hello, %s!' % args[1])else:print('Too many arguments!')#Python解释器把一个特殊变量__name__置为__main__ if __name__=='__main__':test()- 导入sys模块后,我们就有了
变量sys指向该模块,利用sys这个变量,就可以访问sys模块的所有功能。 sys模块有一个argv变量,用list存储了命令行的所有参数。- argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:
运行python3 hello.py获得的sys.argv就是['hello.py']; 运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael']。
- 导入sys模块后,我们就有了
import 语句
想使用其他模块,只需在另一个模块里执行 import 语句,语法如下:
import module1[, module2[,... moduleN]
实例
#support.py 文件代码
def print_func( par ):print ("Hello : ", par)return
test.py 引入 support 模块:
# 导入模块
import support# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
from … import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前模块中,语法如下:
from modname import name1[, name2[, ... nameN]]
示例:要导入模块 fibo 的 fib 函数,使用如下语句:
from fibo import fib, fib2
fib(500)
#1 1 2 3 5 8 13 21 34 55 89 144 233 377
- 这样不会把整个fibo模块导入到当前的模块中,它只会将fibo里的fib函数引入进来。
from … import * 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *
包
包是一种管理 Python 模块命名空间的形式,采用". + 模块名称"。
- 比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
1.用户可以每次只导入一个包里面的特定模块,比如:
import sound.effects.echo
#这将会导入子模块:sound.effects.echo。 他必须使用全名去访问:
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)2.还有一种导入子模块的方法是:
from sound.effects import echo
#这同样会导入子模块: echo,并且他不需要那些冗长的前缀,所以他可以这样使用:
echo.echofilter(input, output, delay=0.7, atten=4)3.还有一种变化就是直接导入一个函数或者变量:
from sound.effects.echo import echofilter
#同样的,这种方法会导入子模块: echo,并且可以直接使用他的 echofilter() 函数:
echofilter(input, output, delay=0.7, atten=4)
-
注意当使用
from package import item这种形式的时候,对应的 item 既可以是包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量。-
import 语法会首先把
item 当作一个包定义的名称,如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个:exc:ImportError 异常。 -
反之,如果使用形如
import item.subitem.subsubitem这种导入形式,除了最后一项,都必须是,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字。
-
作用域
一个模块中,但有的函数和变量允许给别人使用,有的函数和变量希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。
-
正常的函数和变量名是
公开的(public),可以被直接引用 -
类似
__xxx__这样的是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量, -
类似
_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;- 之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为
Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
- 之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为
请看例子:
def _private_1(name):return 'Hello, %s' % namedef _private_2(name):return 'Hi, %s' % namedef greeting(name):if len(name) > 3:return _private_1(name)else:return _private_2(name)
- 我们在模块里
公开greeting()函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:- 外部不需要引用的函数全部定义成
private,只有外部需要引用的函数才定义为public。
- 外部不需要引用的函数全部定义成
三.安装第三方模块
pip 是 Python 包管理工具,该工具提供了对 Python 包的查找、下载、安装、卸载的功能。
-
软件包也可以在 https://pypi.org/ 中找到。
- 目前最新的 Python 版本已经预装了 pip。
安装pip
-
在命令提示符窗口下尝试运行
pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip。 -
使用以下方法来安装:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 sudo python get-pip.py # 运行安装脚本注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本,如果是 Python3 则执行以下命令:sudo python3 get-pip.py # 运行安装脚本。 一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x。
pip常用命令
1.查看是否已经安装 pip 可以使用以下命令:pip --version2.下载安装包使用以下命令:pip install some-package-name
2.1.例如我们安装 numpy 包:pip install numpy
2.2.安装包指定版本pip install SomePackage # 最新版本pip install SomePackage==1.0.4 # 指定版本pip install 'SomePackage>=1.0.4' # 最小版本3.我们也可以轻易地通过以下的命令来移除软件包:pip uninstall some-package-name
3,1,例如我们移除 numpy 包:pip uninstall numpy4.如果要查看我们已经安装的软件包,可以使用以下命令:pip list5.升级 pippip install -U pip
如果这个升级命令出现问题 ,可以使用以下命令:sudo easy_install --upgrade pip6.升级包
pip install --upgrade SomePackage
- 详见Python pip 安装与使用
相关文章:
【Python】从入门到上头— 使用包、模块、安装第三方模块(7)
一.什么是模块 在Python中,一个.py文件就称之为一个模块(Module)。 模块好处?: 方便重用代码,写完一个通用的模块,可以在很多地方直接拿来用相同名字的函数和变量完全可以分别存在不同的模块中…...
flutter和原生利用pigeon建立通道
首先导入依赖: dependencies: pigeon: ^10.0.0定义一个文件: /// 用于定于flutter和平台的桥接方法 /// HostApi() 标记的,是用于 Flutter 调用原生的方法; /// FlutterApi() 标记的,是用于原生调用 Flutter 的方法&…...
TCP连接分析:探寻TCP的三次握手
文章目录 一、实验背景与目的二、实验需求三、实验解法1. 预先抓包监测使用Wireshark工具2.进行TCP三次握手,访问www.baidu.com3.分析Wireshark捕获的TCP包 摘要: 本实验使用Wireshark工具,通过抓包监测和分析,深入研究了与百度服…...
gitHooks使用教程
1. 安装所需依赖 npm install eslint prettier husky lint-staged --save-dev 2.初始化 husky npx husky-init && npm install 这将创建一个 .husky/ 目录,并且在其中包含一个示例的 pre-commit 文件。 3.设置 pre-commit 钩子 npx husky add .husky/…...
2023.8 - java - 数组
声明数组变量 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[] arrayRefVar; // 首选的方法或dataType arrayRefVar[]; // 效果相同,但不是首选方法int[] a {1,2,3};int b[] new int[10];TS:let a:…...
ChatGPT怎么辅助解决社会问题?
ChatGPT作为一个强大的自然语言处理模型,具有潜力辅助解决多种社会问题。其能力可以应用于信息传递、教育、宣传、意识提高等领域,为社会问题的解决提供支持。以下将详细探讨ChatGPT如何辅助解决社会问题。 **1. 教育与意识提高**: ChatGPT可…...
Rust之自动化测试(一):如何编写测试
开发环境 Windows 10Rust 1.71.1 VS Code 1.81.1 项目工程 这里继续沿用上次工程rust-demo 编写自动化测试 Edsger W. Dijkstra在他1972年的文章《谦逊的程序员》中说,“程序测试可以是一种非常有效的方法来显示错误的存在,但它对于显示它们的不存在…...
简单聊聊Https的来龙去脉
简单聊聊Https的来龙去脉 Http 通信具有哪些风险Https Http SSL/TLS对称加密 和 非对称加密数字证书数字证书的申请数字证书怎么起作用 Https工作流程一定需要Https吗? Http 通信具有哪些风险 使用明文通信,通信内容可能会被监听不验证通信双方身份&a…...
【注册岩土】Python土力学与基础工程计算.PDF-土中的应力
Python 求解代码如下: 1.#计算竖向有效自重应力2.h12#m3.h21.5#m4.h31#m5.gamma1 19# kN/m^36.gamma218# kN/m^37.gamma317# kN/m^38.sigma_c gammal * h1 gamma2*h2 gamma3 *h39.print("竖向有效自重应力…...
祝贺!Databend Cloud 和阿里云 PolarDB 达成认证
近日,北京数变科技有限公司旗下产品与阿里云 PolarDB 开源数据库社区展开产品集成认证。 测试结果表明,北京数变科技有限公司旗下产品《Databend Cloud(V1.25)》正式通过了《阿里云 PolarDB 数据库管理软件》的技术认证ÿ…...
SQL语言-01
SQL Structured Query Language 的简单介绍 SQL 中的书写规则 SQL 中的数据类型...
PyCharm软件安装包分享(附安装教程)
目录 一、软件简介 二、软件下载 一、软件简介 PyCharm是一种集成开发环境(IDE),专门为Python开发者设计。它是由捷克软件公司JetBrains开发的,为Python开发人员提供了高效、易用和功能丰富的工具集。 以下是PyCharm软件的主要…...
AI文本标注的概念,类型和方法
我们每天都在与不同的媒介(例如文本、音频、图像和视频)交互,我们的大脑对收集到的信息进行处理和加工,从而指导我们的行为。在我们日常接触到的信息中,文本是最常见的媒体类型之一,由我们交流使用的语言构…...
【AutoLayout案例04-游戏图片-按钮适配 Objective-C语言】
一、好,我们再看一个案例, 刚才,这个案例, 这么一个案例 这个案例,是什么意思呢, 这里给大家做一个3.5英寸、4.0英寸的屏幕适配, 因为我们这里图片,只有一个,就是4英寸的这么一个图片 什么意思呢,要求我们在3.5英寸的屏幕、和4英寸的屏幕的时候,都能正常显示这个图…...
Spring Boot业务系统如何实现海量数据高效实时搜索
1.概述 我们都知道随着业务系统的发展和使用,数据库存储的业务数据量会越来越大,逐渐成为了业务系统的瓶颈。在阿里巴巴开发手册中也建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达…...
面向对象的设计原则
设计模式 Python 设计模式:对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计 面向对象 三大特性:封装、继承、多态 …...
前端需要理解的工程化知识
1 Git 1.1 Git 常见工作流程 Git 有4个区域:工作区(workspace)、index(暂存区)、repository(本地仓库)和remote(远程仓库),而工作区就是指对文件发生更改的地方ÿ…...
【Terraform学习】使用 Terraform创建DynamoDB添加项目(Terraform-AWS最佳实战学习)
本站以分享各种运维经验和运维所需要的技能为主 《python》:python零基础入门学习 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...
基于单片机教室人数实时检测系统
一、系统方案 主程序中main函数主要是引脚的初始化,给单片机引脚初始化,初始化LCD1602,初始化红外对管,通过对LCD1602赋值,采集进入教室的人数,显示在LCD1602上面进出人数我们采用按键的形式,检…...
alibabacloud的简单使用,nacos配置中心+服务中心。作者直接给自己写的源码
文章目录 依赖关键主要的程序启动文件配置文件bootstrap.yml依赖文件nacos配置中心上的文件截图 启动成功截图参考文档 依赖关键 SpringBoot版本和com.alibaba.cloud版本需要对应,不然会程序会启动失败作者使用的版本 SpringBoot: 2.1.6.RELEASE alibabacloud: 2.…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
【笔记】结合 Conda任意创建和配置不同 Python 版本的双轨隔离的 Poetry 虚拟环境
如何结合 Conda 任意创建和配置不同 Python 版本的双轨隔离的Poetry 虚拟环境? 在 Python 开发中,为不同项目配置独立且适配的虚拟环境至关重要。结合 Conda 和 Poetry 工具,能高效创建不同 Python 版本的 Poetry 虚拟环境,接下来…...
