一、定义

模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.py文件里,而如果有些功能实现起来很复杂,那么就需要创建n个.py文件,这n个.py文件的集合就是模块。如果不懂可以先看下面这篇博文:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318447437605e90206e261744c08630a836851f5183000

二、类型

1、标准模块

  python自带的模块,不需要安装包,直接import就可以使用

2、第三方模块

  第三方开源模块通常需要自己去下载

3、自定义模块

自己写的实现自己某些功能的.py文件集合

二、标准模块

我们这里主要列举几个常用的标准模块:

import random  #随机数模块
print(random.randint(1,100))# 在1-100里随机取一个整数
print(random.uniform(1,900))# 取一个小数,顾头也顾尾 stus=['zhangsan','lisi','xiaohong']
print(random.choice(stus))#随机取一个元素
print(random.choice('sdfgadsgadfg')) print(random.sample(stus,2))# 随机取两个元素 l=list(range(1,101))
print('洗牌之前的',l)
print(random.shuffle(l)) #洗牌,也就是打乱,没有返回值,只能传list,所以下面要在print一下
print('洗牌之后的',l)

三、第三方模块

大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到

https://pypi.python.org/pypi

1、安装第三发模块

pip install xxx

2、手动安装:

  (1)下载.whl文件

  pip install e:\\dowload\\pymysql.whl

    (2)下载 .tar.gz文件

  ---解压

  ---进入目录执行 python setup.py install pymysql.tar.gz

3、列出当前装了哪些模块

pip list

4、导出当前已经安装的模块

freeze > 第三方模块.txt

5、指定文件批量安装模块

pip install -r 第三方模块.txt

四、python自定义模块的导入方式

1、直接import

这里有个大前提,就是你的py执行文件和模块同属于同个目录(父级目录),如下图:

  • main.py 和 pwcong模块同在python目录
  • 执行文件为main.py
  • pwcong文件夹为一个模块

我把pwcong模块提供的函数写在 __init__.py 里,里面只提供一个 hi 函数:

# pwcong 模块的 __init__.py
# -*- coding: utf-8 -*- def hi():
print("hi")

执行文件main.py直接import模块:

# main.py
# -*- coding: utf-8 -*- import pwcong pwcong.hi()

接着我们运行一下main.py可以看到命令行窗口输出了一句 hi ,第一种方式完成。

2、通过sys模块导入自定义模块的路径path

如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。如下图:

  • 执行文件main.py在main目录下
  • pwcong模块在python目录下

