外观
变量和数据类型
针对有基础者
在 Python 中,int()
str()
等是类的初始化语句。为方便理解,在本节中我们不严谨地将其解释为“函数”。
这节课内容比较多,但是极为重要,请仔细阅读!
例01 变量定义
我们再来了解一个新概念:变量。
运行代码
a = 1
print(a)
a = 2
a = 3
print(a)
输出内容:
1
3
名词解释
变量:计算机语言中能储存计算结果或能表示值的抽象概念。我们可以简单理解为存储一些数据的容器。
变量具有变量名和值。形如 a = 1
这样的语句成为变量赋值,即将 1
这个值存入 a
变量中。编程语言中的赋值基本都是从右到左,即右边的值给左边。
针对有其它编程语言基础者
与大多编程语言不同,Python中变量无需提前声明,在使用时直接赋值即可。
在执行变量赋值的时候,有如下两种情况:
- 若变量不存在(如本例中的
a = 1
),则会创建变量a并将a的值设定为1; - 若变量存在(如本例中的
a = 2
和a = 3
),则直接重新设定a的值。
例02 变量命名
运行代码
a = 1
name = 2
Cnt = 3
x1 = 4
_temp = 5
string_len = 6
HELLO = 7
异想之旅 = 8
print(a, name, Cnt, x1, _temp, string_len, HELLO, 异想之旅)
输出内容:
1 2 3 4 5 6 7 8
根据本例,变量名命名要求如下:
- 通常由大写字母
A-Z
、小写字母a-z
、数字0-9
、下划线_
组成; - 也可以由其它非英文语言字符组成,例如本例中运用了中文的
异想之旅
,但是非英文的变量命名极其不推荐使用; - 数字不得作为开头。
以上是对于变量名的硬性限制,还有很多为了加强代码可读性的约定,Python 官方的变量命名建议(还包括其它内容的代码格式)是 PEP 8 - Python 代码风格指南。
例03 常见的数据类型
运行代码
a = 1 # 整数int
b = 3.14 # 小数(浮点数)float
c = 'Hello' # 字符串str
d = True # 波尔类型(包含True和False两个值)bool
e = None
print(a, b, c, d, e)
输出内容:
1 3.14 Hello True None
本例中,我们介绍了 Python 中五种常用的数据类型:
- 整数
int
:存储任意整数,例如1
-10
- 浮点型
float
:存储任意小数,例如0.1
-3.1415926
.98(等同于0.98)
- 字符串
str
:存储任意字符组成的内容,例如"Hello World"
'异想之旅'
"π=3.1415926..."
(全部都必须要有单引号或双引号包裹)。在 1.5 章节我会详细介绍这一数据类型的使用 - 布尔
bool
:表示逻辑判断,取值为True
或False
,分别对应二进制下的1和0。在 1.8 章节中大家会了解到该类型的使用场景 - 空值
None
:有且只有None
这一个取值,通常用于表示内容不存在或为空。先做了解,后面会用到
名词解释
字符串:编程语言中表示任意文本的数据类型。
针对有其它编程语言基础者
与其它编程语言不同,Python 的 int 类型不限制数字的大小和位数,运算时自动采用高精度。
Python不存在单个字符(char)的概念,因此单引号和双引号都表示字符串。
思考一个问题:为什么字符串一定要在两边加引号呢?
参考答案:因为如果不加以引号进行区分,将无法将字符串与变量名和函数名进行区分,进而无法让计算机识别你是在书写一个字符串还是在访问变量。
延申:为什么数字和变量可以区分开?
参考答案:因为变量名不能以数字开头。
例04 强制类型转换
运行代码
a = 19.97
print(int(a))
print(str(a))
print(bool(a))
输出内容:
19
19.97
True
众所周知,水可以在一定条件下自如地在固液气三态中切换。在Python中,数据的类型也不是一成不变的,可以通过类型转换使其转变为另一类型类型。水的状态转变前提是温度变化,而类型转换的触发条件则是调用类型转换函数。
名词解释
类型转换,将数据从一种类型转换到另一种类型的过程。一个简单的例子是将整数转换成浮点数。
类型转换函数,通常为 type_name()
,其中 type_name
为目标类型的缩写。缩写在本节的 例03 中都已经标注出来(这是需要记住的,本节往后提及数据类型将只标注英文缩写)。
在本例中,我们通过 int()
str()
bool()
三个函数分别将浮点型 float
的变量 a
转换为了整型 int
、字符串 str
和波尔型 bool
。
强制类型转换的规则大体如下:
输入类型 | 输出类型 | 转换规则 |
---|---|---|
int | str | 将 int 在十进制下使用阿拉伯数字表示:1 → '1' |
int | float | 在 int 末尾加上 .0 占位:1 → 1.0 |
int | bool | 除 0 外均返回 True(0 返回 False):1 → True |
float | int | 舍弃 float 的小数部分(非四舍五入):19.97 → 19 |
float | str | 将 float 在十进制下使用阿拉伯数字表示:3.14 → '3.14' |
float | bool | 除 0 外均返回 True(0 返回 False):1.0 → True |
str | int | 将 str 转换为可供运算的 int 格式:'1' → 1 |
str | float | 将 str 转换为可供运算的 float 格式:'1.23' → 1.23 |
str | bool | 除空串 '' 为 False外,全部返回 True:' ' → True (空串是长度为0的字符串,不是空格) |
bool | int | True → 1 ;False → 0 |
bool | float | True → 1.0 ;False → 0.0 |
bool | str | True → 'True' ; False → 'False' |
注意
将str转换为int或float时,该str必须是可以由int或float通过 str()
转换得到的,否则抛出错误:若想要将 '1.23'
转换为int,则写法为 int(float('1.23'))
,因为 '1.23'
无法通过int类型直接转换str得到,所以不能直接转int。
例04 删除变量
运行代码
a = 1
print(a)
del a
print(a)
输出内容:
1
Traceback (most recent call last):
File "e:\Programming\Python\临时\1.py", line 4, in <module>
print(a)
NameError: name 'a' is not defined
del
语句可用于删除一切已定义的变量。
上面输出的第2行开始为报错语句,后面也会详细提及,现在简单说一下怎么看它:重点内容在最后一行,直接作为英文去读;再往上是报错堆栈信息,会告诉你出错的语句是哪一句,比如这里是文件 e:\Programming\Python\临时\1.py
的第四行,如果是函数内部出错,这里将完整打印函数的调用过程。
版权所有
版权归属:异想之旅 | YuzhenQin