ES11新增的这9个新特性
最近几年,大数据行业的迅猛发展带动了数据分析师需求量的增加。数据分析师迅速成为了求职市场上的香馍馍。 造成一些圈外人认为数据分析就是企业的灵丹妙药,通过数据分析能解决一切问题。产品改版,营销策略,市场定位,战略决策,哪一项不需要数据分析。连战略决策都要靠分析师,能不重要么?
但理想很丰满,现实很骨感。真正做过数据分析的同学一定能体会到,同其他行业一样,分析师在工作中会遇到各种的窘境,导致自己寸步难行,郁闷迷茫。其中有些问题甚至难以改变。 面向对象编程真的要被取代了吗? 面对越来越多的问题,函数式编程可能是更有效的一种选择。数据分析、机器学习、并行编程,这些领域你投入的越多,你就会越喜欢函数式编程。 但是目前面向对象开发的程序员的岗位需求量依然比函数式编程开发程序员多得多。但是这也并不意味着你不能成为后者,函数式编程开发的程序员目前仍然比较稀缺。
最有可能的情况是,面向对象的编程将会继续存在十年左右。当然,选择相对前卫的方式是好的,但这并不意味着你应该放弃面向对象编程。所以在接下来的几年中,不要完全放弃它,但至少确保它不是你唯一掌握的程序设计方式。 引用问题 你可能会想到进行没有层次结构的面向对象编程。我们可以使用属性集群,并根据需要继承、扩展或重写属性。也许这有点混乱,但这将是对当前问题的准确表示。 这里只存在一个问题:封装的全部目的是使数据片段彼此之间保持安全,从而使计算效率更高,但没有严格的层次结构,这是行不通的。 假设一个对象 A 通过与另一个对象 B 交互来覆盖层次结构,会发生什么情况?其他关系的情况并不重要,但当 B 不是 A 的直接父类时,A 必须包含 B 的全部私有引用,否则,它们将无法交互。 但是,如果 A 包含 B 的子类也具有的信息,那么就可以在多个位置修改该信息。因此,有关 B 的信息已经不再安全,并且封装已经被破坏。 尽管许多面向对象的程序员都使用这种架构来构建程序,但这并不是面向对象编程,只是一团糟。 单一范式存在的风险 以上 5 个问题的共同点是它们都存在不合适的继承。由于继承没有包含在面向对象编程的原始形式中,所以这些问题可能不能称为面向对象本身的问题。 但是也并不是只有面向对象编程会被夸大。在纯粹的函数式编程中,处理用户的输入或在屏幕上输出消息极其困难。对此,面向对象或面向过程编程会好很多。 但仍然有一些开发人员试图将这些东西用纯函数的方式实现,并且编写几十行没人能看懂的代码。而使用另一种范式就能够轻松地将代码简化为几行可读的代码。
毫无疑问,函数式编程正在得到更多关注,而面向对象编程近几年遭到一些诟病。了解新的编程范式并在适当的时候使用它们是很有意义的。无论哪种编程范式,都不需要只遵循一种,在适当的时候使用不同的编程范式才能更好地解决问题。 8. 统一的软件包导入错误 Python3.9 之前的版本在导入 Python 库时存在的主要问题是:当相对导入超出其顶级包时,Python 中的导入行为不一致。 builtins.__import__() 引发 ValueError,而 importlib.__import__() 引发 ImportError。Python3.9 版本进行了修复,它将统一引发 ImportError。 9. 生成随机字节 Python 3.9 版本中添加了新的函数 random.Random.randbytes()。该函数可用于生成随机字节。 Python 支持生成随机数,但如果需要生成随机字节呢?在 Python3.9 版本之前,开发人员必须想方设法生成随机字节。尽管他们可以使用 os.getrandom()、os.urandom() 或者 secrets.token_bytes() 来生成随机字节,但这些方法无法生成伪随机模式。 为了确保随机数的产生符合预期行为,并且过程可复现,开发人员通常将种子(seed)与 random.Random 模块一起使用。因此,Python 3.9 添加了 random.Random.randbytes() 方法,以可控的方式生成随机字节。 10. 修复字符串替换函数 在 Python 3.9 版本之前,对于所有非零的 n,"".replace("",s,n) 返回空字符串而不是 s。这个错误使用户困惑,并导致应用程序的不一致行为。
Python 3.9 修复了该问题,不管 n 是否为 0,其结果都与 "".replace("", s) 一致。 (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |