python学习笔记:模块——自定义模块的3种导入方式
一、定义
模块就是用一堆的代码实现了一些功能的代码的集合,通常一个或者多个函数写在一个.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)
三、第三方模块
大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到
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内置的,因此我们导入自定义模块的步骤如下:
- 先导入sys模块
- 然后通过
sys.path.append(path)
函数来导入自定义模块所在的目录。 - 使用sys.path.append()方法可以临时添加搜索路径,方便更简洁的import其他包和模块。这种方法导入的路径会在python程序退出后失效。
- 使用sys.path.insert(0,'r'/Users/PycharmProjects/my_python/')定义搜索路径的优先顺序,序号从0开始,表示最大优先级,sys.path.insert()加入的也是临时搜索路径,程序退出后失效。
- 导入自定义模块。
这时候 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种导入方式的更多相关文章
- python 学习笔记8 (模块)
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...
- Python学习笔记5:模块/包
1.模块 模块简单理解就是一组功能的集合. 在Python中,一个文件(.py)就是一个模块,文件名即模块名. 模块的好处是大大提高代码的可维护性,其次,代码不必从零开始.当一个模块编写完毕,就可以被 ...
- [Python] Python学习笔记之常用模块总结[持续更新...]
作为一种极其简单的编程语言,Python目前成为了最炙手可热的几种语言之一.它不仅简单易学,而且它还为用户提供了各种各样的模块,功能强大,无所不能.有利必有弊,学习Python同样有困扰,其中之一就是 ...
- python学习笔记之常用模块(第五天)
参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...
- Python学习笔记十_模块、第三方模块安装、模块导入
一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...
- python学习笔记(六):常用模块
一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...
- Python 学习笔记(6)--常用模块(2)
一.下载安装 下载安装有两种方式: yum\pip\apt-get 或者源码 下载源码 解压源码 进入目录 编译源码 python setup.py build 安装源码 python setup.p ...
- python学习笔记13(模块、包)
在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...
- python学习笔记(九)、模块
1 模块 使用import 语句从外部导入模块信息,python提供了很大内置模块.当你导入模块时,你会发现其所在目录中,除源代码文件外,还新建了一个名为__pycache__的子目录(在较旧的Pyt ...
- Python学习笔记三:模块
一:模块 一个模块就是一个py文件,里面定义了一些业务函数.引用模块,可以用import语句导入.导入模块后,通过 模块.函数名(参数) 来使用模块中的函数.如果存在多个同名模块,则前面模块名需要加 ...
随机推荐
- ! Failed at the chromedriver@2.35.0 install script.
npm install 过程中报错 解决方法 运行 npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/d ...
- 再往DjVu鼓吹者的头上敲一棒子
最近在某论坛又看到有人在鼓吹DjVu,甚至声称拿到PDG就转成DjVu,忍不住想再敲打敲打. 早几年前就已经有人举出过实例,证明PDG.TIFF转DjVu会因为有损压缩而产生错别字,似乎时间长了一堆新 ...
- iphoneX的适配问题
iphoneX();function iphoneX(){ var oMeta = document.createElement('meta'); oMeta.setAttribute('name', ...
- 39.Binary Tree Inorder Traversal(二叉树中序遍历)
Level: Medium 题目描述: Given a binary tree, return the inorder traversal of its nodes' values. 思路分析: ...
- Python3学习笔记——异常处理
#!/usr/bin/env python # 1.异常处理 try: # 主要执行的代码 except IndexError as e: # 对于某些错误需要特殊处理的,可以对特殊错误进行捕捉 pr ...
- 【LeetCode】Array
[11] Container With Most Water [Medium] O(n^2)的暴力解法直接TLE. 正确的解法是Two Pointers. O(n)的复杂度.保持两个指针i,j:分别指 ...
- 力扣 —— Two Sum ( 两数之和) python实现
题目描述: 中文: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利 ...
- Centos yum的源 设置为阿里云源
在 阿里巴巴镜像站页面,在centos 操作的帮助,有介绍 wget和curl 2种方式来下载CentOS-Base.repo 备份 mv /etc/yum.repos.d/CentOS-Base.r ...
- Java网络编程:IP地址和端口号
1)IP地址 用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 2)IP地址分类 IPV4:32位地址,以点分十进制表示,如192.168.0.1 IPV6:128位(16个字节) ...
- webpack 学习4 使用loader 以及常用的一些loader
webpack本身只支持处理JavaScript,其他的文件,如css img less是不识别的,所以才会有loader这个东西,它就是可以使webpack能够处理其他非js文件的拓展程序 首先我们 ...