Python变量使用中的细节讲解

开发 后端
Python变量需要大家不断的学习和不断的进行巩固。下面我们就来先学习下Python变量如何进行编写。希望对大家有所帮助。

Python变量在使用的时候需要大家详细的进行学习,因为在很多的地方需要使用到有关变量。如果你能理解这句话,说明对Python变量与数据类型已经有了不错的认识。

看看C#与Python在变量与数据类型方面的差异就可以。如果你还有疑惑,那么就请完整的读一下这一章吧。

Python变量声明和定义

与C#不同,Python在使用变量之前无须定义它的类型,试着运行下面的例子:

  1. i = 12 print i 

从上边我们可以看到,变量 i 在使用前并不需要定义,但是必须声明以及初始化该变量。试着运行下面的例子:

  1. i = 1 
  2. print i + j 

上面的代码会产生一个异常:“NameError: name 'j' is not defined”,Python提示变量 j 没有定义。这点和BASIC等弱类型的语言不一样。在BASIC中,执行上述代码的时候不会产生异常,你可以在EXCEL的VBA开发环境里试一下,把print改为MsgBox就可以,结果会输出 1 。这说明Python并不是一种类似BASIC的弱类型语言。

另一方面,Python与C#有一个很大的差异就是在程序运行过程中,同一变量名可以(在不同阶段)代表不同类型的数据,看看下边的例子:

  1. i = 1   
  2. print i,type(i),id(i)  
  3. i = 10000000000 
  4. print i,type(i),id(i)  
  5. i = 1.1  
  6. print i,type(i),id(i) 

变量 i 的类型在程序执行过程中分别经历了int、long和float的变化,这和静态类型语言(如C等)有很大不同。静态语言只要一个变量获得了一个数据类型,它就会一直是这个类型,变量名代表的是用来存放数据的内存位置。而Python中使用的变量名只是各种数据及对象的引用,用id()获取的才是存放数据的内存位置,我们输入的1、10000000000和1.1三个数据均会保存在id()所指示的这些内存位置中,直到垃圾回收车把它拉走(在系统确定你不再使用它的时候)。这是动态语言的典型特征,它确定一个变量的类型是在给它赋值的时候。

另一方面,Python又是强类型的,试着运行下边的例子:

  1. # -*- coding: utf-8 -*-  
  2. i = 10j = 'ss' 
  3. print i+j   
  4. #正确的写法是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的动态编程特征。#t#

Python变量的命名规则

Python与C#的变量(以及函数、类等其它标识符)的命名规则基本一样,同样对大小写敏感。不一样的地方是,Python中以下划线开始或者结束的标识符通常有特殊的意义。例如以一个下划线开始的标识符(如 _foo)不能用from module import *语句导入。前后均有两个下划线的标识符,如__init__,被特殊方法保留。前边有两个下划线的标识符,如__bar,被用来实现类私有属性,这个将在“类和面向对象编程”中再说。

最后,Python的关键字不能作为标识符(这个大家都知道),不过Python的关键字比C#要少得多,可以google一下,这里就不列出了。

 

责任编辑:张浩 来源: 互联网
相关推荐

2023-10-09 22:30:58

Python函数

2023-09-17 23:32:03

内置函数编程Python

2021-04-09 06:15:54

开源工具Python编程语言

2009-10-22 14:46:09

网络综合布线系统

2020-11-26 12:29:17

Namespace容器底层

2010-02-01 14:28:37

Python全局变量

2015-01-07 14:41:32

Android全局变量局部变量

2010-03-15 09:53:16

Python函数变量

2023-03-28 09:58:56

Python变量

2016-08-31 15:50:50

PythonThreadLocal变量

2017-02-08 12:28:37

Android变量总结

2010-03-15 10:24:20

Python函数变量

2022-03-01 23:31:29

Python编程语言变量

2010-08-06 14:39:38

2014-11-20 16:02:22

WatchKit

2010-03-15 10:49:57

Python函数变量

2013-05-15 09:31:52

产品产品体验产品细节

2009-06-30 10:59:38

fckeditorJSP

2021-04-12 16:18:24

CPUFetchLinuxCPU

2009-12-18 14:35:01

Ruby奇特变量
点赞
收藏

51CTO技术栈公众号