11 极速理解Python中的变量

编程中最常用到的概念之一就是变量(variable),变量其实就是我们在编写程序时存放东西的地方,由于存放的东西可以随时改变,所以叫“变”量。变量里存放的东西一般有三种:整数、小数和文字。往变量里存东西的过程叫做“给变量赋值”,写法如下:


a = 19


上面这条程序语句(编程中,一般把每一行叫做一条语句或一句话,当然也有一行里写多条语句或者一条语句写了几行的情况。注意,自动折行的行还算一行)的意思是,把19这个数字存进a这个变量中。注意,这里的等号“=”和数学上方程式中的等号意思完全不同,数学上的“=”意思是等号两边的数值是相等的,而编程中的“=”则代表把等号右边的数字存到等号左边的变量中,类似于数学证明过程中“令a等于19”这种说法,所以我们在编程中也经常说“让a等于19”。我们来看看下面的代码与数学意义的区别:


a = 19

a = a + 1

print(a)


我们可以执行这段代码看看结果。这两行代码执行的结果是:变量a中变成了20这个数。因为我们介绍过,变量里存放的东西是可以变的,一开始我们“让a等于19”,之后第二行程序又“让a等于a+1”,这时候其实是把a当时的值加上1之后再存放到a当中去,那么这时候a中的值实际上就变成了20。这个例子中,我们也可以看到,给变量赋的值可以是单纯的数字,也可以是一个表达式,如果是个表达式,程序执行时会自动把这个表达式计算后的结果赋值给等号左边的变量。


如果我们这样写:


b = 9.18


那么就表示把9.18这个小数存到名字叫做b的变量中。刚才介绍过,Python中的变量是有类型的,主要有整数、小数和文字三种。在这里,由于我们给b变量赋值时给了一个小数,Python会自动根据给变量赋的值来确定变量的类型。



2.43 赋值语句执行结果截图

图2.43中,我们在Python的交互式命令行界面中,敲入了上面给a和b赋值的两行代码,之后我们用type(a)来查看变量a的类型,发现是整数类型,“int”即integer(整数)的简写。而用type(b)查看发现b是“float”类型,float就是计算机中对小数的叫法,由于计算机中一般对小数的小数点 “浮动”来获得更大的数值范围,因此一般叫做“浮点数”。然后我们又定义了一个变量c,让它等于a+b,查看c的类型也是浮点数,用print函数来输出c的值看到c中存储的是28.18这个浮点数,也就是a与b的和,与我们的期待相同。


我们再看下面一段代码:



图2.44 字符串变量赋值执行结果截图

这次我们给变量a赋值的是一段带双引号的文字,这就是Python语言中的文字变量,在编程中,我们一般把文字叫做字符串(string),形象的理解就是“一串字符”,所以我们可以看到用type函数来查看变量a、b、c的类型都是“str”,也就是字符串的简写。而字符串也可以用加号来“相加”,但是和数字相加不同,字符串的相加其实是把几个字符串连起来,所以我们用print来查看变量c的值时,得到的输出是“good”、“morning”和它们之间的一个空格连起来的“good morning”。注意给字符串类型的变量赋值时,都要在字符串前后加上双引号,否则计算机无法判断是变量的名字还是一个字符串。如果字符串中本身含有双引号,要在这个双引号之前加上一个反斜杠“\”来避免混淆。


接下来,说说给变量取名字的问题。变量的名字应该都是由英文字母开头的,并且为了避免混淆,建议整个变量名字只包含英文字母和数字以及下划线符号“_”。变量名字中不能含有空格,如果需要表达分隔,可以用下划线符号“_”来代替。下面几个变量名字是正确的:


x

myFirstName

plan_for_2017


注意其中第二行的写法也是一种常见的变量命名方式,在一个变量名字中带有几个单词时,不使用下划线来分隔,而使用大小写变化来表示单词分界。


下面几个变量名字是不正确的:


12 (变量名字不能用数字开头)

codeName张三 (变量名字不能含有中文)

a#6 (变量名字不能含有大多数英文字符和数字之外的特殊字符,我们建议最多只用下划线“_”)

this red apple (变量名字中不能有空格)


需要注意的是,变量名字的大小写是“敏感”的,就是说相同字母但大小写不同时,Python会认为它们是不同的变量,例如下面几个变量都将被认为是不同的变量:


theredapple

TheRedApple

theRedApple

THEREADAPPLE


前面说的三种类型的变量叫做变量的“基本类型”,那么,变量在这几种基本类型上面还可组合起来组成“复合类型”。复合类型的变量常用的有数组和字典两种。


* 数组:数组(array),顾名思义就是表示一组数字,



2.45 定义数组

在图2.45所示的截图中,我们在第一条语句里定义了一个变量a来存放一个数组,我们表达数组的方式,就是把一组数字用中括号“[]”括起来,数字之间用英文逗号“,”分隔开。因此,执行完这句话后,变量a中就保存了一个包含1,2,3这三个数字的数组。


我们想要查看数组中某个具体数字时,要用“a[0]”这种方式,a后面紧跟的中括号内的数字叫做“下标”,代表取第几个数字,计算机中习惯数字从0开始,所以print(a[0])这条语句实际上输出了数组a中的第一个数字1,而print(a[2])这条语句输出了数组a中的最后一个数字,也就是第三个数字3。


如果想要改变数组中某个数字的值,我们直接给带下标的数组变量赋值就可以了,图中a[2] = 5这条语句,就把数组a的第三个数字重新赋值成为5了,我们在接下来的print(a[2])这条语句的输出结果上看,确实已经改变了a[2]的值。


* 字典:数组是通过下标来代表其中某一个数值的,也就是通过数字来索引的;而字典这种变量类型,和我们常用的外语字典一样,是通过文字来索引的,看一下下面这个例子,



图2.46 字典赋值执行结果截图

图中,info = {"name": "Adam", "height": 175, "weight": 60} 这条语句就定义了info这一个字典变量,其中存储了某人的姓名(name)、身高(height)和体重(weight)三个信息。定义字典变量的时候,要用大括号“{}”括起来,所有文字也就是字符串要用双引号括起来,所以其中的name、height、weight三个文字索引都用双引号括起来了;Adam也是一个字符串,所以也括起来,数字无需括起来,info由于是变量名称,也不需要括起来。索引的字符串和具体的值之间,要用冒号“:”分隔开,两个数值之间再用逗号“,”分开。


引用字典中的某一个值的时候,和数组类似也是用下标的形式,不过这回下标不是数字了,而是改成了字符串,例如图中的print(info[“height”])就输出了这个人的身高175。同样的,如果要修改字典中某个值,就用类似于info["height"] = 180 这样的方法给字典中某个下标赋值就行了。


最后,除了变量,编程中实际上还有“常量”的概念,常量可以理解成不变的量,有些计算机语言认为不需要常量,因为用变量就可以代表常量,只是不去改变它就行了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容