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同时给两个收件人发送邮件的方法
Apr 30 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
Tensorflow实现卷积神经网络的详细代码
May 24 Python
python中cPickle类使用方法详解
Aug 27 Python
代码详解django中数据库设置
Jan 28 Python
python爬取内容存入Excel实例
Feb 20 Python
Django之无名分组和有名分组的实现
Apr 16 Python
python中append实例用法总结
Jul 30 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 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下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
Django视图和URL配置详解
2018/01/31 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
浅析python 字典嵌套
2020/09/29 Python
python3 re返回形式总结
2020/11/20 Python
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
如何撰写岗位职责
2014/02/01 职场文书
信访工作汇报材料
2014/10/27 职场文书
网络销售员岗位职责
2015/04/11 职场文书
运动会运动员赞词
2015/07/22 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript