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代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python中int()函数的用法浅析
Oct 17 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
django框架ModelForm组件用法详解
Dec 11 Python
tensorflow安装成功import tensorflow 出现问题
Apr 16 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
Python高并发解决方案实现过程详解
Jul 31 Python
Python unittest如何生成HTMLTestRunner模块
Sep 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
python之import机制详解
2014/07/03 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
韩国11街:11STREET
2018/03/27 全球购物
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
幼儿园元旦活动感言
2014/03/02 职场文书
2014年优秀党员材料
2014/12/18 职场文书
合理化建议书
2015/02/04 职场文书
党员自我评价范文2015
2015/03/03 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
《雷雨》教学反思
2016/02/20 职场文书
《包身工》教学反思
2016/02/23 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis