矿 仔

V1

2022/12/20阅读:26主题:默认主题

Python二:变量

Python解释器解释执行

当运行一个Python文件时,比如上一节定义的hello.py,Python会做哪些事呢?

首先末尾的.py会表明这是一个python文件,系统会采用Python解释器来运行这段程序。

Python解释器会去读每一个单词的意思,是内置函数还是普通的变量,去解释执行其中的每一段代码,如果有问题的话也会报错。

比如这段代码中的print就是一个函数名,解释器就知道要把圆括号内的内容打印到屏幕上去。

变量

上一段的代码中我直接打印了一段文本信息,即"Hello,World!",假设这段文本信息接下来还需要用,那么每次都要打印一遍这个文本信息吗?

这时可以用一个变量去接收,比如用下面这种方式去定义

第一步:定义一个变量message,这个变量指向了一个值("Hello,World!"),也就是与这个变量相关的信息

第二步:打印这个变量

可以看到,依然可以正常打印出信息。如果我还想再一次打印这个消息,继续执行

print(message)

就可以了。也可以在程序中修改变量的值,Python将始终记录最新的值,比如做如下修改之后,再打印一下

message = "5055N矿区"
print(message)

如图所示:

在使用变量的时候,也需要注意变量的命名。因为命名有一定的规则,不是什么样的命名都是可以的,比如我随便定义一个变量名,然后尝试打印一下

2message = "wow"
print(2message)

可以看到,第一行就会报错

无效的小数的字面量,这种命名看起来是不可行的。命名的规则如下:

  • 变量名只能包含字母、数字以及下划线。变量名能以字母或下划线开头,但是不能以数字开头。比如上面的错误就是以数字开头了。

  • 变量名不能包含空格,但是可以用下划线分隔其中的单词。比如first name就不行,但first_name就可以。

  • 不能用Python关键字和函数名作变量名,比如之前的print就是一个函数名。

  • 变量名应该既间断又具有描述性,有见名知意的作用。

  • 慎用小写字母l和大写字母O,因为与1和0有点像。

Python关键字

下面的关键字有特殊含义,用作变量名会引发错误:

False、await、else、import、pass、None、break、except、in、raise、True、class、finally、is、return、and、continue、for、lambda、try、as、def、from、nonlocal、while、assert、del、global、not、with、async、elif、if、or、yield。

大概有35个关键字。随便取一个演示一下是否可行。

await = "hello"
print(await)

可以看出,这个是报语法错误。

Python内置函数

将内置函数名作为变量名时,不会导致错误,但是会覆盖这些函数的行为,会报一些莫名其妙的错误。

abs()、delattr()、hash()、memoryview()、set()、all()、dict()、help()、min()、setattr()、any()、dir()、hex()、next()、slice()、ascii()、divmod()、id()、object()、sorted()、bin()、enumerate()、input()、oct()、staticmethod()、bool()、eval()、int()、open()、str()、breakpoint()、exec()、isinstance()、ord()、sum()、bytearray()、filter()、issubclass()、pow()、super()、bytes()、float()、iter()、print()、tuple()、callable()、format()、len()、property()、type()、chr()、frozenset()、list()、range()、vars()、classmethod()、getattr()、locals()、repr()、zip()、complie()、globals()、map()、revered()、_import_()、complex()、hasattr()、max()、round()

这里大概有69个内置函数。内置函数可以理解为Python本身提供的类库,每个函数都拥有不同的功能,比如之前用到的print函数就在其中,具体的细节先不用管,如果有其他语言基础的话很多的函数看名就能猜到大概的功能,后面每篇文章使用到哪些内置函数我会在末尾做一个汇总。

接着说回变量本身,有时会犯一些不应该犯的错误。比如我定义了一个变量message,但是使用的是messege这种,会发生什么呢?

会产生一条Traceback,当程序出现错误时,解释器会尽量的找出错误所在,这里解释器就发现了一个NameError,并给出了智能的提示。

有关于变量的理解,有时候被描述为可用于存储值的盒子,但是好点的理解可能是:变量是可以赋给值的标签,也可以说变量指向特定的值

字符串

字符串这种数据类型在很多编程语言中都很常用。

在Python中,字符串就是一系列字符,可以用单引号('')、也可以用双引号("")括起来。

比如:

'hello'

"hello"

这种灵活性能够在字符串中同时使用单引号和双引号,如下

但是利用这种用法时也要注意分隔点的位置。

下面说一些字符串的常见操作

修改字符串大小写

