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 Tkinter GUI编程入门介绍
Mar 10 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
Feb 26 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
python中class的定义及使用教程
Sep 18 Python
Python 词典(Dict) 加载与保存示例
Dec 06 Python
python zip,lambda,map函数代码实例
Apr 04 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 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 分页函数multi() discuz
2009/06/21 PHP
php 使用post,get的一种简洁方式
2010/04/25 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
Js面试算法详解
2018/04/08 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
用Python写王者荣耀刷金币脚本
2017/12/21 Python
一份python入门应该看的学习资料
2018/04/11 Python
Django model class Meta原理解析
2020/11/14 Python
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
Java程序员常见面试题
2015/07/16 面试题
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
交通专业个人自荐信格式
2013/09/23 职场文书
护理专业毕业生推荐信
2013/10/31 职场文书
商务考察邀请函范文
2014/01/21 职场文书
个人对照检查材料
2014/02/12 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
开工仪式策划方案
2014/05/23 职场文书
杜甫草堂导游词
2015/02/03 职场文书
2015年度保密工作总结
2015/04/24 职场文书