你所不知道的Python | 字符串连接的秘密

字符串连接,就是将 2 个或以上的字符串合并成一个,看上去连接字符串是一个非常基础的小问题,但是在 Python 中,我们可以用多种方式实现字符串的连接,稍有不慎就有可能因为选择不当而给程序带来性能损失。 方法 1:加号连接 很多语言都支持使用加号连接字符串,Python 也不例外,只需要简单的将 2 个或多个字符串相加就可以完成拼接。 a = 'Python' b = '私房菜' r = a + b # 输出'Python私房菜' 方法 2:使用%操作符 在 Python 2.6 以前,%操作符是唯一一种格式化字符串的方法,它也可以用于连接字符串。 a = 'Python' b = '私房菜' r = '%s%s' % (a, b) # 输出'Python私房菜' 方法 3:使用 format 方法 format 方法是 Python 2.6 中出现的一种代替%操作符的字符串格式化方法,同样可以用来连接字符串。 a = 'Python' b = '私房菜' r = '{}{}'.format(a, b) 方法 4:使用 f-string Python 3.6 中引入了 Formatted String Literals(字面量格式化字符串),简称 f-string,f-string 是%操作符和 format 方法的进化版,使用 f-string 连接字符串的方法和使用%操作符、format 方法类似。 a = 'Python' b = '私房菜' r = f'{a}{b}' 方法 5:使用 str.join()方法 字符串有一个内置方法 join,其参数是一个序列类型,例如数组或者元组等。 a = 'Python' b = '私房菜' r = ''.join([a, b]) 对比测试 既然连接字符串有这么多方法,那么使用时到底选择哪种呢?我们从代码可读性和性能两个层面来评估一下上面 5 种方法。 ...

六月 28, 2018 · 1 分钟 · Zhiya

Ubuntu 18.04 LTS安装KVM虚拟机

前一阵使用在最新的 Ubuntu 18.04 上安装了 KVM 来虚拟一个小的 VM 集群,将主要过程和其中遇到的一些问题记录下来。 准备工作 首先需要检查一下 CPU 是否支持虚拟化,执行一下命令来检查/proc/cpuinfo 文件中是否又虚拟化相关的字眼,如果有的话表明 CPU 支持虚拟化技术。 egrep -c '(svm|vmx)' /proc/cpuinfo 上面命令执行结果如果返回 0,表示 CPU 不支持虚拟化技术。当然主板 BIOS 中的虚拟化技术也可能不是默认开启的,如果没有开启需要手动开启一下。 安装 KVM 执行以下命令安装 KVM sudo apt update sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virt-manager 将 libvirtd 添加自启动 sudo systemctl start libvirtd.service sudo systemctl enable libvirtd.service 网络模式 KVM 安装完成后,首先需要进行网络设定,KVM 支持四种网络模式: 桥接模式 NAT 模式 用户网络模式 直接分配设备模式 主要讲一下前两种 桥接(Bridge)模式 在桥接模式下,宿主机和虚拟机共享同一个物理网络设备,虚拟机中的网卡和物理机中的网卡是平行关系,所以虚拟机可以直接接入外部网络,虚拟机和宿主机有平级的 IP。 原本宿主机是通过网卡 eth0 连接外部网络的,网桥模式会新创建一个网桥 br0,接管 eth0 来连接外部网络,然后将宿主机和虚拟机的网卡 eth0 都绑定到网桥上。 ...

六月 28, 2018 · 2 分钟 · Zhiya

大毒瘤!卸载WeGame解决XPS 15蓝屏问题