sys模块是python内置的,因此我们导入自定义模块的步骤如下:

  1. 先导入sys模块
  2. 然后通过sys.path.append(path) 函数来导入自定义模块所在的目录。
  3. 使用sys.path.append()方法可以临时添加搜索路径,方便更简洁的import其他包和模块。这种方法导入的路径会在python程序退出后失效。
  4. 使用sys.path.insert(0,'r'/Users/PycharmProjects/my_python/')定义搜索路径的优先顺序,序号从0开始,表示最大优先级,sys.path.insert()加入的也是临时搜索路径,程序退出后失效。
  5. 导入自定义模块。

这时候 main.py 这样写:

# main.py
# -*- coding: utf-8 -*- import sys
sys.path.append(r"C:\Users\Pwcong\Desktop\python") import pwcong pwcong.hi()

最后执行main.py文件,最终输出 hi ,第二种方式完成。

3、在环境变量中找到自定义模块

这个方法原理就是利用了系统变量,python会扫描path变量的路径来导入模块,可以在系统path里面添加。

模块和执行文件目录结构跟上图一样:

  • 执行文件main.py在main目录下
  • pwcong模块在python目录下

我们创建一个 module_pwcong.pth 文件,里面内容就是 pwcong模块所在的目录:

C:\Users\Pwcong\Desktop\python

将该 module_pwcong.pth 文件放到这里:
python安装目录\Python35\Lib\site-packages

例如我的:

然后 main.py 导入并使用自定义模块:

# -*- coding: utf-8 -*-

import pwcong

pwcong.hi()

最后执行 main.py 文件,可以输出 hi ,第三种方式完成。

注意:使用pycham可以把文件夹加到环境变量中

直接在文件夹上右键 mark directory as  选择 scorce root  直接把文件夹加到环境变量中。

python学习笔记:模块——自定义模块的3种导入方式的更多相关文章

  1. python 学习笔记8 (模块)

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...

  2. Python学习笔记5:模块/包

    1.模块 模块简单理解就是一组功能的集合. 在Python中,一个文件(.py)就是一个模块,文件名即模块名. 模块的好处是大大提高代码的可维护性,其次,代码不必从零开始.当一个模块编写完毕,就可以被 ...

  3. [Python] Python学习笔记之常用模块总结[持续更新...]

    作为一种极其简单的编程语言,Python目前成为了最炙手可热的几种语言之一.它不仅简单易学,而且它还为用户提供了各种各样的模块,功能强大,无所不能.有利必有弊,学习Python同样有困扰,其中之一就是 ...

  4. python学习笔记之常用模块(第五天)

    参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...

  5. Python学习笔记十_模块、第三方模块安装、模块导入

    一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...

  6. python学习笔记(六):常用模块

    一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...

  7. Python 学习笔记(6)--常用模块(2)

    一.下载安装 下载安装有两种方式: yum\pip\apt-get 或者源码 下载源码 解压源码 进入目录 编译源码 python setup.py build 安装源码 python setup.p ...

  8. python学习笔记13(模块、包)

    在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...

  9. python学习笔记(九)、模块

    1 模块 使用import 语句从外部导入模块信息,python提供了很大内置模块.当你导入模块时,你会发现其所在目录中,除源代码文件外,还新建了一个名为__pycache__的子目录(在较旧的Pyt ...

  10. Python学习笔记三:模块

    一:模块 一个模块就是一个py文件,里面定义了一些业务函数.引用模块,可以用import语句导入.导入模块后,通过 模块.函数名(参数)  来使用模块中的函数.如果存在多个同名模块,则前面模块名需要加 ...

随机推荐

  1. upc组队赛15 Lattice's basics in digital electronics【模拟】

    Lattice's basics in digital electronics 题目链接 题目描述 LATTICE is learning Digital Electronic Technology. ...

  2. QTP Code Segment

    Dim WshShellset WshShell = CreateObject("WScript.Shell")WshShell.SendKeys "{DOWN}&quo ...

  3. grep与egrep命令

    greo -E 等同于 egrep grep常用两种方式 1.   grep -c python a.txt 2.   cat a.txt | grep -c python a.txt文件如下 i l ...

  4. Python的基本数据类型,用户交互

    整数: int 常见的数字都是int类型. 用于计算或者大小的比较 在32位机器上int的范围是: -2**31-2**31-1,即-2147483648-2147483647 在64位机器上int的 ...

  5. shell中#*,##*,#*,##*,% *,%% *的含义及用法

    介绍下Shell中的${}.##和%%使用范例,本文给出了不同情况下得到的结果.假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得 ...

  6. OAuth授权登录

    一.写在前面 日常生活中,我们经常看到到一个网站时,需要登录的时候,都提供了第三方的登录,也就是说你可以使用你的微信,QQ,微博等账号进行授权登录.那么这个认证登录的东西到底是什么呢? 微信授权登录页 ...

  7. setmetamode - define the keyboard meta key handling

    总览 setmetamode [ meta|bit|metabit | esc|prefix|escprefix ] 描述 没有参数时, setmetamode 将打印当前 Meta 键模式; 有参数 ...

  8. Failed to resolve com.android.support:support-compat:25.4.0

    3down votefavorite   I am trying to include this library to my project by adding compile 'jp.wasabee ...

  9. JS中的call()和apply()方法(转)

    转自:http://uule.iteye.com/blog/1158829 JS中的call()和apply()方法 博客分类: JS   1.方法定义 call方法: 语法:call([thisOb ...

  10. linux-java

    查看Java进程耗内存线程 top -Hp pid printf '%x\n' pid ->jid(java thread) 查看time值最大 jstack pid | grep jid 查看 ...