python中的字符串可变吗_python中关于字符串是不可变的理解

python中字符串是不可变的,但下面的代码怎么理解?

a = 'joe'

a += ' is'

a

会输出 ‘joe is’

第二个问题:

x = 'a'

y = 'a'

x is y

输出True

x = [1,2]

y = [1,2]

x is y

输出False

why?

已经知道了,按照一楼朋友的方法试了一下,就明白了。感谢

当值是字符串时

x=y=’a’和

x=’a’

y=’a’

都是2个指针指向同一块内存地址

当值是列表时

x=y=[1,2]

x、y的指针指向同一块内存地址

x = [1,2]

y = [1,2]

x、y分别指向不同的内存地址

执行完第一句,输出id(a),最后再执行id(a)看看,就明白了。

a = ‘joe’

a += ‘ is’

a

a+=”is”实际是新建立了一个变量a,变量的值是a(原来的joe)加上一个“is”

也就是第一句是一个赋值语句,第二句也是一个赋值语句,不过是后者覆盖了前者。

例如

a="1"

a="2"

a="3"

a

结果你猜到了。

你问的字符串不可变是什么意思,看下面的例子:

a="hello world"

a.upper()

结果 >>

HELLO WORLD

a

结果

hello world

对string进行任何操作,如上面的任务,让他大写,他告诉我的大写是什么,但他自己岿然不动。

你要新的字符串就自己b=a.upper(),把结果富裕给另外的值,如果a不想要了,你也可以直接这么写:

a=hello world'

a=a.upper()

a就是

"HELLO WORLD"

这看起来像sting可变,但其实只是你覆盖了自己而已,不要跟string不可变概念搞混淆了。

以上部分同样适用于js。

此外,

>

a=”hello’

b=’hello’

id(a)

42926912

id(b)

42926912

“`

虽然有两个变量,但内存里只有一个hello,a和b都指向同一个内存地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值