Python探索之旅 | 第一部分第四课:变量的奇幻世界

作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。
转载请注明出处。
原文:https://www.jianshu.com/p/d88e11bc7fec

《Python探索之旅》全系列

内容简介


  1. 前言
  2. 什么是变量及变量的作用
  3. Python 的数据类型
  4. 第一次使用函数
  5. 总结
  6. 第一部分第五课预告

1. 前言


在上一课 Python探索之旅 | 第一部分第三课:初识Python的解释器 中,尽管你可能没有注意到,但其实你已经输入了 Python 的第一条命令。

从现在开始,我们将逐渐深入学习 Python 的语法。这一课我们来学习一个重要的编程概念:变量

变量,在英语中是 variable,表示“变量,可变的,易变的”。

变量这个概念至关重要,一定要好好掌握。但我向你保证,这一课没有什么太复杂的内容,让我们开始愉快的学习之旅吧~

2. 什么是变量及变量的作用


变量是大多数(甚至是所有)编程语言中都有的概念之一。我们可以说,没有变量就不能编程,这并不夸张。就好像我们说“无胡歌不仙剑”一样:“无变量不编程”。

变量是什么?

变量简单来说就是你的程序中的数据,存储在计算机中的。变量是由字母、数字和其他符号组成的代码,你可以将其链接到程序中的数据,以便可以多次使用它并对其进行一些更有意思的操作。在程序中可以进行操作是很好的,但是如果不能将操作的结果存储在某个地方,那么很快就会显得有点无聊了。

我们可以将计算机的内存(memory)想像成一个有很多抽屉的大柜子。每个抽屉都可以包含数据,其中一些数据将是程序中的变量。

变量是如何工作的

这非常简单。你可以想象你对 Python 说:“我希望在我命名的 age (表示“年龄”)变量中存储我的年龄,这样我就可以记住我的年龄(如果我的记忆力不是那么好的话),对这个变量加一(每当我过生日那天),并且在必要时显示这个变量的值。”

目前你可能还看不到存储程序中的数据的意义。但是,如果你什么也不存储,那你也几乎什么都做不了。

在 Python 中,要给变量赋值,是非常简单的,只需要这样写:

variable_name = value

variable_name 是变量名,name 表示“名字”。value 是变量的值,value 表示“值”。变量名和变量的值之间用 = 号连接。

变量必须遵守一些基本的语法规则:

  1. 变量名只能由英文字母(大写或小写字母)、数字和下划线符号(_)组成。例如 my_age_2

  2. 变量名不能以数字开头。因此,2_my_age 不是合法的变量名。

  3. Python 区分大小写,这意味着 AGEaGeage 是不同的变量。

除了以上必须遵守的命名规则外,每个程序员也有一些个人的命名习惯。我自己比较倾向于两种变量命令的习惯:

  • 第一种命名习惯:变量名都是由小写字母构成,并用下划线 _ 连接单词。例如,如果我需要创建一个储存自己年龄的变量,则会将其命名为 my_age。my 表示“我的”。

  • 第二种命名习惯:变量名中每个单词的第一个字母大写,但第一个单词的第一个字母小写,例如 myAge

你可以使用任何你喜欢的命名习惯,但是尽量在你的程序中保持一致的命名习惯,特别是当你参与大型项目时。

因此,如果我创建存储我的年龄的变量,可以用以下语法:

my_age = 32

按下回车之后,Python 的解释器立即显示主提示符 >>>,没有任何消息。这意味着 Python 解释器正确理解了你的输入,并且没有发现任何错误。

上面的 my_age = 32 这一操作通常被称为“将值分配给变量”(或简称为“变量赋值”)。我们说,已经将 32 这个值分配给了变量 my_age

现在,你只需在 Python 解释器中输入该变量的名字,即可显示它的值:

变量名,= 符号,和变量的值之间的空格数目是可选的。我这里用了一个空格,出于可读性考虑。

好的,一切看起来都那么美好,但是我们可以用此变量来做什么操作呢?

你可以对此变量进行很多操作,包括上一课我们所做的数学运算,只不过这一次你是用变量名来代替整数值了。你甚至可以将此变量进行计算后的值再赋值给此变量自身。

