千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:太原千锋IT培训  >  技术干货  >  编程中为什么要把一些变量私有?

编程中为什么要把一些变量私有?

来源:千锋教育
发布人:xqq
时间: 2023-10-19 02:24:44

一、编程中要把一些变量私有的原因

1、避免同名变量互相干扰(特别是多个人做同一个项目时);
2、隐藏更多的细节,只需协商好接口参数,便于保密;
3、有些语言中,私有变量是定义在堆(或栈)中的,使用完成后可以释放掉,

例子:

设想我们开发一个类似手表的类,里面有个 GetLocalTime() 方法的功能是尽可能精确地获取当前时区的时间。一般使用这个类的其他程序员需求只有一个,获知当前时区的时间,可能用这个时间值来做一些其他的事情。如果我们丝毫不在乎这个类的包装,里面除了 GetLocalTime(),还有一大堆别的公开的方法,(随意编造的)如获取和连接GPS设备的方法、连接定位服务以及定位校准的方法、国际时区标准和有关协议对统一时间戳的计算方法、远程铯原子钟同步方法、双向反馈校准时差方法、各种延迟和错误处理机制的方法、各种事件监听方法等等等等。

首先其他使用这个类的开发者一般并不需要知道这个类内部是如何「尽可能精确地获取到当地时间的」,如果把这些全部暴露给其他开发者,那么就有潜在的危险:如果其他开发者错误的修改了某个铯原子钟同步的全局参数,那么所有开发者获取到的时间就都是错误的了;如果其他开发者过于频繁地直接访问内部连接GPS设备的方法,可能GPS并发连接数太多就崩溃了,使得这个类本身难以管理并发连接,限制用户对竞争性资源的可访问性;如果其他开发者设定参数时没有通过统一入口处理数据标准,使得不符合标准的参数传输到设备,导致设备障碍,也会造成系统的失败。

由此可见,良好设计的公有/私有封装可以避免掉上面的大部分问题,降低学习成本、提升可维护性。

延伸阅读:

二、内存池机制

在Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由于这些内存的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运行期间会大量地执行malloc和free的操作,频繁地在用户态和核心态之间进行切换,这将严重影响Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。

内存池概念
内存池的概念就是预先在内存中申请一定数量的,大小相等的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。这样做最显著的优势就是能够减少内存碎片,提升效率。内存池的实现方式有很多,性能和适用范围也不一样。

特性
Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。

Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的 malloc。

对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

什么是泛型?

2023-10-19

webpack的loader和plugin有什么区别?

2023-10-19

黑盒测试和白盒测试的区别优缺点?

2023-10-19

最新文章NEW

Android传值Intent和Bundle区别?

2023-10-19

在线编辑文档有哪些?

2023-10-19

什么是Web?

2023-10-19

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>