【Python】function、module、Package及import导入方法

计算机程序开发中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里面,这样,这个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,下面介绍一下Python中的一些基本概念:

基本概念

函数function
将一组代码组织到一起,实现某种功能

模块module
为实现某种逻辑将相关连的函数写在同一个文件里,使逻辑更清楚,这就是一个模块
在python中文件以.py 结尾,那这个.py文件就可以称之为模块,说白了,就是Python文件

库文件library
library,中文翻译为:库,也常称为:库文件
之所以此处不说是Python中的library,那是因为,本身library这个词,一般都是针对其他的编译型语言,比如C,C#等语言来说的。常见的C/C#等语言中的library,一般指的就是:
静态的库文件:xxx.a
动态的库文件:xxx.dll

Python中module和library之间的区别
对于library和module,说白了,都是提供了一定的功能供别人调用。
从这方面来说,也可以理解为:Python中library等价于module;
只不过,Python中,很少说library,正常的话,都是说module;

包Package
为了方便管理模块,python 中引入了包的概念
包是由关联的多个模块组成的目录,在每一个包下而都有一个__init__.py文件,这个文件必须存在
否则,Python就把这个目录当成普通目录,而不是一个包
init.py 可以是空文件,也可是有python代码,因为__init__.py本身就是一个模块

 

 

import 导入

使用import 关键字,可以将一个包中已出现的一个或多个函数或模块,引入到另一个python代码中,从而实现代码的复用

注意
1、如果是本地导入文件,直接使用:import filename
2、如果导入的是一个包,该包下面必须是有__init__.py文件才可以导入,否则报错,有了__init__.py文件,python解析器才会把这个目录当成是的包

使用module有什么好处呢?
最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

 

 

 

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数的名字冲突。

导入内置模块一般是这样的:

 

 

import os

如果不同的人编写的模块名相同怎么办?为了避免模块冲突,Python可以按Package来导入模块。
我们以我们经常用到的selenium包为例来讲一下import的三种方法:

 

我们先看一下selenium包的目录结构,如下图

 

selenium包的路径是在\Python 3.6.1\Lib\site-packages\selenium,一般第三方package都是在\Lib\site-packages\下

第一种导入模块方法:import modelName

import webdriver
driver = webdriver.Chrome()   #定义一个driver变量

这个时候我们发现报错,是因为selenium包下面有多个packages,有多个webdriver.py文件,这时我们可以通过具体包去导入

import selenium.webdriver
driver = selenium.webdriver.Chrome()   #定义一个driver变量

去selenium包目录下你会发现我们找不到webdriver.py文件,其实我们是导入了selenium包下面的webdriver包中的__init__.py文件,如图所示:

你可以看到这个文件里包含了各种浏览器的webdriver,在需要具体浏览器时,我们就可以自动定义webdriver,定义变量时需要用selenium.webdriver,因为我们导包时就是导入selenium.webdriver,你会发现这样有点麻烦。

这时我们可以使用第二种导入模块的方法:from package import modelName

from selenium import webdriver
driver = webdriver.Chrome()   #定义一个driver变量

其实这种方法还可以导入模块里面具体的函数:from modelName import functionName

第三种导入模块方式:import modelName as xx

import selenium.webdriver as sample
driver = sample.Chrome()   #定义一个driver变量

这个其实相当于将selenium.webdriver重命名,为了定义时方便

我们可以总结一下:
1.如果导入内置模块,一般是import modelName
2.如果需要导入包里面的所有模块,直接可以import packageName
3.如果需要导入具体包里面的模块或者模块里面的具体函数,使用from xx import yy
4.如果需要对导入的模块进行简单重命名,可以使用import modelName as xx

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

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

相关文章

学习《数据结构》要爬的第一步梯子

小王开始专业课的复习一、数据结构是什么二、数据结构中基本概念和术语2.1数据结构的概念2.2按照不同功能划分逻辑结构2.3存储结构中重点顺序存储举例链式存储举例三、抽象数据类型的表示与实现3.1数据类型3.2抽象数据类型 (ADTs: AbstractData Types)3.…

python gRPC测试helloworld

一、测试helloworld 1、在https://github.com/grpc/grpc 下载example 2、用cmd打开命令行,cd到helloworld的根目录 cd E:\pythoncode\gRPC\grpc-master\grpc-master\examples\python\helloworld 然后运行 python greeter_server.py 3、再用cmd打开另一个命令行…

k52zip shell band 流氓软件总是显示~

小王的烦恼问题Garbage解决办法解决一解决二解决三总结问题 (我都不知道这流氓软件哪里来的,平时也就下点学习资料啥的) 一打开电脑学习给我整蒙了下方工具栏左右两边平白无故整两条杠出来 电脑下方工具栏处右击——》点击工具栏——》取消勾…

Microsoft Visual Studio 无法启动程序“路径啪啦啪啦“. 系统找不到指定的文件。

