Python3学习笔记10——作用域

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。

在Python中,是通过_前缀来实现的。

正常的函数和变量名是公开的(public),可以被直接引用,但是有特殊用途,比如__author__,__name__就是特殊变量,文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名。

类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等。

之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

private函数或变量不应该被引用,那他们有什么用呢?请看例子:

def _private_1(name):
    return 'Hello,%s' % name

def _private_2(name):
    return 'Hi,%s' % name

def greeting(name):
    if len(name)>3:
        return _private_1(name)
    else:
        return _private_2(name)

print(greeting('康永清'))
print(greeting('马垒'))
print(greeting('上官冲力'))

输出结果:
Hi,康永清
Hi,马垒
Hello,上官冲力

我们在模块里公开greeting()函数,而把内部逻辑用private函数隐藏起来了,这样调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:
外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

在Python种,安装第三方模块,是通过包管理工具pip完成的。
如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了。
注意:Mac或Linux上有可能并存Python3.x和Python2.x,因此对应的pip命令是pip3.

第三方库PIL(Python Imageing LIbrary),这是Python夏非常强大的处理图像的工具库,不过PIL目前只支持到Python2.7,因此,基于PIL的Pillow项目开发非常活跃,并且支持最新的Python3.

有了Pillow,处理图片易如反掌。随便找个图片生成缩略图:

from PIL import Image

im=Image.open('first.png')

print(im.format,im.size,im.mode)

输出结果:
PNG (7200, 3000) RGBA

im.thumbnail((200,100))
im.save('thumb.jpg','png')

其他常用的第三方库还有MYSQL的驱动:mysql-connector-python,用于科学计算的NumPy库:numpy,用于生成文本的模板工具jinja2,等等。

你可能感兴趣的:(python基础)