4.模块

使用模块
作用域
安装三方模块
使用Pillow

一、概念
Python的模块就相当于JAVA的class,把不同的功能写到不同的模块里,可以让程序更好的维护,增加代码的复用,不同模块里可以定义相同的方法名;Python避免模块名冲突的方式也和java相同,按目录组织各个模块,称为包,不同的目录下可以有相同的模块名。
需要注意的是系统里内置了一些模块,命名模块名时不能和系统的有冲突,否则无法导入系统自带的模块了;例如系统的sys.py模块,如果自己命名一个sys.py,就无法导入系统的sys.py了。

二、使用模块

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'a module'

__author__ = 'admin'

import sys


def test():
    args = sys.argv
    if len(args) <= 1:
        print('hello')
    elif len(args) <= 2:
        print('hello,%s' % args[1])
    else:
        print('Too many argments!')


if __name__ == '__main__':
    test()

说明:
第1行和第2行为标准注释,第一行注释可让这个py文件直接在Unix/Linux/Mac系统上运行,第二行表示此py文件是utf-8编码;
第3行该模块的文档注释说明,任何模块的第一个字符串都会被视为该模块的文档注释;
第5行是标明该模块的作者;
第7行是导入内置的sys模块;
第11行是通过sys.argv获取到一个存储了命令行所有参数的list,sys.argv的结果至少有一个元素,因为第一个参数永远是该模块的名称,例如运行python test4_1.py,sys.argv结果就是[‘test4_1.py’],如果运行python test4_1.py hello,sys.argv结果就是[‘test4_1.py’,’hello’]。

需要注意下第20行,当在命令行运行一个模块时,python解释器会把name变量置为main,如果在其它模块导入该模块时,这个name就不会是main了,因此可以通过这个逻辑来执行一些命令行的测试:

在另一个模块里导入并调用方法

import test4.test4_1

test4.test4_1.test()
输出结果:
hello

三、作用域
变量有public,private等类型,public修饰的变量是公开的,可以被当前模块和外部模块使用,private修饰的变量是私有的,只希望在本模块内部使用,外部就算导入了该模块也是不能直接使用的;
正常的变量名例如abc,a1,AA等是public的;name这种形式的变量是有特殊用途的变量,自己定义的变量勿写成这种形式,这两种变量都可以被直接使用;_a,__a这种形式的变量就代表private类型了,不应该在外部直接访问,但是这个和类不一样的是,类实例里的private资源的在外部是无法使用的,但是在模块里,private的变量只是“不应该”在外部访问,实际上在外部还是能访问的,这是因为Python并没有一种方法可以完全限制模块间访问private资源,仅是用这种形式来让所有开发者形成一个习惯并自觉遵守这个规则。
test4_3.py

def _f1():
print('f1')


def _f2():
    print('f2')


def f3(name):
    if name == 'f1':
        return _f1()
    else:
        return _f2()

四、安装第三方模块
在Python中可通过pip安装第三方模块,Mac和Linux无需安装,在安装Python时勾选pip和Add python.exe to Path,在命令行输出pip会出现如下画面代表已安装成功

注意:在Mac或Linux上如果并存python2.x和python3.x,对应的命令应该是pip3

现在来安装一个强大的图像处理三方模块,Python Imaging Library 就是一个Python下强大的图片处理工具库,但是目前只支持到python2.7版本,且长时间未更新了,所以改用另一个基于其开发的支持phtyon3的活跃项目Pillow。

第三方库一般都会在python官方的https://pypi.python.org/pypi注册,要安装一个三方库必须先知道它的名字,可在官网或pypi上搜索,例如Pillow的名字就叫pillowhttps://pypi.python.org/pypi/Pillow/,就可以这样安装:

C:\Users\Administrator>pip install Pillow

新版的python可能会出现如下错误

 Collecting Pillow
  Could not fetch URL https://pypi.python.org/simple/pillow/: There was a proble
m confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate v
erify failed (_ssl.c:645) - skipping
  Could not find a version that satisfies the requirement Pillow (from versions:
)
No matching distribution found for Pillow

查了下发现是因为新版本默认使用了SSL,可用如下方式解决:

C:\Users\Administrator>pip install --trusted-host pypi.python.org Pillow

然后使用这个模块处理图片:

from PIL import Image

# 打开一张当路径下的图片
im = Image.open('a.jpg')
# 获取此图片的信息
print(im.format, im.size, im.mode)

# 生成缩略图
im.thumbnail((200, 130))
im.save('a1.jpg', 'JPEG')

这个生成规则是以缩放比例更大的一边自动缩放另一边,例如a.jpg图是1440x900的图,如果要缩放成200x130,宽被缩小了1440/200=7.2倍,高约被缩小了900/160=6.92倍,就是宽被缩放的比例更大,就按照7.2的比例缩放,那么缩放完后的a1.jpg的比例就是200x(900/7.2) = 200x125,虽然传的参数是200x130,实际上结果是200x125。

猜你喜欢

转载自blog.csdn.net/Aislli/article/details/81163455
今日推荐