潜伏期 去年 4 月底买了一台美版 XPS 15 9560,用了几个月之后就会偶尔出现蓝屏问题,由于之前就在论坛上看到很多吐槽 XPS 品控的帖子,以为自己也中了枪,好在蓝屏也不频繁,不影响使用也就没管。 上升期 进入今年 5 月,升级了 Win10 1803 后(基本上软件有更新我都会第一时间升级,体验最新的改进),蓝屏的次数开始多了起来,开始变得影响使用,于是开始着手查找问题。 由于心急,并没有看转储文件,而是直接 Google 了 XPS 15 的蓝屏问题,希望能尽快找到方案。很快发现具有类似问题的人不在少数,也有很大一部分人以此说 XPS 15 品控不好,看了很多内容后,把怀疑的方向放在了驱动层面(Dell 有一个 Dell Update 软件,一有更新提示我就会更新驱动),于是从更新频率最高的显卡驱动入手,降级显卡驱动到上一个版本,然而并没有什么用。于是又降级了 Wifi 驱动,因为 Wifi 驱动也是最近更新的,并且 XPS 15 的 Killer 显卡兼容性似乎没有那么好。 降级完驱动之后,电脑进入了短暂的回光返照阶段,用了几个小时都没有蓝屏,然而紧接着更加不幸的问题就要发生了。 爆发期 用 QQ 接收一个大文件,大概 1G,进行到一半的时候忽然蓝屏,重启后重新接收,准备传完之后再解决蓝屏问题,然而不幸的是传了一半又蓝屏了… 这时我把怀疑的方向转向了硬盘,于是降级了 Intel RST 驱动,心想降级要是没用的话,有可能是 SSD 跪了… 降级后怀着忐忑的心情再次重试,竟然…又蓝屏了… 这次把怀疑的方向转到了 QQ 或者 Wifi 上,毕竟是一用 QQ 接收大文件就出问题,那么不是 QQ 就是 Wifi 了,于是卸载 QQ,用迅雷下载一个大文件,果不其然,又跪了… 然而已经降级了 Wifi 驱动,之前也一直没有什么问题,难道真的是硬件出了问题?这个时候,我内心已经有点放弃 PC,转而在京东上看 MBP 的价格了… ...

六月 20, 2018 · 1 分钟 · Zhiya

你所不知道的Python | 字符串格式化的演进之路

字符串格式化对于每个语言来说都是一个非常基础和常用的功能,学习 Python 的同学大概都知道可以用%语法来格式化字符串。然而为了让我们更方便的使用这个常用功能,语言本身也在对字符串格式化方法进行迭代。 Python 2.6 以前:%操作符 在 Python 2.6 出现之前,字符串迭代只有一种方法,就是%(也是取模)操作符,%操作符支持 unicode 和 str 类型的 Python 字符串,效果和 C 语言中的 sprintf()方法相似,下面是一个使用%格式化字符串的例子: print("I'm %s. I'm %d year old" % ('Tom', 27)) %符号前面使用一个字符串作为模板,模板中有标记格式的占位符号,%后面是一个 tuple 或者 dict,用来传递需要格式化的值。占位符控制着显示的格式,下面列表展示了占位符的种类: 占位符 内容 %d 十进制整数 %i 十进制整数 %o 八进制整数 %u 无符号整数 %x 无符号十六进制(小写) %X 无符号十六进制(大写) %e 浮点型(科学记数法,小写) %E 浮点型(科学记数法,大写) %f 浮点数 %F 浮点数 %g 浮点型,如果小数位数超过 4 位,使用科学记数法表示(小写) %G 浮点型,如果小数位数超过 4 位,使用科学记数法表示(大写) %c 单个字符 %r 字符串(调用 repr()方法生成) %s 字符串(调用 str()方法生成) 除了对数据类型的指定,%操作符还支持更复杂的格式控制: ...

六月 11, 2018 · 2 分钟 · Zhiya

初学者必备 | Python Cheat Sheet 中文版

笔者整理了 Python3 中内置方法的速查表,包含: 内置方法 列表处理方法 字典处理方法 元组处理方法 集合处理方法 序列类型的切片方法 共计 100 多个方法,点击图片——查看原图——下载。

五月 31, 2018 · 1 分钟 · Zhiya