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中expandtabs()方法的使用
May 18 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
python实现随机漫步算法
Aug 27 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
numpy.random模块用法总结
May 27 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
Python集合操作方法详解
Feb 09 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
python boto和boto3操作bucket的示例
Oct 30 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 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获取表单textarea数据中的换行问题
2010/09/10 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
javascript运动详解
2015/07/06 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
python正则表达式之对号入座篇
2018/07/24 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python标识符命名规范原理解析
2020/01/10 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
特步官方商城:Xtep
2017/03/21 全球购物
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
智能旅行箱:Horizn Studios
2018/04/30 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
优秀毕业生推荐信
2013/11/02 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
市场部管理制度
2014/02/02 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
物流业务员岗位职责
2015/04/03 职场文书
小学生教师节广播稿
2015/08/19 职场文书
合作协议书格式范本
2016/03/21 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书