什么是标识符?
先举个栗子:
我在玩一款开放形式的探索游戏,在探索过程中,我发现有一个地方资源很丰富,但是发现自己现在没有工具,那么我可以先在地图上打个标记,用来表示个位置,那么之后等我有了工具就可以直接打开地图找到这个标记,能快速到达这个地方。那这个标记就可以看做是一个标识符。
再举个栗子:
记得一个数学问题:
A、B两地相距280千米,一艘船已既定速度在其间航行,顺流而行用14个小时从A到B,逆流而行用20个小时从B到A,假设水流速度为恒定均速,求船在静水中的时速和水流时速?
哎呀,看到这个问题又想起了学习的时光,不过举这个例子,不是为了解题,而是为了理解。
先来整理一下思路:
现在我们想要的东西是多少,还不知道,但是我们就知道我们要用这两个东西。那么怎么办?
数学中我们可以设:船在静水中的时度为X,水流时度为Y,那么我们就可以直接使用这两个我们暂时不知道的东西来处理一些问题。
这样这题就可以这样解:
20(X-Y) = 280
14(X+Y) = 280
不知道有没有人这样想过:
那我不用X,Y也可以呀,我也可以这样写:
20(船在静水中的时速-水流时速)=280。。。。。
其实这个跟X,Y是一个概念
OK,说道这里,我们结合上面的标识符来理解一下
我们说标识符呢,就是用来标记一个东西,方便我回头来找,来用
那么上题中的X,Y是不是就是一个标识符?用来标识两个数字用的?
同样的道理,我们用汉语说的"在静水静水时速"、“水流时速”,也是标识两个数字
这样说Y跟"水流时速"都标识一个东西,就是一个概念吧
为什么要设X,Y,就是为了用的时候方便呀。
那么我们就像设X,Y一样的道理,在程序中,也有一些东西不太好直接拿来用,那么就给他起一个名字(假如用符号a),用来标识这个东西,以后我们用的时候可以直接用a来表示这个东西,会很方便。那么符号a就是程序中的一个标识符
简单来说,标识符就是用来标注识别某个东西的符号,简称标识符。
目的就是为了方便我们使用。
标识符一般都会用在变量、常量、函数、语句块等命名用
说完标识符,那么就要说一下关键字。
什么是关键字呢,就是Python这门语言内部使用的一些拥有特殊含义的字符(也就是Python已经占用了这些标识符,你就不能再用了)
我们可以在编辑工具中运行help()
函数,并在控制台出入keywords
来查看Python的关键字有哪些
说起变量,就先从容易理解的地方解释:
变量,就是一个会变的数据。
举个例子:
我们现在都在用手机,而现在手机基本都有一个功能,就是能够设置一个锁屏密码,在解锁屏幕的时候来验证当前使用手机的是不是手机的主人。
你就拿这个用来验证的东西来说,我们叫这个东西锁屏密码、手机密码等等,但是这些叫法指的就是用来验证你是不是你的一个数据,这样叫着太累,我们起个标识符叫pwd。好了,拿起手机,输入pwd(密码):123456.
第二天,你觉得这个pwd不安全,改成987123,这个987123我还是用pwd来标识的,只不过是pwd标识的内容变了。
而手机密码这个数据,就是一个可以变的数据,也就是变量。
而为了叫起来方便,我们起了个名字叫pwd,那这个pwd就是这个变量的名字,叫变量名
简单来说,变量其实就是为标识符,用来标识一个可能会改变的数据。
如上图:
先定义了一个变量asong
用来表示一个数据(一首歌的名字
),我就可以通过print(song)
输出变量song
,就可以直接通过变量名song来使用song所表示的数据。
而不是像上一篇文章中一样print('漂洋过来来看你')
这样打印
如果有人说,为什么不可以直接打印这句话。
那么请看看这种情况
假如这是一个完成的程序,有那么多地方要用到这个数据,是不是每次都要把这首歌的名字写一遍,感觉还是写变量名song方便啊。当然这是其中一个好处。
另外还有一个重要的一点,假如说,今天听的是 漂洋过海来看你
,过两天,突然觉得另一首歌好听,我想改,不要漂洋过海来看你
了,要寂寞沙洲冷
,这个时候一看,我的天,瞬间就感觉冷了,那么多地方要改!!!
而如果通过变量的方式
我只需要在定义变量的时候改一下,那么只有用到这个变量的地方就都变了
变量是会变的数据,
而常量,跟变量是双胞胎,也是表示一个数据,只不过这个数据平常就是这个样子,变不了、不能变、变了就有问题了。
就比如说圆周率,这个变不了,不过你的圆多大,多小,甚至小到肉眼看不到,甚至说这个世界不存在了,圆周率的值依旧是这个值,永远不会变。
圆周率这个是客观存在的常量
除了这个之外呢,还有主观定义的常量:
比如数字1,代表的就是一,而不是用数字2来表示一,这是在最初准备使用它的时候就定好的规矩,并且严重声明了这个规矩是死了,以后不会改了。不管怎么样都不能该,改了那就会出现很多问题。
那这个数字1呢,就是主观定义的常量。
因为种种原因,Python并未提供如C/C++/Java一样的const修饰符,换言之,python中没有常量,至少截止2015年年末,还没有这个打算。Python程序一般通过约定俗成的变量名全大写的形式来表示这是一个常量。
所以在常量这方面,一定要严格按照约定的走,不然假如有人看到这个变量,给修改了,就有可能会导致一些无法预计的问题,造成损失。这不是危言耸听!
是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
其实说白了就像是数学上的一种公式,比如 1 + 2、5 * 8、或则变量 X + Y。
表达式一般就是用来计算一种结果,并不会对程序产生什么实质性的影响
这里就不多叙述了。
语句是什么?
它在语法上自成体系的单位,有一个词或语法上有关联一组词构成
简单说就是我们写的代码,一般是要完成一个操作或功能
a = 10
打印信息
功能print(123)
语句一般会对程序产生影响。
说程序,还是先说个笑话当例子:
把大象装进冰箱需要几步?
1、打开冰箱
2、把大象装进冰箱里
3、关上冰箱
虽然是个笑话,但却能经典地解释什么是程序:把大象装进冰箱就是一个程序。
来看看程序这个词的定义:
为进行某项活动或过程所规定的途径
自述一下:就是我们要做完成一个事情,就要通过其规定的步骤一步一步来进行。
就如大象装进冰箱,首先要打开冰箱,不然没法装进冰箱里面,要先把大象装进冰箱里才能关上冰箱。不然就无法完成把大象装进冰箱
这个事情
而计算机中的程序,就是一组计算机能识别和执行的命令,这些命令什么作用?就是告诉计算机,我要实现这个功能,做这个事情,你要先做什么,然后做什么,最后再做什么,做完这件事情之后要干嘛。
所以,程序是一个指令的序列。
我们写了一段代码程序用来实现某一个功能,然后我们将这段代码放在某个地方,然后等用的时候,通过特殊方式进行使用。那这一部分代码就是一个函数。
内置函数又叫内建函数。
就是Python内部已经定义并完成的一些函数
比如之前用的print()
打印函数
自定义函数,就是上面图片中我们自己定义并完成其功能的函数。
**参数:**在函数名后面的括号中的那个标识符所代表的就是参数
参数分为两种:形参和实参
def doubleTheNum(num)
中的num
print('哈哈哈')
这里的'哈哈哈'
就是实参如上图中的例子:
范围的返回值,就是这个函数在完成一系列操作之后,要返回给调用者的数据。
举个例子:
小张是个学霸,然后小李呢,也是刻苦努力的学习,这不,小李要把刚完成的练习试卷交个小张,让小张帮忙批改一下。那么小张在完成批改试卷的操作,应该要把批改玩的试卷返回给小李。
不过注意的是:并不是所有的函数都必须有返回值,也就是不是所有的操作执行玩之后都需要告知结果
开学了,小李和同学们要把寒假作业交给小张,让小张交给老师进行批改。那小李把作业交给小张之后,小张不需要再给小李反馈任何信息,直接把作业交给老师批改就好了。
The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions.
主要的内置类型有:数值类型、序列、字典、类、实例和异常
但是Python的基本数据类型一般分为:数值、字符串、列表、元组、字典、集合这六种
现阶段先说数值和字符串两种类型
There are three distinct numeric types: integers, floating point numbers, and complex numbers. In addition, Booleans are a subtype of integers
这里有三种明显的数值类型:整型、浮点型、复数。除此之外,布尔类型是整数的一个子类型
数字类型是不可更改的对象。对变量改变数字值就是生成/创建新的对象
整型:
Integers have unlimited precision
整型拥有绝对的精度
整型:就是像1、2、3这样没有小数位的数字,就是整型。
扩展:
整型分标准整型和长整型(Python2.7及之前的有这种类型)
标准整型
int,标准整型,在大多数32位机器上标准整型取值范围是-231到231-1,也就是-2147483648~2147483647,如果在64位机器使用64位编译器,那么这个系统的标准整型将是64位。
Floating point numbers are usually implemented using double in C
浮点型在C中一般使用double(双精度)实现
浮点型值通常都有一个小数点和一个可选的后缀e(大写或小写,表示科学计数法)。在e和指数之间可以用正(+)或负(-)表示指数的正负(正数的话可以省略符号)
Complex numbers have a real and imaginary part, which are each a floating point number
复数由实数和虚数构成,他们都是浮点数
*目前限不研究这个
从Python2.3开始Python中添加了布尔类型。布尔类型有两种True和False。对于没有__nozero__方法的对象默认是True。
对于值为0的数字、空集(空列表、空元组、空字典等)在Python中的布尔类型中都是False。
整型的子类型
直接上图验证
补充
上图最后一个计算,整数与浮点数进行计算,所得的结果是浮点数。
Python fully supports mixed arithmetic: when a binary arithmetic operator has operands of different numeric types, the operand with the “narrower” type is widened to that of the other,
Python完全支持混合算法:当二进制算术运算符具有不同数值类型的操作数时,窄(长度短)类型的操作数被扩展到另一种(长度长)操作数,
where integer is narrower than floating point, which is narrower than complex.
其中整型窄(短)与浮点型、浮点型窄(短)于负数
A comparison between numbers of different types behaves as though the exact values of those numbers were being compared.
两个不同类型的数字进行比较的时候,是在比较他们确切的数值
注意
\a\a\a
结果却是输出了不知道什么的东东。
假如当我们需要使用一些特殊符号的时候就可以使用转义字符来实现
转义字符是⼀种特殊的字符常量。转义字符以反斜线""开头,后跟⼀个或⼏个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符
常见的转义字符
写法 | 含义 |
---|---|
\t | 表示制表符 |
\n | 表示换⾏符 |
\ | 表示反斜杠 |
’ | 表示 ’ |
\ ‘’ | 表示 ‘’ |
长字符串,又叫做文档字符串,使用三重单引号( ’ )来表示
%s #字符串占位
%f #浮点数占位
%d #整数占位
string = "good" #类型为字符串
#输出的打印结果为 string=good
print("string=%s" %string)
# 输出的打印结果为 string=good
# 数字3的意思是:字符串的长度为3。
# 当字符串的长度大于3时,
# 按照字符串的长度打印出结果
print("string=%3s" %string)
# 输出的打印结果为 string= good
# 当字符串的长度小于6时,在字符串的左侧填补空格,
# 使得字符串的长度为6
print("string=%(+)6s" %string)
# 输出的打印结果为 string=good
# 当字符串的长度小于6时,在字符串的右侧填补空格,使得字符串的长度为6
print("string=%-6s" %string)
# 输出的打印结果为 string=goo(good)(%.3s的意思是:截取字符串的前3个字符,当截取字符串的字符长度大于字符串时,输出的结果是整个字符串)
print("string=%.3s" % string)
#小数点后的数字表示截取的字符串长度
print("string=%.3(6)s" %string)
# 先是根据小数点后面的数字b截取字符串,
# 当截取的字符串长度小于a时,需要在字符串的左侧填补空格,
# 使得字符串的长度变为a
print("string=%a.bs" %string)
# %*.*s表示精度, 两个*的值分别由%string前面被两个逗号隔开的数值来指定。
print("string=%*.*s" %(6, 3, string))
整数:
print ("He is %d years old"%(25))
# 结果 He is 25 years old
浮点数
print ("His height is %f m"%(1.83))
# 结果His height is 1.830000 m
name = 'jack'
age = 25
height = 1.88
printStr = f'His name is {name},He\'s {age} year old and his height is {height}m'
print(printStr)
# His name is jack,He's 25 year old and his height is 1.88m
formatStr = 'His name is {},He\'s {} year old and his height is {}m'
printStr = formatStr.format('Jack', 25, 1.88)
print(printStr)
# His name is Jack,He's 25 year old and his height is 1.88m
len() # 字符串的⻓度
max() # 最⼤值
min() # 最⼩值
split() # 分割字符串
join() # 拼接字符串
#去空格
s.strip() #左右两边去空格
s.lstrip() #去左边空格
s.rstrip() #去右边空格
#字符串⼤⼩写
s.upper() # 全部⼤写
s.lower() # 全部小写
s.isupper() # 判断是不是全部⼤写
s.islower() # 判断是不是全部⼩写