python将变量i的值增加1_Python中变量自增、i+=x与i=i+x、is与==

这篇博客可能比较low bee,但是对于一个掌握了其他语言,刚刚学习Python的人来说,也许会有一点点的帮助。

在Cpp中,我们总是讨论前缀自增和后缀自增的效率问题:

++i 是i=i+1,表达式的值就是i本身

i++ 也是i=i+1,但表达式的值是加1前的副本,由于要先保存副本,因此效率低一些。

那么我看python中的自增呢?

++i

>>> i=1

>>> ++i

1

i++

>>> i=1

>>> i++

File "", line 1

i++

^

SyntaxError: invalid syntax

解释:

python中根本不存在自增,之所以++i还是i的值,因为这里的+是表示正数的意思:

>>> i=1

>>> +++++i

1

i+=x与i=i+x

这里二者的性能就不多讨论了,我们只看特俗的情况:

>>> a = [1, 2, 3]

>>> b = a

>>> b += [1, 2, 3]

>>> a

[1, 2, 3, 1, 2, 3]

>>> b

[1, 2, 3, 1, 2, 3]

>>> a = [1, 2, 3]

>>> b = a

>>> b = b + [1, 2, 3]

>>> a

[1, 2, 3]

>>> b

[1, 2, 3, 1, 2, 3]

is与==

if x is y, then x==y is also True.

is compares for two objects in memory, == compares their values

“`cpp

a=1

b=1

a is b

True

a == b

True

再看这个你就明白了:

```cpp

>>> a=19998989890

>>> b=19998989889+1

>>> a is b

False

>>> a == b

True

那如果这样呢:

>>> a=1

>>> b=1+0

>>> a is b

True

>>> a == b

True

这是什么鬼,这时候怎么是a is b了呢?

这就是Python中的效率问题了。

>>> a='hi'

>>> b='hi'

>>> a is b

True

>>> a==b

True

>>> a1='I am using long string for testing'

>>> b1='I am using long string for testing'

>>> a1 is b1

False

>>> a1 == b1

True

这就是Python的string interning: 也就是说,值相同的字符串对象只会保存一份,是共用的,这也决定了字符串必须是不可变对象。想一想,就跟数值类型一样,相同的数值只要保存一份就行了,没必要用不同对象来区分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值