设为首页 收藏本站
查看: 938|回复: 0

[经验分享] python这+=和=的拓展知识

[复制链接]

尚未签到

发表于 2018-8-12 06:35:45 | 显示全部楼层 |阅读模式
  关于网上的说法有两点我想说一下
  第一点
  网上一直说num = num + num 和 num += num是等价的,在这里我要说一下,这两个只有在num是数值的时候才是等价的,如果不是数值的话,num = num + num是把num 加上num的值赋予给num,这个是要新开辟一个空间给num的,而num+=num是修改num原来的值为num + num的结果。可能你会有点愣,没事,下面我们看看例子
a = [100]  
def zhouyu(num):
  
    num = num + num
  
    print(num)
  
zhouyu(a)
  
print(a)
  通过上面的理解,我们知道num = num + num其实就是把[100]加上[100]的结果赋予给了num,这个时候,num就会重新去指向这个结果,也就说如果原来num的值是[100],那么现在num的值就是[100,100],而a还是[100]。
  下面说另一种
a = [100]  
def zhouyu(num):
  
    num += num
  
    print(num)
  
zhouyu(a)
  
print(a)
  因为num +=num 其实就是修改num本身的值,所以修改了num的值,a的值也会被改变。
  第二点。
  用下面两段代码的结果进行比较
a = 100  
def zhouyu(num):
  
    num +=num
  
    print(num)
  
zhouyu(a)
  
print(a)
  为什么执行的结果是
  200
  100
  因为a是整数型的,除了列表和字典以外基本都是不可变的,zhouyu(a)传入的是一个a,所以num就会指向a,因为a=100是整数型的,是不可变的,所以这里就会自己去新创一个a,a=100+100所以a就是200,打印出来的就是200,而外面的a是那个a所以,就还是100。如果不怎么理解请看下面的。
a = [100]  
def zhouyu(num):
  
    num +=num
  
    print(num)
  
zhouyu(a)
  
print(a)
  为什么执行的结果是下面的结果呢
  [100,100]
  [100,100]
  因为zhouyu(a)传入的是一个a,所以num就会指向a,这里的a就是列表型,是可以改变的。所以就会把上面的a改变了,这下打印出来的就都改变了。也就是说传入参数的时候会去看a是不是可变的,如果是可变的就会把外面的值改变了,如果不可变,就自己新创一个a,这时候这个a的值和函数外面的值就不一样啦

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550311-1-1.html 上篇帖子: python语言的自学之路2 下篇帖子: python元组知识点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表