python动态性强类型用法实例


Posted in Python onMay 09, 2015

本文实例分析了python动态性强类型用法。分享给大家供大家参考。具体如下:

Python变量声明和定义

与C#不同,Python在使用变量之前无须定义它的类型,试着运行下面的例子:

i = 12 print i

从上边我们可以看到,变量 i 在使用前并不需要定义,但是必须声明以及初始化该变量。试着运行下面的例子:

i = 1
print i + j

上面的代码会产生一个异常:“NameError: name 'j' is not defined”,Python提示变量 j 没有定义。这点和BASIC等弱类型的语言不一样。在BASIC中,执行上述代码的时候不会产生异常,你可以在EXCEL的VBA开发环境里试一下,把 print改为MsgBox就可以,结果会输出 1 。这说明Python并不是一种类似BASIC的弱类型语言。

另一方面,Python与C#有一个很大的差异就是在程序运行过程中,同一变量名可以(在不同阶段)代表不同类型的数据,看看下边的例子:

i = 1
print i,type(i),id(i)
i = 10000000000
print i,type(i),id(i)
i = 1.1
print i,type(i),id(i)

变量 i 的类型在程序执行过程中分别经历了int、long和float的变化,这和静态类型语言(如C等)有很大不同。静态语言只要一个变量获得了一个数据类 型,它就会一直是这个类型,变量名代表的是用来存放数据的内存位置。而Python中使用的变量名只是各种数据及对象的引用,用id()获取的才是存放数 据的内存位置,我们输入的1、10000000000和1.1三个数据均会保存在id()所指示的这些内存位置中,直到垃圾回收车把它拉走(在系统确定你 不再使用它的时候)。这是动态语言的典型特征,它确定一个变量的类型是在给它赋值的时候。

另一方面,Python又是强类型的,试着运行下边的例子:

# -*- coding: utf-8 -*-
i = 10; j = 'ss'
print i+j
#正确的写法是print str(i)+j,输出10ss

会产生一个异常:“TypeError: unsupported operand type(s) for +: 'int' and 'str'”。在BASIC等弱类型的语言中,上边的例子会正常运行并返回(虽然有时候是不可预期的)结果。

所以,我们说Python既是一种动态类型语言,同时也是一种强类型的语言,这点是和C#不同的地方。对于Python的这种变量的声明、定义和使 用方式,C#程序员可能要花一段时间去适应,不过相信你会很快就喜欢上它,因为它让事情变得更加简单(而且不会不安全)。而且,C# 4.0 已经开始用类似的方式定义和使用变量(通过在变量名前加关键字dynamic),如果你先学了Python变量,将能够更快的适应C# 4.0的动态编程特征。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
用Python脚本来删除指定容量以上的文件的教程
May 04 Python
深入理解Python变量与常量
Jun 02 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
想学python 这5本书籍你必看!
Dec 11 Python
Python装饰器基础概念与用法详解
Dec 22 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
Django中的模型类设计及展示示例详解
May 29 Python
python的flask框架难学吗
Jul 31 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
浅谈python数据类型及其操作
May 25 Python
Python functools模块学习总结
May 09 #Python
Python浅拷贝与深拷贝用法实例
May 09 #Python
九步学会Python装饰器
May 09 #Python
Python类属性与实例属性用法分析
May 09 #Python
python回调函数用法实例分析
May 09 #Python
python类和函数中使用静态变量的方法
May 09 #Python
Python实用日期时间处理方法汇总
May 09 #Python
You might like
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
JS实现吸顶特效
2020/01/08 Javascript
python中self原理实例分析
2015/04/30 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
python生成密码字典的方法
2018/07/06 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
对python 合并 累加两个dict的实例详解
2019/01/21 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
python跨文件使用全局变量的实现
2020/11/17 Python
文秘专业应届生求职信范文
2013/11/14 职场文书
销售会计工作职责
2013/12/02 职场文书
期末评语大全
2014/05/04 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
党课心得体会范文
2014/09/09 职场文书
表扬通报怎么写
2015/01/16 职场文书
办公室管理规章制度
2015/08/04 职场文书
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技