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 中的 else详解
Apr 23 Python
python操作列表的函数使用代码详解
Dec 28 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
分享PyCharm的几个使用技巧
Nov 10 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
python类共享变量操作
Sep 03 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 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
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
Python正则抓取网易新闻的方法示例
2017/04/21 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Python ATM功能实现代码实例
2020/03/19 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
实习单位接收函
2014/01/11 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
工程售后服务承诺书
2014/05/21 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
电影开国大典观后感
2015/06/04 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python