例如,让我们尝试将 my_age 这个变量的值加 2,再赋值给它自己:

my_age = my_age + 2

现在,让我们尝试对 my_age 变量进行操作,并把操作后的值分配给另一个变量 my_age_x2

my_age_x2 = my_age * 2

变量赋值的概念并不复杂,但却非常强大。与某些编程语言相比,在 Python 中为变量赋值是非常简单的。如果你事先没有创建变量,Python 会自动为你打理一切。如果该变量已经存在,则将旧值删除并替换为新值。还有什么比这更简单的呢?

此外,有一些关键字(keyword)是 Python 预留的,也就是说,你不能使用这些关键字来命名变量。

以下是 Python 3 的关键字列表(一共有 33 个关键字,除前三个关键字,其余按英语字母表顺序排序):

FalseTrueNone
andasassertbreakclasscontinue
defdelelifelseexceptfinally
forfromglobalifimportin
islambdanonlocalnotorpass
raisereturntrywhilewithyield

这些关键字是被 Python 所保留的,因此你不能使用这些名称来为变量命名。

上表中,前三个关键字(False,True,None)的首字母是大写的,其余的关键字首字母都是小写。

请不要去死记硬背这些关键字,随着你用 Python 编程的深入,你自然而然会记住它们的。我们的课程也会用到这些关键字中的大部分。

3. Python 的数据类型


接下来,我们要学习在许多编程语言中都有的一个非常重要的概念。请认真对待,因为你必须熟悉这个概念,才能继续本课程的学习。放心,只要你专心,就不会有什么太复杂的概念。

什么是数据类型?

数据类型,在英语中是 data type。data 表示“数据”,type 表示“类型”。

到目前为止,我们在程序中只使用过数字。虽然我们很少会编写没有任何数字的程序,但是数字绝对不是我们可以在 Python 中使用的唯一数据。之后的课程中,我们甚至还会学习如何创建你自己的数据类型。

Python 需要知道使用的数据是什么类型的,以便知道对此数据可以执行哪些操作。

在本课中,你将学习如何使用字符串。对字符串做“乘法”,和对数字做乘法,是不一样的。对于某些类型的数据,乘法更是没有意义的。因此,Python 将每个数据与一个类型相关联,类型决定了对此数据可以进行哪些操作。

不同的数据类型

暂时,我们只会学习最常用和最容易处理的数据类型。以后会有专门的章节,用于讲解更复杂的数据类型。

整数

是的,Python 将整数与浮点数区分开。

为什么要区分开呢?

最初,主要是为了解决内存空间的问题。但对于计算机而言,对浮点数执行的操作与对整数执行的操作并不相同,因此这种区分仍然有意义。

整数类型在 Python 中是 int(int 是 integer 的缩写,表示“整数”)。整数,简单来说是没有小数点的数字。例如:

7

在上一课中,我们已经学习过对整数类型的数据可以执行哪些操作。因此,我们不再赘述。

浮点数

浮点数,简单来说是带小数点的数,例如 3.14。浮点数在 Python 中是 float(float 表示“浮动”)。如果一个数字没有浮点部分(小数点后面的部分),但是你希望 Python 将其视为浮点数,则可以向其添加浮点部分 0,例如 52.0

小数点后的数字位数不是无限的,因为在计算机科学中没有什么是无限的。但是精确度对于处理高精度的数据是非常重要的。

字符串

幸好,Python 中可用的数据类型不仅限于数字。我们在本课中学习的最后一个常用的“简单”类型是字符串。这种类型的数据可以存储一连串字符(character)。

字符串,在英语中是 string。string 的原意是“一串,一行,弦,线”。

在 Python 中,你可以使用不同的方式来书写字符串:

  • 用双引号作为定界符,例如 "this is a string"
  • 用单引号作为定界符,例如 'this is a string'
  • 用三个双引号作为定界符,例如 """this is a string"""
  • 用三个单引号作为定界符,例如 '''this is a string'''

我们可以像对待数字(和所有数据类型)一样,将字符串存储在变量中,例如 my_string = "Hello, everybody!"

