购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 变量

在实际生活中,计算机可处理很多类型的信息,包括文本、数字、图片、声音、视频。在Python编程中,计算机接收用户的输入信息,主要是数字、文本等类型的信息,因为用户主要通过键盘、鼠标向计算机输入信息。计算机接收这些信息后会将这些信息保存在变量中。

2.1.1 理解变量

计算机将接收的信息存储在变量中,这个过程就是将信息存储在计算机的内存中的某个位置。整个过程就像快递员接收快递包裹,然后将快递包裹放置在货架上,计算机内存类似于一个巨大的货架。

Python语言通过赋值语句来创建变量,例如myName=3.1415926。这个简短的Python语句在计算机的执行过程类似于在计算机内存上创建了一个盒子,盒子装着数据3.1415926。盒子外面有两个标签,一个标签是变量的名字,简称变量名;另一个标签是该数据的类型,如图2—1所示。

图2—1 内存中的变量

2.1.2 定义变量

在Python中,为变量赋值可以通过等号(=)实现。语法格式:变量名=value。不同于C语言等编程语言,在Python中创建变量,不需要先声明变量类型和变量名,直接赋值就可以创建各种类型的变量。

在Python中,给变量取名字需要遵守以下几条规则:

(1)变量名由字母、数字和下画线组成。变量名不能以数字开头,可以由字母、下画线开头。例如,可以将变量命名为name_1,但不能将变量命名为1_name。字母区分大小写,例如name_1和Name_1是两个完全不同的变量。

(2)变量名不能包含空格,可以使用下画线来分隔其中的单词,例如my_name,也可以使用大写字母来区分单词,例如小驼峰的写法:myName。

(3)不要使用Python的关键字和内置函数名用作变量名,这些关键字、函数名是已经被Python保留并用于特殊用途的单词,例如print、input等。Python中的关键字和内置函数可参阅附录A中的表1、表2。读者可以试验一下,使用关键字作为变量名,看一看程序编译运行时,是不是一定会发生错误,以及在什么样的前提下,会发生编译错误。

(4)慎用小写字母l和大小字母O,因为这两个字母可以被编程者错看成数字1和0。

注意: 这些变量名就是编程者手下的“士兵”,作为一个“将军”,不仅要记住这些“士兵”的名字,而且要应用它们,所以给变量取名字时,尽量选择有意义的单词作为变量名,这些单词应既简短又有描述性,例如student_name、student_height、studentName、studentHeight等,其中后两个例子是小驼峰的写法,即第1个单词以小写字母开始,第2个单词的首字母大写。采用统一样式的命名方式,可以增加代码的可读性。

【实例2—1】 判断下面哪些变量名的名字有错误:my_home、my-home、my home、myHome、3account、_account、print、_print。

解析:变量名中不能有中画线,因此变量名my-home有错误;变量名中不能有空格,因此变量名my home是错误的;数字不能作为变量名的开头,因此变量名3account是错误的;print是Python的内置函数,如果使用print作为变量名,则与内置函数print()发生冲突,是错误的。其他的变量命名正确。如果辨别不清楚,在Python的命令交互窗口中实践一下就知道答案了,如图2—2所示。

图2—2 变量命名的类型错误和语法错误

注意: TypeError是指类型错误,变量名使用了内置函数名,然后调用这个内置函数,编译运行时会显示TypeError。SyntaxError是指语法错误,变量名违反了命名规则的第1条和第2条,编译运行时会显示SyntaxError。

2.1.3 判断变量的类型

在C语言中,创建变量时需要先声明变量类型和变量名,例如int number=10;,其中int表示整型数据。在Python语言中,不需要先声明变量类型和变量名,直接通过赋值语句即可创建变量,例如number=10。这里就有一个问题,Python语言如何确定变量的数据类型?

Python是一种动态类型的语言,变量的类型可以随时变化。例如赋值语句:变量名=value。如果value是数字,则该变量是数字类型的变量;如果value是字符串,则该变量是字符串类型。在Python语言中,使用内置函数type(),可以得到变量的数据类型。

【实例2—2】 使用Sublime Text编辑器,首先创建5个变量,这5个变量分别赋值正整数、负整数、正小数、负小数、字符串,然后判断这5个变量的数据类型,代码如下:

    #===第2章代码2-2.py===#
    wu_kong=10
    print(type(wu_kong))
    ba_jie=-9
    print(type(ba_jie))
    sha_seng=3.6
    print(type(sha_seng))
    tang_seng=-4.7
    print(type(tang_seng))
    bai_long_ma="我是白龙马,不要忽略我."
    print(type(bai_long_ma))

运行结果如图2—3所示。

图2—3 代码2—2.py的运行结果

在图2—3中,<class'int'>表示该变量是整型的数字类型;<class'float'>表示该变量是浮点型的数字类型;<class'str'>表示该变量是字符串类型。代码2—2.py说明,在Python中创建变量,变量的类型是由其变量值的类型决定的。

2.1.4 变量的地址

在Python中,可以创建多个变量,同时赋值相同的数据,即允许多个变量指向同一个值。如何判断多个变量指向了同一个值?Python提供了内置函数id(),使用这个函数可以获得变量的内存地址。

【实例2—3】 首先创建两个变量,同时赋值一个数字128,打印这两个变量的内存地址,然后将一个变量赋值256,另一个变量保持不变,再打印这两个变量和其内存地址,代码如下:

    #===第2章代码2-3.py===#
    num1=num2=128
    print(id(num1))
    print(id(num2))
    num1=256
    print(num1)
    print(id(num1))
    print(num2)
    print(id(num2))

运行结果如图2—4所示。

图2—4 代码2—3.py的运行结果

通过实例2—3的运行结果可以得知:虽然变量num1、num2指向同一个地址,但是只要变量num1被重新赋值,Python就会给它重新分配内存地址,这不会影响变量num2。这就是动态类型的编程语言,变量的内存和类型可以随时变化。

注意: 学过C语言等编程语言的读者会发现,Python语言没有专门讲述常量的创建。常量是指在程序运行过程中,其值不能改变的量,例如数学上的自然数、圆周率等。原因是Python没有提供创建常量的关键字。对于读者,可以采用PEP8规范创建常量,即常量名由大写字母和下画线组成。当然读者要明白,在Python语言中,这些常量本质上还是变量,可以被重新赋值。使用大写字母和下画线命名常量,是为了提高代码的可读性。 /RVL4QvoqXPy5cBtpl+nfSeBBcDcGjZFg0JCUfd7BptjKgA1hREBuAzrDu/slUSc

点击中间区域
呼出菜单
上一章
目录
下一章
×