遇到这个低级错误 点击出现 解决办法 我看了好久,心态都崩了,结果是我两个cpp文件都有main函数,注释掉一个main函数就行了。这种错误可不要再犯了,搞心态。

【Python】Windows下Python3虚拟环境搭建

我们知道python中,有些第三方库的包会有依赖关系,比如某天你想搭建django环境,它可能依赖某个package 2.0,然后过几天你又想要搭建其他环境,这时候可能它也需要同样的包,但是这个包的版本可能不需要那么高&…

pycharm+pyqt5配置

1、打开cmd输入pip3 install PyQt5 2、输入pip3 install PyQt5-tools -i https://pypi.doubanio.com/simple 3、打开pycharm。新建项目点击Setting--》Tools--> (1)添加Qtdesigner (2)添加PyUIC 4、点击 5、打开Qtdesigner。新建一个ui文件。保存在…

立志10天学会C++基础应用—day01

文章目录前言第一天感觉很实用的快捷键一、常识A01打印cHelloWorld.cppA02变量.cppA03常量.cppA04标识符命名规则.cppA05整型.cppA06sizeof的用法.cppA07实型.cppA08字符型.cppA09转义字符.cppA10字符串类型.cppA11布尔类型.cppA12数据的输入.cpp二、算术运算符A13算术运算符.c…

【Python】IDE环境Pycharm运行虚拟环境Django

上一篇文章我们通过举例介绍了如何安装RobotFramework虚拟环境,其实Django环境也可以通过相同办法安装 f: cd F:\python_env python -m venv Django_env F:\python_env\Django_env\Scripts activate pip install Django 这样我们就在虚拟环境下安装了Django&#x…

pycharm导入自己写的模块时,模块下方出现红色波浪线的解决方案

这种情况其实可以不用管,是可以正常运行的; 但是,如果看着不舒服,可以进行以下过程进行设置即可: file->settings->project->project structure->点击项目路径->点击Excluded。然后确定就正常显示了…

立志10天学会C++基础应用—day02 代码清晰易懂 涉及数据结构算法的知识 写完了~我也麻了

哈喽,很高兴又见面啦,一起加油一起学习,欢迎您的关注!https://blog.csdn.net/hanhanwanghaha学习路上有您的关注是我的荣幸,一起进步是我的动力,明天也一起加油啊! 以往链接 立志10天学会C基…

Python3导入自定义模块的3种方式

关于如何自定义一个模块,如果大家不懂的话还请先看下面这篇博文 ↓ http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318447437605e90206e261744c08630a836851f5183000) 模块是个好东西啊,大牛们开源共享许多…

Flask项目的部署详解

哈喽,很高兴又见面啦,一起加油一起学习,欢迎您的关注!https://blog.csdn.net/hanhanwanghaha学习路上有您的关注是我的荣幸,一起进步是我的动力,明天也一起加油啊! 目录宝塔更新Python版本apt安…

【Python】对象、类、元类

龟叔发明了Python,然后集成了一堆概念在这门语言里面,比如:迭代器,装饰器,函数,生成器,类,对象,协程等等。 这些概念对初学者似乎没一个好懂的,不过还有比这更…

JETBRAINS开发工具中Translation翻译插件的使用

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行! 如有转载,请注明出处(如不注明,盗者必究&#xf…

【Python】pdfminer3k模块批量转换本地PDF文件

上一篇文章自己研究了一下如何批量将word或者ppt文件转换为PDF文件,但是有时候我们也想要将pdf文件转换为word或者txt文件,方便复制和处理。本文主要通过调用pdfminer3k模块进行处理。 说明:本文是在Windows10下使用python最新的3.6版本虚拟…

Python读写json文件的简单实现

转载自https://blog.csdn.net/vitaminc4/article/details/77985175 介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、Java、Ja…

Nacos配置

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行! 如有转载,请注明出处(如不注明,盗者必究&#xf…

【Python】如何选择赋值和拷贝

在Python中,一切皆为对象,对象通过「变量名」引用,「变量名」更确切的叫法是「名字」,好比我们每个人都有自己的名字一样,我们通过名字来代指某个人,代码里面通过名字来指代某个对象。变量赋值就是给对象绑…

❤️震惊!人生苦短,我用python来玩田忌赛马❤️

一读标题笑死自己哈哈哈,最近猪哥(玩得敲好的彭友)找我帮忙解决他不会作业哈哈哈,他们公司自己出的笔试题哈哈哈,希望别被他们出题人看见哈哈哈,回想猪哥说的一句话,万一这就是以后你遇到的试题…

错误之data_insertt() takes 1 positional argument but 2 were given解决方法

1、首先检测函数与调用直接的参数是否匹配。 2、若为python环境。 函数定义如下: 调用如下: 显示如下错误: 解决方法:在函数定义时添加self。即为: 则问题解决。 这是一个很基本的,但是很严重的错误。只…