Python
中提供了一个方法能够从文件中获取定义,在脚本或者解释器的一个交互式实例中使用, 这样的文件被称为模块;__name__
获得下面是一个使用python
标准库中模块的例子python
import sys
print('命令行参数以下:')
for i in sys.argv:
print(i)
print('\n\nPython 路径为:', sys.path, '\n')
# 输出结果以下
命令行参数以下:
../GitHub/PythonDemo/PythonStudy/7-模块/1-模块概述.py
Python 路径为: ['/Users/../GitHub/PythonDemo/PythonStudy/7-模块', '/Users/../GitHub/PythonDemo/PythonStudy', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages', '/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
复制代码
argv
: 获取命令行参数的列表import sys
引入python
标准库中的sys.py
模块import
: 这是引入一个模块的方法(后面会提到)sys.path
: 包含了一个Python
解释器自动查找所需模块的路径的列表Python
中不但可使用第三方模块和系统模块, 同时咱们还可使用自定义模块,Python
中一个.py
文件就是一个模块Titan.py
模块, 代码以下print('这是Titan模块')
# 定义变量
age = 20
name = 'titan'
# 定义方法
def sayGood():
print('good')
def sayNice():
print('nice')
def sayBad():
print('bad')
复制代码
import
方式在Python
中导入另外一个文件或者模块, 受用的语法是import
git
# 引入单个或多个模块
import module1[, module2[,... moduleN]
# 示例
# 一次导入多个模块
import time, random, os
# 一次导入一个模块
import calendar
复制代码
须要注意的是: github
import
, 能够防止模块被重复引用.py
后缀import
语句的时候,Python
解释器是怎样找到对应的文件的呢?
Python
的搜索路径,搜索路径是由一系列目录名组成的,Python
解释器就依次从这些目录中去寻找所引入的模块。Python
编译或安装的时候肯定的,安装新的库应该也会修改。搜索路径被存储在sys
模块中的path
变量使用示例app
import Titan
Titan.sayBad()
Titan.sayGood()
print(Titan.name)
# 输出结果:
bad
good
titan
复制代码
from…import
方式从模块中导入一个指定的部分到当前的命名空间, 一样也能够导入一个模块中的多个部分(或者导入多个方法或变量), 格式以下:dom
from modname import name1[, name2[, ... nameN]]
复制代码
使用示例函数
from Titan import sayGood, sayBad, age
sayBad()
sayGood()
print(age)
# 输出结果:
bad
good
20
复制代码
须要注意的是:ui
from…import*
方式把一个模块中全部的内容, 所有倒入当前命名空间, 可是最好不要过多地使用spa
# 格式:
from modname import *
# 使用:
from Titan import *
sayGood()
print(age)
复制代码
__name__
属性.py
文件, 一个模块呗另外一个程序引用, 模块中的一些可执行语句便会执行__name__
属性来使程序仅调用模块中的一部分if __name__ == '__main__':
print('这是Titan模块')
else:
def sayGood():
print('good')
def sayNice():
print('nice')
def sayBad():
print('bad')
age = 20
name = 'titan'
复制代码
name
和main
先后都是双下划线__name__
属性, 当其值等于__main__
时, 代表该模块自身在执行, 不然被引入了其余文件__name__
属性的值为__main__
dir()
函数dir()
能够找到模块内定义的全部名称, 以一个字符串列表的形式返回dir()
函数会罗列出当前定义的全部名称import Titan
print(dir(Titan))
# 输出结果:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'age', 'name', 'sayBad', 'sayGood', 'sayNice']
print(dir())
# 输出结果:
['Titan', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
# 这里定义一个新的变量
sum = 30
print(dir())
# 输出结果:
['Titan', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'sum']
# 把定义的变量删除后
del sum
print(dir())
# 输出结果:
['Titan', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
复制代码
这里咱们先思考这样一个问题: 在同一个项目中有两个或两个以上的开发者分别定义了相同名字的模块(固然狮子啊不一样的目录中, 同一个目录下不可能建立出相同名字的文件), 那么模块该如何调用命令行
解决code
Python
模块命名空间的形式,采用"点模块名称"A.B
的模块表示了名为A
的包中名为B
的子模块须要注意的是:
在每个包内(模块的同级目录下)必需要建立一个名为__init__.py
的文件, 主要是为了不一些滥竽充数的名字, 目前该文件内能够什么都不用写, 如图所示:
调用方法
import a.Titan
import b.Titan
import b.coder
a.Titan.sayGood()
b.Titan.sayGood()
b.coder.sayGood()
# 输出结果:
good--a
good--b
good--coder
复制代码
pip
简介Python
中第三方库是经过pip
安装和管理的, pip
就像iOS
中的pod
同样, 负责安装和管理第三方库Mac
和Linux
系统中pip
是默认安装过的, 通常无需从新安装, 若有问题, 请自行百度解决Mac
系统中会有一个默认的Python2.7
版本的, 我本身安装了一个3.6的版本, 天然默认也安装了pip
Python3.6
中pip
的命令, 这里须要以pip3
为命令头执行# 查看当前pip版本
pip3 -V
# 安装第三方库
pip3 install ...
# 对pip进行升级
pip3 install --upgrade pip3
复制代码
Mac
系统安装第三方库, 直接打开终端执行安装命令便可Pillow
已是Python
平台事实上的图像处理标准库了PIL
功能很是强大,但API
却很是简单易用pip3 install Pillow
复制代码
下面是最多见的图像缩放操做示例代码
from PIL import Image
# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('titan.jpg')
# 得到图像尺寸
w, h = im.size
print('image size: %sx%s' % (w, h))
# 缩放到50%:
im.thumbnail((w//2, h//2))
print('image to: %sx%s' % (w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
im.save('jun.jpg', 'jpeg')
复制代码
其余功能如切片、旋转、滤镜、输出文字、调色板等包罗万象, 代码以下:
from PIL import Image, ImageFilter
# 打开一个jpg图像文件,注意是当前路径:
im = Image.open('jun.jpg')
# 应用模糊滤镜:
im2 = im.filter(ImageFilter.BLUR)
im2.save('jun1.jpg', 'jpeg')
复制代码
相关参考