如果使用简单的定界符(双引号或单引号)将字符串括起来,此字符串中又有双引号或单引号,则会出现问题。

例如,如果输入 string = 'I'm Iron Man!',则会收到错误信息:

这是因为 Python 认为 I'm 中的单引号是字符串的结尾,就不知道拿后面的字符怎么办了。

为了克服这个问题,我们必须在字符串的中间对单引号进行特殊处理。因此,我们在字符串中包含的单引号之前插入反斜杠字符 \

string = 'I\'m Iron Man!'

如果将双引号用作定界符,则必须转义双引号:

string = "\"A strong man will struggle with the storms of fate.\" (Thomas Addison)"

\(反斜杠)被称为“转义字符”,用于转义其他有用的符号。

例如,\n 是“换行符”,可以对字符串进行换行(例如,"I'm Oscar.\nWhat's your name?")。

可以看到,Python 解释器显示了换行符,不过,是以 \n 原样输出的。在下面的内容中,我们将看到如何实际显示这些字符串,以及解释器为什么没有按我们所期望地显示它们。

要在字符串中写一个反斜杠本身,你必须先对其进行转义,写成 \\

使用三引号 """ 作为字符串的定界符,可以省去转义双引号和单引号的步骤。而且,你不需要用 \n 作为换行符,也可以编写多行。

可以看到,>>> 提示符被 ... 提示符代替。这意味着 Python 解释器认为你尚未完成此命令的输入。直到新的 >>> 符号出现时,才宣告结束。换行符将在字符串中被自动替换为 \n

你可以使用三个单引号 ''' 来代替三个双引号 """。我个人不太使用 ''' 定界符,但是你得知道这种写法的存在,如果你以后在别人的 Python 代码中看到 ''',不必感到惊讶。

好的,我们已经完成了简单数据类型的介绍。

一点小技巧

