Python笔记7
来源:互联网 发布:windows账户有什么用 编辑:程序博客网 时间:2024/06/02 05:33
动态类型简介
1.变量、对象和引用
a = 3
变量创建
一个变量,就像a, 当代码第一次赋值时就创建了它。之后的赋值将会改变已创建的变量名的值。从技术上讲,Python的代码在运行之前先检测变量名,可以当成是最初的赋值创建变量。
变量类型
变量永远不会有任何的和它关联的类型信息或约束。类型的盖面存在于对象中而不是在变量名中。 变量原本是通用的,它只是在一个特定的时间点,简单的引用了一个特定的对象而已。
变量使用
当变量出现在表达式中时,它会马上被当前引用的对象所代替, 无论这个对象是什么类型。此外,所有的变量必须在其使用前明确的赋值, 使用未赋值的变量会产生错误。
比如a = 3, 从概念上说, Python会执行三个不同的步骤去完成这个请求:
1.创建一个对象来代表值3.
2.创建一个变量a, 如果他还没创建的话。
3.将变量a与对象3相连接。
在Python中 从变量到对象的连接称作引用, 也就是说, 这是一种关系, 以内存中的指针的形式实现。变量是一个系统表的元素, 拥有指向对象的连接空间,对象是分配的一块内存, 有足够的空间去表示他们所代表的值。引用是自动形成的从变量到对象的指针。
Python中每当一个变量名被赋予了一个新的对象, 之前的那个对象所占用的空间就会被回收(如果它没有被其他的变量名或对象所引用的话), 这种自动回收对象空间的技术叫做垃圾收集。在其内部Python是这样实现这一功能的: 它在每个对象中都保持了一个计数器, 计数器记录了当前指向该对象的引用数目, 一旦这个计数器被设置为0, 这个对象的空间就会自动回收。
共享引用
第一行创建变量a , 并将变量a和对象3连接, 第二行创建变量b, 同样的变量b也成为了对象3的一个引用。这样a 和 b都引用了相同的对象(也就是说指向了相同的内存空间)。
第三行对变量a重新进行了赋值, 创建了一个新的对象‘www’, 并设置a对这个新的对象进行引用。这样并不会改变b的值, b依然引用原始的对象3.
有一些对象和操作会在原处改变对象,如列表操作:
L1 和L2引用了相同的对象, 这里没有对L1进行重新赋值, 而是改变了L1所引用的对象, 因为这个列表对象是与其他对象共享(或被其他对象引用)的,那么这个改变不仅会对
L1产生影响。
如果不希望这种现象发生, 需要Python拷贝对象, 而不是创建引用。如:
对L1进行分片操作时会产生新的列表, 所以L2 为复制出的新的列表,L1和L2两个变量指向了不同的区域, 再对L1进行修改是, 不会影响L2.
同理可以使用 == 和 is 操作符来检测共享引用:
L1 和L2为同一个列表的引用, 两者指向同样的区域。
L2通过L1分片得来, 分片是创建的的列表, L2 和L1 虽然 是元素相同的列表, 但是存储在不同的区域。
- Python学习笔记(7)
- Python笔记(7)
- python笔记《7》
- python学习笔记 7
- python学习笔记(7)
- Python学习笔记7
- Python 学习笔记7
- python基础笔记-7
- Python笔记7
- python笔记7
- python 学习笔记 7 -- Python关键字总结
- python自学笔记(7)--Python类
- python 学习笔记7-----文件
- python学习笔记7 迭代器
- Python笔记
- python笔记
- python笔记
- python笔记
- XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship G glassese of solutions
- 金字塔原理学习总结
- Windows技巧:在当前操作目录下直接打开命令窗口
- 数据分析介绍之七——单变量数据观察之汇总统计和箱线图
- 使用Sass的Mixin实现自动添加浏览器前缀
- Python笔记7
- 排序算法之插入排序
- leetcode.array--40. Combination Sum II
- HDU1203 I NEED A OFFER!-概率dp
- vue 设置多个反向代理以及easy-mock的简单的使用方法
- POST和GET请求的区别
- XVII Open Cup named after E.V. Pankratiev. Grand Prix of SPb D cutting potatoes
- 未添加安全组规则设置导致通过公网IP地址不能访问ECS云服务器
- springboot使用hibernate的SessionFactory实现BaseDao