1. 引言

自2017年以来,我一直在用Python编程实现各种各样的功能,但是在过去的一年中才知道这些新的特性。本文重点介绍Python中一些不常用但是非常有用的特性。
闲话少说,我们直接开始吧!

2. Frozensets

frozenset()用于返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
举例如下:

fs = frozenset([1,2,3])
print(fs)

输出如下:

冻结集合的缺点总结如下:

  • 创建冻结集合后,我们无法在往冻结集合中添加或删除任何内容
  • 我们只能将变量重新分配给新的冻结集合

冻结集合的优点总结如下:

  • 它是不可变的,因此我们可以将其用作字典的键
  • 它是不可变的,因此我们可以将frozenset 放入另一个set
  • 检查冻结集是否包含某些元素需要O(1) 时间复杂度
  • 我们仍然可以使用.union.intersection等方法来操作冻结集

3. 字符串对齐— ljust, rjust and center

字符串中的方法.ljust.rjust.center可以使我们能够轻松实现字符串对齐。例如:

print("|" + "hello".ljust(20) + "|")
print("|" + "hello".rjust(20) + "|")
print("|" + "hello".center(20) + "|")

输出如下:

解释如下:

  • .ljust(20) 返回一个长度为 20 的字符串,右侧填充空格
  • .rjust(20) 返回一个长度为 20 的字符串,左侧填充空格
  • .center(20) 返回一个长度为 20 的字符串,两边填充相等数目的空格

注意:
如果我们输出的字符串长度大于在这 3 个方法中输入的数字,则它只是返回原始字符串,而不添加空格。

4. 使用pickle序列化多个对象

我知道可以使用pickle来输出单个对象,但我最初不知道可以使用pickle来序列化多个对象。

举例如下:

fruits = ["apple", "orange", "pear"]
prices = [4, 5, 6]
quantities = [100,200,300]

我们将上述三个列表序列化并保存到.pckl文件中,如下:

import pickle
with open("test.pckl", "wb") as f:pickle.dump(fruits, f)pickle.dump(prices, f)pickle.dump(quantities, f)

接着,我们来反序列化上述对象(将.pckl文件转换回Python对象):

with open("test.pckl", "rb") as f:fruits = pickle.load(f)prices = pickle.load(f)quantities = pickle.load(f)
print(fruits)
print(prices)
print(quantities)

5. 终端彩色输出

我们需要安装第三方库,如下:

pip install colorama

接着我们来输出彩色文本,如下:

from colorama import Fore
print(Fore.RED + "hello")
print(Fore.BLUE + "hello")
print(Fore.GREEN + "hello")

输出如下:

6. 总结

本文重点介绍了Python中不常使用的四个特性,并针对每个特性给出了相应的代码示例。

您学废了嘛?

Python中不为人知的四个特性相关推荐

  1. python的ols_【量化工具】OLS在python中的四种实现方式

    在p-quant中,线性回归应该是最最最重要的统计方法了,没有之一:OLS又是线性回归中最常见的形式,在python中可以利用多个方法来实现 考虑线性回归如下形式 一.sklearn from skl ...

  2. Python中的四种队列(queue)、堆(heap)

    Python中提供了四种内置的队列实现,特别地其中的优先级队列可以用来实现堆.此外,在Python中我们也直接使用堆.熟练掌握这些数据结构,在问题求解时可以大大简化代码的实现.文末将结合一道Leetc ...

  3. python中字符串定义及特性

    一.字符串的定义 字符串 就是一系列字符.在 Python 中,用引号括起的都是字符串,其中的引号可以是单引号,下面的c在使用单引号的时候,需要转译,这是由于句子中含有单引号,也可以是双引号,如下所示 ...

  4. Python中的四种交换数值的方法

    交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的. 今天这个面试是问大家有几种办法来实现交换两个变量的值. 在没开始看具体答案前,你可以先想想看 下面分别来说说这几种方法 方法一 ...

  5. python中字典使用_python中字典的使用

    python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...

  6. python中args和kwargs_Python 函数参数*args和**kwargs

    尽管*args和**kwargs参数不受重视,但这它们是Python中非常有用的特性.了解其中的潜能会让你成为更高效的开发者. *args和**kwargs参数到底有什么用呢?它们能让函数接受可选参数 ...

  7. Python中metaclass解释

    Classes as objects 首先,在认识metaclass之前,你需要认识下python中的class.python中class的奇怪特性借鉴了smalltalk语言.大多数语言中,clas ...

  8. python中var是什么_这些Python Number 知识你需要了解!

    原标题:这些Python Number 知识你需要了解! 如果把编程比作建房子,那么数据就是建材.而建材有砖头.水泥.木头.钢材等,不同类型的建材配合工作,才能把房子建好.编程也一样,不同类型的数据类 ...

  9. python中延时函数_python延时函数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 可以使用python的time模块来实现类似于c中的sleep函数作用代码如下: ...

最新文章

  1. 创立创造创建的区别_【干货|知识分享】Solidworks与Rhino有什么区别呢?
  2. FastMaskRCNN算法TensorFlow配置,训练
  3. PHP设计模式--数据访问对象模式
  4. mysql y_关于MySQL中Y和~问题
  5. UNIX/Linux 系统管理技术手册阅读(二)
  6. Java c语言词法,c语言写的Java词法分析
  7. python sqlite cursor
  8. iPhone 9或于4月3日发布;复制粘贴之父Larry Tesler去世;Android 11开发者预览版来了!| 极客头条...
  9. 539.最小时间差-LeetCode
  10. linux ras目录,Linux下配置站点-FTP-RSA私钥-公钥
  11. Linux IO系统分析(scsi篇)
  12. Java中NumberFormat格式化数字
  13. j2sdkversion-doc.zip下载地址
  14. JS-获取视频总时长
  15. RTX 3090Ti发布!元宇宙平台开放!
  16. 输入一个字符串,逆序并输出
  17. python爬虫爬取今日头条_python 简单爬取今日头条热点新闻(一)
  18. hive中常用字符串转时间的处理方法
  19. Javascript 将阿拉伯数字转换成罗马数字
  20. ubuntu ip地址修改

热门文章

  1. 去哪查阅ISO国际标准?
  2. [C] 不撞南墙不回头——深度优先搜索
  3. MacOS Big Sur 如何安装创新SBX-Fi Surround 5.1Pro(USB外置)声卡?
  4. Anbox 编译和Anbox Docker 下编译运行
  5. 利用apktool查看apk源代码
  6. C#基础+面向对象学习
  7. android应用的优化建议(转载)
  8. 给大家推荐一下常用的镜像站
  9. 怎么转换视频格式?腾讯视频qlv格式转换mp4方法
  10. 故事版(storyBoard)-lllegal configuration connection object cannot have a prototype objct as