Python字符串的创建和驻留机制详解
作者:向阳花木 发布时间:2022-07-07 18:49:17
标签:Python,字符串,驻留机制
字符串
字符串在Python中是基本数据类型,是一个不可变的字符序列。
字符串驻留机制
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
驻留机制的几种情况(交互模式windows+r,cmd)
1、字符串的长度为0或1时
2、符合标识符的字符串
3、字符串只在编译时进行驻留,而非运行时
b在运行前连接abc,而c是在运行时连接,因此c没有驻留,开辟了新的空间
4、[-5, 256]之间的整数数字
sys中的intern方法强制两个字符串指向同一个对象
PyCharm对字符串进行了优化处理
a = 'abc%'
b = 'abc%'
print(a is b) # True
字符串驻留机制优缺点
当需要相同的字符串时,可以直接从字符串池里拿出来用,避免频繁的创建和销毁,提升效率并节约内存。因此拼接字符串和修改字符串是会比较影响性能的。
在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符串中的长度,然后再拷贝,只new一次对象,效率比“+”高。
来源:https://www.cnblogs.com/0xiaoyu/p/15936011.html
0
投稿
猜你喜欢
- 使用python来登录asp网站和登录其他网站差不多,只是因为asp页面在每次请求的时候都要带上viewstate,因此使用python来登
- 本文实例讲述了Python文件与文件夹常见基本操作。分享给大家供大家参考,具体如下:1、判断文件(夹)是否存在。os.path.exists
- 环境python版本号系统游览器python 3.7.2win7google chrome关于本文本文将会通过爬虫的方式实现简单的百度翻译。
- 1 PromisePromise有一个缺点是一旦创建无法取消,所以本质上Promise是无法被终止的.但是我们可以通过中断调用链或中断Pro
- 本文实例讲述了python生成IP段的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/local/bin/python#-*-
- 已经下载了wampserver,以后有时间试下在本地运行ThinkPHP。在app/lib/Action/文件夹下可以为每一个模块定义控制器
- 概述介绍触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段,但是触发器无需调用,当
- vue3.0 beta 版本已经发布有一阵子了,是时候上手体验一波了~注意,本文所有演示都是基于 vue3.0 beta 版本,不保证后续正
- 使用Windows的wmic命令,获取可执行文件的运行状况、文件路径、PID,如果可执行文件挂掉,就重启并邮件告警
- 项目应用中,曾有以下一个场景:接口中要求发送一个int类型的流水号,由于多线程模式,如果用时间戳,可能会有重复的情况(当然概率很小)。所以想
- 假设在python中有一字典如下:x={‘a':'1,2,3', ‘b':'2,3,4'}需
- 目前可实现:MD5算法、SHA256算法、先MD5后SHA256、先SHA256后MD5、两次MD5、两次SHA256、前8位MD5算法后8
- Entry(输入框)组件通常用于获取用户的输入文本。何时使用 Entry 组件?Entry 组件仅允许用于输入一行文本,如果用于输入的字符串
- 用IIS调试ASP程序时,有的页面可以显示出错行及出错原因,虽然原因不是很具体但足以引导调试程序,但有些时候就直接出现:HTTP 500 -
- 1.连接测试连接是否成功:import redisr = redis.Redis(host='192.168.136.102'
- Spyder简介Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑、交互测试、调试等特
- 安装Pycharm进行Python开发时,经常右下角提示No R interpreter defined,处理方式:1、安装R,然后将R的路
- 问题描述由于画图时plt.title()默认是显示英文,如果我们设置标题为中文,会无法显示,如图:plt.title('训练损失&#
- 元字符(Meta Characters)是正则表达式中具有特殊意义的专用字符,在Python中也不例外,是用来指明前导字符(位于元字符前的字
- 一、基本用法Queue类实现了一个基本的先进先出容器。使用put()将元素增加到这个序列的一端,使用get()从另一端删除。具体代码如下所示