码迷,mamicode.com
首页 > 其他好文 > 详细

动态类型简介

时间:2018-08-18 22:29:06      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:python程序   答案   赋值   开始   中标   基础   span   种类   学习   

一.第一个Python程序
print(’Hello World’)

二. 动态类型简介
在学习Python之时,掌握Python编程中最基本的概念是很重要的。动态类型以及由他提供的多态性,是Python语言简洁和灵活的基础。

1. 缺少类型声明语句
在Python中,我们使用变量时,没有声明变量的存在和类型(如 int a= 1),但是变量还是在工作,为啥子?其实在Python中,类型是在程序的运行过程中自动决定的,而不是通过代码的声明来决定的。
Ps:这个概念对变量、对象和他们之间的关系都适用。

2. 变量、对象和引用
1)变量实例:name=’test’
2)在Python中,变量是在赋值的时候才创建的,它可以引用任何类型的对象(对象才有类型)。并且是在引用之前就必须进行赋值,这意味着变量进行赋值后才可进行更改。
3)在Python中变量和对象保存在内存中的不同部分,而从变量到对象的连接称之为引用,意思是引用是一种关系(以指针的形式实现)。一旦变量被使用,也就是引用,Python会自动跟随这个变量到相应对象的连接。

3. 类型属于对象,不属于变量
a = 4
a = ‘testdemo’
print(a)

a.在上述代码中,看起来a从开始的整数变成了一个字符串。然而事实是上面提过的:变量名是没有类型的,对象才有。所以a的类型没有变,只是让它引用了不同类型的对象而已。
b.对对象来说,对象会知道自己的类型。每个对象都会有一个头部信息,其中标记了这个对象的类型,而一个给定的变量往往只会引用一种类型的对象,但不是必须的。
c.对象有两个头部信息:类型标志符、引用计数器。

4. 对象的垃圾回收机制
在3中,把对象赋给了不同类型的对象,那么它前一个引用的值发生了什么呢?
答案是每当一个变量名引用一个新的对象是,之前的那个对象占用的空间就会被回收,这种自动回收对象空间的技术叫垃圾收集。Python中的每个对象都有一个计数器,记录了当前指向该对象引用的数目,一旦计数器为0,这个对象的内存空间就会被回收。
垃圾回收的好处最直接的就是可以任意使用对象而不用考虑内存空间,省去大量代码。

5. 共享引用
共享引用的意思是多个对象引用了相同的对象。比如如下代码
a = 3
b = a
a = a + 2 or a = ‘ssss’
解释:Python让变量a引用了对象3,让b引用于a相同的对象,然后将通过赋值或者其他操作将a设置成为一个完全不同的对象。但是这并不会产生b发生改变的作用。事实上整数不可变,只是会产生新的对象。

6. 共享引用和原处修改
在Python中,有一些对象以及操作确实会在原地改变对象。比如一个列表中进行赋值操作,就会改变这个列表对象,而不是生产一个新的对象。例如如下代码
L1 = [1,2,3,4]
L2 = L1
L1[0] = 7
print(L1,L2)
s输出结果:[7, 2, 3, 4] [7, 2, 3, 4]

7. 变量定义的规则
1. 变量名只能是字母、数字和下划线的组合
2. 变量名的第一个字符不能是数字。

8. 习题
a=’span’
b=a
b=’shu’
print(a,b)
上述代码中,会改变a打印出来的值吗?
答:不会。


a = [‘span’]
b=a
b[0]=’ss’
print(a,b)
上述代码中,会改变a的值吗?
答:会。


a = [‘span’]
B=a[:]
B[0]=’kk’
Print(a,b)
上述代码中,会改变a的值吗?
答:不会

动态类型简介

标签:python程序   答案   赋值   开始   中标   基础   span   种类   学习   

原文地址:https://www.cnblogs.com/wl443587/p/9498789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!