动态类型简介

一.第一个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的值吗?
答:不会

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

时间: 2024-07-30 15:20:52

动态类型简介的相关文章

Python<9>动态类型简介

动态类型以及它提供的多态性,无疑是Python语言简洁性和灵活性的基础. 一.变量 <1>变量创建 一个变量a,当代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量名的值. <2>变量类型 变量永远不会有任何的和它关联的类型信息或约束.变量原本是通用的,它只是在一个特定的时间点,简单的引用了 一下特定的对象而已. <3>变量使用 当变量出现在表达式中,它会马上被当前引用的对象所替代(对象是有类型的).此外所有的变量必须在使用前明确的 赋值,使用未赋值的变量会

《Python 学习手册4th》 第六章 动态类型简介

''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书)“重点笔记”“本章习题” - 标题1,二级标题用- 标题2,笔记大纲标题.习题题目- 加粗,16px ''' 重点笔记 : 摘要 动态类型是Python语言灵活性的根源(尤其是其提供的多态性) 一. 缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明. 二. 变量.对

Python动态类型简介

在C语言中使用变量, 需先声明其类型, 如int a = 3, 而Python中直接 a = 3就行, Python怎么知道那代表了一个整数呢? 在Python中类型是在运行过程中决定的, 而不是事先声明的. 像上面Python中运行赋值语句 a = 3, 代码中没有说明a是整数对象类型, 但一样也能工作, 可按如下思路来理解该原由. 变量创建: 一个变量, 就像a, 当代码第一次给它赋值时就创建了它, 之后的赋值将会改变已创建的变量名的值. 变量类型: 变量永远不会有任何的和它关联的类型信息或

Python学习笔记整理(三)Python中的动态类型简介

Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之间的关系都适用.那么这个概念也容易理解并掌握. 1.变量,对象和引用 变量创建:一个变量,当代码第一次给它赋值时它就被创建了.之后的赋值将会改变已创建的变量名的值.Python在代码运行之前先检测变量名,可以当成是最初的赋值创建变量. 变量类型:变量永远不会有任何的它关联的类型信息或约束.类型的概念

第六章 动态类型简介

#1. #A:在python中,类型属于对象而非变量名,每一个对象有两个标准头部信息:一个类型标示符,一个引用的计数器(python中的垃圾收集主要基于引用计数器) #B:在python中,每当一个变量名被赋予一个新对象时,之前那个对象若没有被别的变量名或对象引用的话,那么其占用内存就会被释放,这种计数被称为垃圾收集 #C:在python中,变量总是一个指向对象的指针,而不是可改变的内存区域的标签,给变量赋一个新的值,并不是替换了原始的对象,而是让这个变量去引用了另一个完全不同的对象 #2.sy

静中有动-动态类型

在C#4.0中,最核心的特性莫过于动态类型的引入. 1.动态类型简介 一直在强调C#是一门静态类型的语言,因为它在定义变量时要明确给出变量的类型.例如在int i=5;这样的代码中,int就是变量i的类型,如果定义变量时没有明确指定变量的类型,则这样的代码是通过不了编译的. 在C#4.0中,微软引入了dynamic关键字来定义动态类型.当我们使用由dynamic关键字限制的变量时,编译器并不知道它的类型,该类型只能在程序运行的时候才能被确定.动态类型的定义如下面的代码所示: dynamic i=

【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

[嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 ) 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) DRAM 简介 : 1.硬件描述 : DRAM 基本由一个个小电容基本原件组成, 电容的两端保留电荷; 2.优缺点描述 : ① 优点 : 成本很低, 很便宜; ② 缺点 : 需要 定期刷新数据, 速度较慢; a.

Python的动态类型

动态类型:                                                      在python中,类型是在运行过程中自动决定的,而不是通过代码声明的. 变量:                                                                                     变量是一个系统表的元素,拥有指向对象的连接的空间 python中,类型的概念是存在于对象中的,而不是变量中,变量是通用的. 变量的使用

OC多态,动态类型绑定

// //  main.m //  OC7类 // //  Created by Zoujie on 15/8/23. //  Copyright (c) 2015年 Zoujie. All rights reserved. // #import <Foundation/Foundation.h> #import "Fraction.h"//导入头文件 #import "Complex.h" #define Choose  0 int main(int