Python3学习笔记10——作用域

本文探讨了Python中模块的设计原则,如何通过_前缀区分public与private函数及变量,实现代码封装和抽象。同时介绍了pip工具安装第三方模块的方法,以及Pillow、mysql-connector-python、NumPy、jinja2等常用第三方库的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在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,等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值