准备工作:定义一个变量name,变量的值是一个字符串”mine boy"

name = "mine boy"

第一个方法:title() 作用:让字符串中每个单词以首字母大写的方式显示。比如字符串时“mine boy"时,这个字符串中包含了两个单词,所以显示后的效果应该是"Mine Boy"。

验证一下:

那如果字符串只是"mine"呢?字符串中只有一个单词,所以显示应该为"Mine"

值得注意的是,这种用法呢是先用变量name然后接一个点(.),再接了一个方法名title加上括号的方式。即name.title()

这个方法在刚刚的内置函数中并没有出现,也说明它并不是一个内置函数,name代表的是一个字符串,说明它是一个字符串的函数。

还有其他几个很有用的方法:

upper() 将字符串中每个字符都改成大写

lower() 将字符串中每个字符都改成小写

验证:

在字符串中使用变量

有时候,你需要在字符串中使用变量的值。有可能是拼接一段文本,也有可能是处理两个变量值的拼接,比如

现在用两个变量分别表示姓和名,然后拼接一个完整的名字输出:

first_name = "Kevin"
last_name = "Durant"
full_name = f"{first_name} {last_name}"
print(full_name)

这种格式是f字符串。f是format的简写,注意内置函数中的format,通过f后面拼接双引号,引号中用花括号中放入变量名的方式 {变量名}进行插入。

比如,再来一个字符串拼接

但是有一点需要注意,f字符串是在3.6版本引入的,之前的版本还不能直接使用f字符串,不然会报错的。如下

之前的版本中需要使用完整的format函数,圆括号内需要填入使用的变量,通过花括号来引用,具体用法如下:

使用制表符或换行符添加空白

空白一般指非打印字符,比如制表符、换行符、空格等。

比如下图是正常输出的hello和利用制表符输出的hello,如下

可以看出增加制表符以后,前面会有一片空白。制表符的用法是\t。

也可以利用换行符,字符组合是\n

既然可以添加空白,那么也可以删除空白,在平时编程中也经常会遇到给定的字符串出现空白的情况,如果不进行处理可能会发生一些未知的错误。

比如下面有两个字符串'mine'和'mine '。假设我现在打印出来

很细微的差距,充满了迷惑性。

Python提供了去除末尾空格的方法,可用方法rstrip(),注意这同样不是一个内置函数,而是字符串的处理方法,使用方式也是字符串.rstrip()。

需要注意的是,这种方法的调用对变量空格的去除只是暂时的,如果要永久性的修改,需要用变量接收,比如

name = name.rstrip()

Python还提供了去除开头的空白,以及同时剔除字符串两边的空白。

lstrip()

strip()

速记:rstrip() r -> right 右,l -> left 左,strip -> 左右同时。

name.lstrip()
name.strip()

在Python中可执行加减乘除操作,直接通过操作符运算即可(+ - * /),如

两个乘号代表着乘方,比如

# 代表2的三次方
2 ** 3

如果一个表达式中包含多种运算操作,运算的优先级与数学中的顺序是一致的,即先乘除后加减,当然也可以利用圆括号改变运算顺序。

浮点数

在Python中将所有带小数点的数都称作浮点数。比如

有些利用浮点数的运算会导致精度有些丢失,比如

但是也不必过分担心,很多语言都存在这个问题,在实际场景中根据情况做额外的处理就好了。

还有一点是,如果操作数中有浮点数,那么结果就是浮点数,即便还有其他的整数

2 * 3.0 

结果是6.0

数中如果包含了下划线的话,不会影响其他的功能,有时会使数更容易读,比如1_000_000_000(好多money..)

定义变量的小技巧,可以同时给多个变量赋值。比如

x,y,z = 1,2,3

只要变量和值的个数相同,Python就可以正常的解析。

常量的命名通常全部为大写,表示该值在程序运行期间不会变

BUFFER_SIZE = 1024

注释

注释在很多编程语言中都有用,可以理解为标注解释的意思,程序并不会执行注释中的内容,主要为了给程序员自己或者其他使用的客户看。

Python中使用#号来表达,#号后面的内容Python解释器不会去执行。

例如

# This is a demo,please pass
name = 'mine'

小结

本篇学习了两个内置函数,print和format,print主要用于打印输出,format主要用于一些格式化相关的操作,在Python3.6以后的版本中简写为f字符串。

参考

《Python编程:从入门到实践》 埃里克·马瑟斯著

分类:

后端

标签:

Python

作者介绍

矿 仔
V1