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实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python获取list下标及其值的简单方法
Sep 12 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
python xpath获取页面注释的方法
Jan 14 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
Python中的引用和拷贝实例解析
Nov 14 Python
python各种excel写入方式的速度对比
Nov 10 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
Python必备技巧之字符数据操作详解
Mar 23 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 file_get_contents函数轻松采集html数据
2010/04/22 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
python实现月食效果实例代码
2019/06/18 Python
详解python中的模块及包导入
2019/08/30 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
飞利浦美国官网:Philips美国
2020/02/28 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
心得体会开头
2014/01/01 职场文书
环卫工人节活动总结
2014/08/29 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2015年创先争优活动总结
2015/03/27 职场文书