python动态性强类型用法实例

作者:守株待兔 时间:2022-08-04 23:32:51 

本文实例分析了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,动态,强类型
0
投稿

猜你喜欢

  • 新Orcas语言特性:扩展方法

    2007-09-23 12:49:00
  • 关于reduce的介绍及用法说明

    2024-04-18 10:49:34
  • python基础之匿名函数详解

    2021-08-23 12:15:18
  • Win10用vscode打开anaconda环境中的python出错问题的解决

    2023-04-21 09:21:21
  • 详解mysql的limit经典用法及优化实例

    2024-01-15 19:45:25
  • MySQL性能全面优化方法参考,从CPU,文件系统选择到mysql.cnf参数优化

    2024-01-22 16:37:20
  • 详解Python中的相对导入和绝对导入

    2023-02-05 01:10:36
  • Python Pandas的concat合并

    2023-06-08 05:05:38
  • 详解python项目实战:模拟登陆CSDN

    2023-02-09 01:53:34
  • JS图形技术的终极体现

    2008-04-30 19:43:00
  • python实现kNN算法识别手写体数字的示例代码

    2021-07-14 12:35:03
  • golang中for循环遍历channel时需要注意的问题详解

    2024-04-29 13:05:16
  • Vue如何引入远程JS文件

    2023-07-02 16:34:13
  • 使用PYTHON解析Wireshark的PCAP文件方法

    2022-12-26 06:04:00
  • Python实现模拟分割大文件及多线程处理的方法

    2021-08-26 10:55:12
  • 基于php socket(fsockopen)的应用实例分析

    2023-11-18 21:38:32
  • Python绘制股票移动均线的实例

    2023-07-15 10:31:06
  • PHP脚本内存泄露导致Apache频繁宕机解决方法

    2023-11-15 12:52:39
  • SQL Server中TRUNCATE事务回滚操作方法

    2024-01-20 14:43:23
  • 计算机科学中32个常用的基础算法

    2023-01-25 16:50:19
  • asp之家 网络编程 m.aspxhome.com