python强类型_python动态性强类型用法实例
本文实例分析了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动态性强类型用法实例相关推荐
- python守护线程_Python守护线程用法实例
本文实例讲述了Python守护线程用法.分享给大家供大家参考,具体如下: 如果你设置一个线程为守护线程,就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出.如果你的主线程在退出的时 ...
- python asyncio回调函数_python回调函数用法实例分析
python回调函数用法实例分析 本文实例讲述了python回调函数用法.分享给大家供大家参考.具体分析如下: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步 ...
- python的scatter函数_python scatter函数用法实例详解
这篇文章主要介绍了python scatter函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数功能:寻找变量之间的关系. 调用签 ...
- Python单元测试及unittest框架用法实例解析
例题取用登录模块:代码如下 def login_check(username,password):''' 登录校验的函数:param username:账号:param password: 密码:re ...
- python sched_python定时任务 sched模块用法实例
这篇文章主要介绍了python定时任务 sched模块用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过sched模块可以实现通过自定义时 ...
- python回调函数实例详解_Python回调函数用法实例详解
本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...
- python局部变量函数_python函数局部变量用法实例分析
本文实例讲述了python函数局部变量用法.分享给大家供大家参考.具体分析如下: 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这 ...
- [转载] python 运算符重载有什么用_Python运算符重载用法实例分析
参考链接: Python运算符重载 本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调 ...
- python accessiblechildren用法_python类继承用法实例分析
本文实例讲述了python类继承用法.分享给大家供大家参考.具体如下: help('object') # test class Class1(object): """ C ...
最新文章
- SQL SERVER逆向工程将数据库导入PowerDesigner
- JPA通用Dao类设计
- 函数式编程 -- 函子(Functor)
- Vrep脚本的执行顺序
- 2021年中国独立眼科超声系统市场趋势报告、技术动态创新及2027年市场预测
- Hibernate使用的一些细节注意事项
- java extjs combobox_Extjs 教程三 “combobox”
- 解决啦啦外卖小程序无法生成海报推广码
- WordPress多功能主题 The7 更新至 v10.4.3 – 已激活汉化版
- 我用计算机的故事,计算机老师的我的教育故事随笔
- Loadrunner执行https报错Action.c(7): Error -27778: SSL protocol error when attempting to connect with hos
- 计算机磁盘清理软件,Cleanmgr+(电脑磁盘清理软件)
- 在线预览文档 Office Online
- arcgis建立拓扑验证拓扑
- Spark学习痛点和路线图
- 文本分类模型(一)——RCNN
- 内网安全之:域与域权限判断
- 移动应用开发之路 04 Android Studio 5种控件介绍、实战详解
- EBS中导入xdf出现错误Error during upload of Fnd_Columns
- 火绒能更新服务器系统么,火绒自动升级频率是怎么样的?