做者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文:www.jianshu.com/p/d88e11bc7…程序员
《Python探索之旅》全系列编程
在上一课 Python探索之旅 | 第一部分第三课:初识Python的解释器 中,尽管你可能没有注意到,但其实你已经输入了 Python 的第一条命令。bash
从如今开始,咱们将逐渐深刻学习 Python 的语法。这一课咱们来学习一个重要的编程概念:变量。微信
变量,在英语中是 variable,表示“变量,可变的,易变的”。编程语言
变量这个概念相当重要,必定要好好掌握。但我向你保证,这一课没有什么太复杂的内容,让咱们开始愉快的学习之旅吧~函数
变量是大多数(甚至是全部)编程语言中都有的概念之一。咱们能够说,没有变量就不能编程,这并不夸张。就好像咱们说“无胡歌不仙剑”同样:“无变量不编程”。学习
变量简单来讲就是你的程序中的数据,存储在计算机中的。变量是由字母、数字和其余符号组成的代码,你能够将其连接到程序中的数据,以即可以屡次使用它并对其进行一些更有意思的操做。在程序中能够进行操做是很好的,可是若是不能将操做的结果存储在某个地方,那么很快就会显得有点无聊了。测试
咱们能够将计算机的内存(memory)想像成一个有不少抽屉的大柜子。每一个抽屉均可以包含数据,其中一些数据将是程序中的变量。ui
这很是简单。你能够想象你对 Python 说:“我但愿在我命名的 age
(表示“年龄”)变量中存储个人年龄,这样我就能够记住个人年龄(若是个人记忆力不是那么好的话),对这个变量加一(每当我过生日那天),而且在必要时显示这个变量的值。”this
目前你可能还看不到存储程序中的数据的意义。可是,若是你什么也不存储,那你也几乎什么都作不了。
在 Python 中,要给变量赋值,是很是简单的,只须要这样写:
variable_name = value
复制代码
variable_name
是变量名,name 表示“名字”。value
是变量的值,value 表示“值”。变量名和变量的值之间用 =
号链接。
变量必须遵照一些基本的语法规则:
变量名只能由英文字母(大写或小写字母)、数字和下划线符号(_
)组成。例如 my_age_2
。
变量名不能以数字开头。所以,2_my_age
不是合法的变量名。
Python 区分大小写,这意味着 AGE
,aGe
和 age
是不一样的变量。
除了以上必须遵照的命名规则外,每一个程序员也有一些我的的命名习惯。我本身比较倾向于两种变量命令的习惯:
第一种命名习惯:变量名都是由小写字母构成,并用下划线 _
链接单词。例如,若是我须要建立一个储存本身年龄的变量,则会将其命名为 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 个关键字,除前三个关键字,其他按英语字母表顺序排序):
False | True | None | |||
---|---|---|---|---|---|
and | as | assert | break | class | continue |
def | del | elif | else | except | finally |
for | from | global | if | import | in |
is | lambda | nonlocal | not | or | pass |
raise | return | try | while | with | yield |
这些关键字是被 Python 所保留的,所以你不能使用这些名称来为变量命名。
上表中,前三个关键字(False,True,None)的首字母是大写的,其他的关键字首字母都是小写。
请不要去死记硬背这些关键字,随着你用 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 表示“此命令在下一行继续”。这样,你就能够将命令分红几行。命令分几行写的时候,能够看到 >>>
这个主提示符就变为 ...
这个副提示符了。
好的,一切进展顺利~
不过,我想在这有关变量的一课的最后,介绍一下函数的使用。虽然以后咱们会有专门的一课来说解函数,可是我接下来要向你展现的知识点,仍是颇有用的,也能够做为函数的入门。
函数是什么?
函数,在英语中是 function,表示“函数,功能,运做”。
顾名思义,函数是有必定功能的,是会执行一些操做(运做)的。
函数执行必定数量的预先存储的命令。简单来讲,函数就像存储了多个命令(例如,“起床,穿衣服,洗漱,吃早饭,上班”)以执行特定操做,并给它起个名字(例如,“早上作的事”)。而后,你就能够根据须要,屡次调用此函数的名称便可(这避免了屡次重复书写这些命令)。咱们在函数那一课会更详细地介绍相关知识点。
大多数函数都须要至少一个参数(parameter)来处理数据。这些参数是你传递给函数的信息,以便函数能够处理这些信息。我要向你展现的函数也不例外。目前,这些知识点彷佛有些难懂,可是请放心,咱们会用示例来帮助理解。
函数的使用要遵循如下的语法:
fonction_name(parameter_1, parameter_2, …, parameter_n)
复制代码
首先,编写函数的名称(fonction_name
)。
而后,你能够将函数的参数放在括号 ()
中,用逗号 ,
隔开。若是函数不带任何参数,括号也是不可少的,只是括号之间不包含任何内容。
在上一节中,咱们学习了简单的数据类型(至少其中一些)。
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 表示“打印”。
可是,咱们以前在 Python 解释器中输入变量名,就能够显示变量的值了。为何还须要 print
函数呢?
诚然,Python 解释器在交互模式下很好地显示了变量的值,是由于它会自动显示全部它能够显示的内容,以便跟随一个程序的全部步骤。可是,当你不使用解释器,仅在 Python 的代码中输入变量名,是没法为你输出变量的值的。此外,咱们也注意到,解释器将字符串用定界符括起来并按原样显示转义字符(如 \n
)。
print
函数专门用于显示,它的参数数量是可变的,也就是说,你能够要求它显示一个或多个变量。示例以下:
第一次调用 print
函数是很容易理解的,就是显示变量 a
的值,为 7。
第二次调用 print 显示:
a = 10 and b = 5
复制代码
这第二次调用可能会有点难以理解。实际上,咱们将四个参数传递给 print
函数:两个字符串以及变量 a
和 b
。
当 Python 解释此函数调用时,它将按照参数的顺序显示,并以空格分隔。
你能够用其余数据类型来测试 print
函数,例如带有换行符 \n
的字符串。
能够看到,print
函数很好地解释了 \n
换行符,对字符串进行了换行输出。
学习任何编程语言时,一般都会编写显示 Hello World!
的程序。
Hello World!
表示“你好,世界!”,是软件界的经典例程,由于这能够很快地展现一种编程语言的基本语法。
在某些语言中,尤为是编译语言(如 C语言,C++),可能须要好多行代码才能得到此结果。可是,正如咱们看到的,在 Python 中,一行就足够了:
print("Hello World !")
复制代码
Python 真是很是简洁。
你能够用变量来存储程序中的数据。
你能够对这些变量进行不一样的操做:显示它们,使用它们进行计算,等等。
要为变量赋值,咱们使用这样的方式: variable_name = value
。
有不一样的变量类型,取决于你要储存的数据。int,float,str(字符串),等等。
咱们能够用 type
函数来获知数据类型。
为了显示数据,例如变量的值,咱们可使用 print
函数。
今天的课就到这里,一块儿加油吧!
下一课:Python探索之旅 | 第一部分第五课:条件表达式
我是 谢恩铭,公众号「程序员联盟」(微信号:coderhub)运营者,慕课网精英讲师 Oscar 老师,终生学习者。 热爱生活,喜欢游泳,略懂烹饪。 人生格言:「向着标杆直跑」