Python学习笔记(三)——动态类型

本文深入探讨了Python的动态类型特性,解释了变量赋值过程、类型归属对象而非变量的原则,并展示了对象共享引用及其影响。此外,还介绍了如何避免共享引用带来的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态类型:
Python的类型是在运行过程中中自动决定的,而不是通过类型声明语句的代码声明,与Java等语言有所区别。

Python类型原理:

>>> a=15
>>>
>>> a
15
>>>

Python赋值的操作:

  1. 创建一个对象来代表3;
  2. 创建一个变量a,如果它还没有创建;
  3. 将变量与新的对象3相连接。

变量创建:
一个变量名a,代码第一次赋值它时创建了它。在之后的赋值会改变已创建的变量名赋值。

变量类型:
变量永远不会有任何的和它关联的类型信息或约束。Python类型的概念只存在与对象中而不是变量名中。

变量使用:
当变量出现在表达式中,会马上被当前赋值替代,无论这个对象是什么类型。所有的变量必须在其使用前明确赋值,使用未赋值的变量会产生错误。

>>> a
15
>>>
>>> a=14
>>>
>>> b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>>

注意:
类型属于对象,而不是变量。变量名没有类型。

对象垃圾收集:
在Python中,每当一个变量名被赋予一个新的对象,之前的那个对象占用的空间就会被回收(如果它没有被其他的变量名或对象所引用的话)。这种自动回收对象空间的技术叫做垃圾收集。

共享引用:
多个变量名引用相同的对象。

>>> a=11
>>> b=a
>>>
>>> a,b
(11, 11)
>>>

共享引用和在原处修改:
在原处修改对象,共享引用时,会影响其他的变量。

>>> x=[1,2,3]
>>> y=x
>>>
>>> x[0]='a'
>>>
>>> x,y
(['a', 2, 3], ['a', 2, 3])
>>>

避免共享引用修改变量的方式:
1.适用于序列的内置变量,(字典和集合不行。)

>>> x=[1,2,3]
>>> y=x[:]
>>>
>>> x[0]='ye'
>>> x,y
(['ye', 2, 3], [1, 2, 3])
>>>

2.使用copy方法(适用于各种内置类型):

>>> import copy
>>>
>>> x=[1,2,3]
>>> y=copy.copy(x)
>>> y=copy.deepcopy(x)
>>>
>>> x,y
([1, 2, 3], [1, 2, 3])
>>>
>>> x[0]='51cto'
>>>
>>> x,y
(['51cto', 2, 3], [1, 2, 3])
>>>

转载于:https://blog.51cto.com/11433338/2370881

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值