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的Bottle框架中使用微信API的示例
Apr 23 Python
进一步探究Python中的正则表达式
Apr 28 Python
为Python程序添加图形化界面的教程
Apr 29 Python
浅析Python编写函数装饰器
Mar 18 Python
20招让你的Python飞起来!
Sep 27 Python
CentOS6.5设置Django开发环境
Oct 13 Python
Python中matplotlib中文乱码解决办法
May 12 Python
详解python单元测试框架unittest
Jul 02 Python
python实现随机梯度下降法
Mar 24 Python
python实现QQ批量登录功能
Jun 19 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
PHP通过串口实现发送短信
2015/07/08 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python使用sorted排序的方法小结
2017/07/28 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
即将毕业大学生自荐信
2014/01/24 职场文书
安全生产投入制度
2014/01/29 职场文书
大学运动会入场词
2014/02/22 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
中国好声音广告词
2014/03/18 职场文书
记账会计岗位职责
2014/06/16 职场文书
工作作风承诺书
2014/08/30 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
公司放假通知怎么写
2015/04/15 职场文书
清洁工工作总结
2015/08/11 职场文书
创业计划书详解
2019/07/19 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL
MySQL中日期型单行函数代码详解
2021/06/21 MySQL