在上一课中,我们学习了用于处理数字的“经典”运算符(+-*///%)。这些运算符不止能操作数字,我们之后也会看到它们还可以进行其他数据类型的操作。

在你以后的 Python 编程中,你经常会对变量进行“增加操作”。增加操作是指将变量的值加上一个数字。到目前为止,我们是用以下操作来将变量增加 1 的:

variable = variable + 1

这种语法很清晰直观,但是比较冗长。众所周知,程序员天生就是“懂得偷懒”的。因此,我们发明了更短的写法:

variable += 1

运算符 += 等效于将变量后面的值加到变量中。运算符 -=*=/=%=//= 的用法是一样的。你可以自行测试一下。

一些技巧

Python 提供了一种非常简单的方法来交换两个变量(交换它们的值)。在其他编程语言中,我们经常需要第三个变量的辅助,这第三个变量用于保存两个变量的值中的一个。但是,在 Python 中我们可以很简单地达到目的:

a = 7
b = 30
a,b = b,a

如你所见,在执行第 3 行之后,变量 a 和 b 已经交换了它们的值。

我们还可以非常简单地将相同的值分配给多个变量:

x = y = 7

而且,我们还可以将一行比较长的命令写在几行中,用 \(反斜杠)符号:

如你所见,符号 \(反斜杠)向 Python 表示“此命令在下一行继续”。这样,你就可以将命令分成几行。命令分几行写的时候,可以看到 >>> 这个主提示符就变为 ... 这个副提示符了。

4. 第一次使用函数


好的,一切进展顺利~

不过,我想在这有关变量的一课的最后,介绍一下函数的使用。虽然之后我们会有专门的一课来讲解函数,但是我接下来要向你展示的知识点,还是很有用的,也可以作为函数的入门。

使用函数

函数是什么?

函数,在英语中是 function,表示“函数,功能,运作”。

顾名思义,函数是有一定功能的,是会执行一些操作(运作)的。

函数执行一定数量的预先存储的命令。简单来说,函数就像存储了多个命令(例如,“起床,穿衣服,洗漱,吃早饭,上班”)以执行特定操作,并给它起个名字(例如,“早上做的事”)。然后,你就可以根据需要,多次调用此函数的名称即可(这避免了多次重复书写这些命令)。我们在函数那一课会更详细地介绍相关知识点。

大多数函数都需要至少一个参数(parameter)来处理数据。这些参数是你传递给函数的信息,以便函数可以处理这些信息。我要向你展示的函数也不例外。目前,这些知识点似乎有些难懂,但是请放心,我们会用示例来帮助理解。

函数的使用要遵循以下的语法:

fonction_name(parameter_1, parameter_2, …, parameter_n)
  • 首先,编写函数的名称(fonction_name)。

  • 然后,你可以将函数的参数放在括号 () 中,用逗号 , 隔开。如果函数不带任何参数,括号也是不可少的,只是括号之间不包含任何内容。

type 函数

在上一节中,我们学习了简单的数据类型(至少其中一些)。

Python 的强大功能之一是可以自动获知变量的(数据)类型,在变量被赋值时。

其他一些编程语言,例如 C语言,C++,Java,变量是需要预先声明类型的。例如在 C语言中,创建一个 int 型变量并赋值是像这样的:int a = 10; 。但是 Python 却不需要你声明变量 a 是 int 类型,它可以自己根据赋值的数据来推断。

因此,我们说 Python 是动态类型的语言,而 C语言、Java、C++ 是静态类型的语言。

我们可以用 type 函数来输出变量的类型。type 表示“类型”。

type 函数的语法很简单:

type(variable_name)

type 函数返回作为参数传递的变量的类型。例如:

a = 10
type(a)

Python 会告诉你,变量 a 属于 int 类。关于 class(表示“类”)的概念,我们会在第三部分详细讲解。暂时我们只要知道 class(类)其实就代表了一种数据类型。

当然了,你也可以不借助变量来进行测试:

str 是 string 的缩写。

print 函数

我们再来学习十分常用的函数:print 函数,这个函数可以显示变量的值。print 表示“打印”。

但是,我们之前在 Python 解释器中输入变量名,就可以显示变量的值了。为什么还需要 print 函数呢?

诚然,Python 解释器在交互模式下很好地显示了变量的值,是因为它会自动显示所有它可以显示的内容,以便跟随一个程序的所有步骤。但是,当你不使用解释器,仅在 Python 的代码中输入变量名,是无法为你输出变量的值的。此外,我们也注意到,解释器将字符串用定界符括起来并按原样显示转义字符(如 \n)。

print 函数专门用于显示,它的参数数量是可变的,也就是说,你可以要求它显示一个或多个变量。示例如下:

第一次调用 print 函数是很容易理解的,就是显示变量 a 的值,为 7。

第二次调用 print 显示:

a = 10 and b = 5

这第二次调用可能会有点难以理解。实际上,我们将四个参数传递给 print 函数:两个字符串以及变量 ab

当 Python 解释此函数调用时,它将按照参数的顺序显示,并以空格分隔。

你可以用其他数据类型来测试 print 函数,例如带有换行符 \n 的字符串。

可以看到,print 函数很好地解释了 \n 换行符,对字符串进行了换行输出。

Hello World 小示例

学习任何编程语言时,通常都会编写显示 Hello World! 的程序。

Hello World! 表示“你好,世界!”,是软件界的经典例程,因为这可以很快地展示一种编程语言的基本语法。

在某些语言中,尤其是编译语言(如 C语言,C++),可能需要好多行代码才能获得此结果。但是,正如我们看到的,在 Python 中,一行就足够了:

print("Hello World !")

Python 真是非常简洁。

5. 总结


  • 你可以用变量来存储程序中的数据。

  • 你可以对这些变量进行不同的操作:显示它们,使用它们进行计算,等等。

  • 要为变量赋值,我们使用这样的方式: variable_name = value

  • 有不同的变量类型,取决于你要储存的数据。int,float,str(字符串),等等。

  • 我们可以用 type 函数来获知数据类型。

  • 为了显示数据,例如变量的值,我们可以使用 print 函数。

6. 第一部分第五课预告


今天的课就到这里,一起加油吧!

下一课:Python探索之旅 | 第一部分第五课:条件表达式


我是 谢恩铭,公众号「程序员联盟」(微信号:coderhub)运营者,慕课网精英讲师 Oscar 老师,终生学习者。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值