Python中模块的使用

2018-05-31  本文已影响67人  TitanCoder

概述

模块简述

模块优点

标准库模块

下面是一个使用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'] 

自定义模块

print('这是Titan模块')

# 定义变量
age = 20
name = 'titan'

# 定义方法
def sayGood():
    print('good')

def sayNice():
    print('nice')

def sayBad():
    print('bad')

导入模块

import方式

Python中导入另一个文件或者模块, 受用的语法是import

# 引入单个或多个模块
import module1[, module2[,... moduleN]

# 示例
# 一次导入多个模块
import time, random, os
# 一次导入一个模块
import calendar

需要注意的是:

使用示例

import Titan

Titan.sayBad()
Titan.sayGood()
print(Titan.name)

# 输出结果:
bad
good
titan

from…import方式

从模块中导入一个指定的部分到当前的命名空间, 同样也可以导入一个模块中的多个部分(或者导入多个方法或变量), 格式如下:

from modname import name1[, name2[, ... nameN]]

使用示例

from Titan import sayGood, sayBad, age

sayBad()
sayGood()
print(age)

# 输出结果:
bad
good
20

需要注意的是:
这种方式, 可能会导致和本文件中定义的方法或者变量重名, 这里需要注意

from…import*方式

把一个模块中所有的内容, 全部倒入当前命名空间, 但是最好不要过多地使用

# 格式:
from modname import *

# 使用:
from Titan import *
sayGood()
print(age)

模块内置属性和函数

__name__属性

if __name__ == '__main__':
    print('这是Titan模块')
else:
    def sayGood():
        print('good')


    def sayNice():
        print('nice')


    def sayBad():
        print('bad')


    age = 20
    name = 'titan'

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__']

这里我们先思考这样一个问题: 在同一个项目中有两个或两个以上的开发者分别定义了相同名字的模块(当然狮子啊不同的目录中, 同一个目录下不可能创建出相同名字的文件), 那么模块该如何调用

解决

需要注意的是:

在每一个包内(模块的同级目录下)必须要创建一个名为__init__.py的文件, 主要是为了避免一些滥竽充数的名字, 目前该文件内可以什么都不用写, 如图所示:

包.png

调用方法

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简介

# 查看当前pip版本
pip3 -V

# 安装第三方库
pip3 install ...

# 对pip进行升级
pip3 install --upgrade pip3

安装第三方库

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')

相关参考


上一篇 下一篇

猜你喜欢

热点阅读