[TOC]
# import
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。
形如:
~~~
import module1,mudule2...
~~~
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。
在调用math模块中的函数时,必须这样引用:
~~~
模块名.函数名
~~~
~~~
import math
#这样会报错
print sqrt(2)
#这样才能正确输出结果
print math.sqrt(2)
~~~
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法实现:
~~~
from 模块名 import 函数名1,函数名2....
~~~
不仅可以引入函数,还可以引入一些全局变量、类等
注意:
* 通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入
* 假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数
* 如果想一次性引入math中所有的东西,还可以通过`from math import *`来实现
# `from…import`
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中
`import 模块名`是一次性把模块中所有工具全部导图
语法如下:
~~~
from modname import name1[, name2[, ... nameN]]
~~~
例如,要导入模块fib的fibonacci函数,使用如下语句:
~~~
from fib import fibonacci
~~~
注意
* 不会把整个fib模块导入到当前的命名空间中,它只会将fib里的fibonacci单个引入
导入之后
* 不需要通过`模块名.`
* 可以直接使用模块提供的工具--全局变量,函数,类
# `from … import *`
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
~~~
from modname import *
~~~
注意
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用
# as别名
~~~
In [1]: import time as tt
In [2]: time.sleep(1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-2-07a34f5b1e42> in <module>()
----> 1 time.sleep(1)
NameError: name 'time' is not defined
In [3]:
In [3]:
In [3]: tt.sleep(1)
In [4]:
In [4]:
In [4]: from time import sleep as sp
In [5]: sleep(1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-82e5c2913b44> in <module>()
----> 1 sleep(1)
NameError: name 'sleep' is not defined
In [6]:
In [6]:
In [6]: sp(1)
In [7]:
~~~
# 定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1. 当前目录,给文件取名不要和系统模块文件重名
2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
4. 模块搜索路径存储在**system模块的sys.path变量**中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
~~~
ipython
In [1]: import os
In [2]: os.__file__
Out[2]: '/anaconda3/lib/python3.6/os.py'
~~~
可以看到在哪里
## import导入的位置
~~~
import sys
print(sys.path)
~~~
import就会去打印出来的路径下找包,来导入,会先找当前路径
## 程序执行时添加新的模块路径
~~~
import sys
sys.path.append('/home/jdxia')
# 可以确保先搜索这个路径
sys.path.insert(0, '/web/')
~~~
# 重新导入模块
模块被导入后,`import module`不能重新导入模块,重新导入需用reload
~~~
def test():
print('---1---')
~~~
~~~
import reload_test
reload_test.test()
输出 ---1---
~~~
~~~
def test():
print('---2---')
~~~
~~~
然后再次import
import reload_test
reload_test.test()
输出 ---1---
import导入模块只会导入一次,因此即使模块进行了修改,import也不会重新导入
from imp import reload
reload(reload_test)
reload_test.test()
输出 ---2---
~~~
查看帮助
~~~
help(reload)
~~~
# 查看包名
~~~
print(__package__)
~~~
- python入门
- 软件安装
- anaconda使用
- py解释器
- 数据类型和变量
- 编码
- 字符串
- 格式化
- 数据类型
- 运算符
- list和tuple
- 列表生成式
- dict和set
- 切片和迭代
- set,list,tuple之间互换
- is和==
- 公共方法
- 反射操作
- 数学运算
- 类型转换
- 对象操作
- 序列操作
- 运算符
- 内置函数
- 交互操作
- 编译执行
- 引用
- 判断,循环
- 生成器
- 迭代器
- 函数
- 数据类型转换
- 空函数
- 参数
- 全局变量
- 返回值
- 递归
- 匿名函数
- 文件操作
- 打开和关闭
- 读写
- 备份文件
- 文件定位读写
- 重命名,删除
- 文件夹相关操作
- with
- StringIO和BytesIO
- 操作文件和目录
- 序列化
- 文件属性
- 面向对象
- 类和对象
- init()方法
- 魔法方法
- 继承
- 重写
- 多态
- 类属性,实例属性
- 静态方法和类方法
- 工厂模式
- 单例模式
- 异常
- 私有化
- 获取对象信息
- *args和**kwargs
- property属性
- 元类
- slots
- 定制类
- 枚举
- 模块
- 模块介绍
- 模块中的__name__
- 模块中的__all__
- 包
- 模块发布
- 模块的安装和使用
- 多模块开发
- 标准库
- 给程序传参数
- 时间
- 正则表达式
- GIL
- 深拷贝和浅拷贝
- 单元测试
- pyqt
- 安装
- 设置窗口图标和移动窗口
- 设置气泡提示和文本
- 图片展示
- 文本框控件
- 按钮控件
- 信号和槽
- 布局
- 对话框控件
- pygame
- 窗体关闭事件
- 显示图片
- 移动图片
- 文本显示
- 背景音和音效
- FPS计算
- surface
- 鼠标事件
- 函数式编程
- map/reduce
- filter
- sorted
- 返回函数
- 装饰器
- 偏函数
- 网络编程
- tcp
- udp
- socket
- epoll
- WSGI
- 多任务
- 多线程
- 多进程
- 分布式进程
- 协程
- 迭代器
- 生成器
- yield多任务
- greenlet
- gevent
- ThreadLocal
- asyncio
- async/await
- aiohttp
- 常用内建模块
- datetime
- collections
- base64
- struct
- hashlib
- hmac
- itertools
- urllib
- xml
- HTMLParser
- 常用第三方模块
- pillow
- requests
- chardet
- psutil
- 图形界面
- 海龟绘图
- Django
- 虚拟环境搭建
- ORM
- 模型类设计和表生成
- 模型类操作
- 关系查询
- 后台管理
- 配置mysql
- 字段属性和选项
- 查询
- 模型关联
- 路由
- 模板
- selenium
- 基本原理
- api
- 八种定位方式
- 元素的操作
- 多标签
- 多表单
- 鼠标,键盘
- 警告框
- 下拉框
- 执行js
- 等待
- cookie
- 封装
- unittest模块
- 断言
- 测试用例
- jmeter
- jmeter简介
- jmeter提取json
- 添加header和cookie
- 读取csv/txt文件
- 配置文件
- ant