预知小知识:

Python中的变量与其他语言稍有差异,如a = 10并不是直接在内存中创建一个变量a其值为10,而是在内存中创建一个a这个a指向这个10,在Python中所有牵扯到等号的均不是值赋值,全都是引用(C的小伙伴可以大致理解为处处是指针)。

示例代码:

>>> a = 10
>>> b = 10
>>> id(a)
1686269232
>>> id(b)
1686269232

以上可以看到变量只要赋值一致,他们在本机中的内存地址都一样。

+=示例代码:

# coding:utf-8
num = [88] def demo(nums):
nums += nums # 将nums指向的这个地址中的[88]和[88]进行合并
print(nums) # 两个列表合并将会得到[88, 88] demo(num)
print(num) # 因为是引用类型num所指向的值已发生改变这里也会得到[88, 88] pycharm中执行结果:
[88, 88]
[88, 88]
# coding:utf-8
num = [88] def demo(nums):
nums = nums + nums # 将nums所指向的[88]和[88]合并让demo中的零时变量nums重新指向[88, 88]
print(nums) # 这里会输出新的指向结果[88, 88] demo(num)
print(num) # demo中的nums为零时指向所以不会影响num的值 pycharm中执行结果:
[88, 88]
[88]

总结:

虽然我们常使用xxx+=xxx或xxx=xxx+xxx得到的结果基本是一致的,但是底层执行还是有一些差异的,所以xxx+=xxx不完全等价于xxx=xxx+xxx。

小知识:

python的值类型和引用类型

值类型:

包含:字符串、元组、数值,本身不允许被修改

引用类型:

包含:列表、字典,本身允许修改(不能作用于字典的key,因为会进行一个hash过程可变参数类型是不行的)

最新文章

  1. 使用Masstransit开发基于消息传递的分布式应用
  2. Sort the Array
  3. 黄聪:get_posts 函数 | wordpress
  4. 将PL/SQL代码封装在机灵的包中
  5. java synchronized使用
  6. 【ASP.NET Web API教程】5.1 HTTP消息处理器
  7. Unable to start activity异常的解决方案
  8. ESP8266使用详解--基于Lua脚本语言
  9. Selenium的简单安装和使用
  10. 转:【Java并发编程】之二十二:并发新特性—障碍器CyclicBarrier(含代码)
  11. spring boot https --restful接口篇
  12. [UOJ UR #4追击圣诞老人]
  13. CMD远程连接服务器上的MySQL
  14. SP283 NAPTIME - Naptime
  15. 牛客网 223C 区区区间间间(单调栈)
  16. MVC,MVP和MVVM三种开发模式
  17. [JS] ECMAScript 6 - Variable : compare with c#
  18. js基础学习笔记(一)
  19. 解决Win10无法安装.Net Framework 3.5,错误代码0x800F081F
  20. scss 覆盖 原有变量

热门文章

  1. MGR架构 ~ 节点的维护相关问题
  2. Tomcat/7.0.81 远程代码执行漏洞复现
  3. linux 压缩解压缩命令
  4. Django 基于类的通用视图
  5. scrapy基础 之 xpath网页结构
  6. springboot整合dubbo\zookeeper做注册中心
  7. swap扩展
  8. 1.Spring Boot入门及其jar包依赖模型分析
  9. Vue.js 子组件的异步加载及其生命周期控制
  10. 迁移学习(Transfer Learning)