Python 数据类型和变量
本章节主要讲解 什么是变量,变量命名规则,常量,常用内置数据类型,整数 (int),浮点数 (float),复数 (complex),字符串 (str),布尔值 (bool),空值 (None),列表 (list),元组 (tuple),字典 (dict),集合 (set),类型转换,检查数据类型。
什么是变量?
变量是用来存储数据的名称,就像一个贴了标签的盒子,里面可以装不同的东西。在 Python 中,变量不需要提前声明类型,也就是变量的类型不固定,赋值时会自动确定类型。
这种变量的类型不固定的语言称之为动态语言
,变量类型是固定的就是静态语言
,Java就是一种静态语言
,静态语言
在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。
用 =
赋值,左边是变量名,右边是值,将右边的值赋值给左边的变量。用 ==
表示判断左右两边的值是否相等,相等则返回True,不相等则返回False,例如:
name = "Alice" # 字符串变量
age = 25 # 整数变量
height = 1.65 # 浮点数变量
print(age==height) # 返回False
注意:赋值符号 =
不是数学中的等号 =
x = 12 # 给 x 赋值 12
x = x + 10 # 在数学里面这是不可能成立的,在Python中先计算 x+10,然后将结果赋值给 x
变量命名规则
- 变量名只能包含字母、数字和下划线
_
,且不能以数字开头。 - 变量名区分大小写(
age
和Age
是不同变量)。 - 不要使用 Python 关键字(如
if
,for
,while
)作为变量名。
示例:
my_name = "Alice" # 合法
2name = "Bob" # 非法:以数字开头
常量
常量是值不可变的变量,通常用于存储固定的、不应被修改的数据,如数学常数(π = 3.14159)或配置值(MAX_CONNECTIONS = 100)。
命名约定:在 Python 中,常量的命名通常使用全大写字母(例如 PI、MAX_RETRY),这是 PEP 8(Python 编码规范)推荐的做法,用以表明该变量应被视为常量。
PI = 3.14159
MAX_CONNECTIONS = 100
注意:尽管使用全大写命名表示常量,但 Python 并没有强制阻止对这些变量的修改。这只是一种约定,依赖程序员的自觉性。
常用内置数据类型
Python 有多种内置数据类型,下面一一介绍。
整数 (int)
整数 (int) 没有小数点的数字,例如 5
, -10
, 0
。如果整数非常大有很多0,Python允许我们在数字中任意位置添加下划线分隔,比如 10_000_000_000 和10000000000 是完全一样的。
示例:
x = 10 # 整数
10_000_000_000 == 10000000000 # 返回 True
浮点数 (float)
浮点数 (float) 带小数点的数字,例如 3.14
, -0.001
。
Python 同样可以使用科学计数法,对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9
,或者12.3e8
,0.000012可以写成1.2e-5
,等等。
x = 3.14 # 浮点数
y = 1.23e9 # 表示 1230000000.0
z = 0.000012
复数 (complex)
复数 (complex) 包含实部和虚部,例如 3 + 4j
(较少使用)。
z = 2 + 3j # 复数
字符串 (str)
字符串是用来表示文本的数据,用单引号 '
或双引号 "
包裹。
示例:
name = "Bob"
greeting = 'Hello, World!'
print(name) # 输出:Bob
print(greeting) # 输出:Hello, World!
字符串可以拼接:
first = "Hello"
second = "World"
full = first + " " + second
print(full) # 输出:Hello World
字符串中如果包含引号:
x = " I'm very good! " # 用双引号包裹单引号
y = ' I\'m very good! ' # 如果都是单引号,内部需要用反斜线转义
z = ' Jhon said "How are you?" ' # 也可以用单引号包裹双引号
Python 如果字符串要换行,并且有格式,可以使用三引号:
>>> large = """
... Hi, Where are you from?
... China.
... """
>>>
>>> print(large)
Hi, Where are you from?
China.
>>>
转义字符\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
, 字符串前加 r 表示里面的特殊字符不转义。
>>> print('hello \nAlice!')
hello
Alice!
>>> print(r'Hello \n World! ')
Hello \n World!
字符串支持切片(后续list和tuple会讲到)
text = "Python"
print(text[0:2]) # 输出: Py
布尔值 (bool)
布尔值只有两种:True
和 False
,常用于条件判断。
示例:
is_student = True
is_adult = False
print(is_student) # 输出:True
布尔值可以用and
、or
和not
运算。
and
是与运算,只有所有都为True
,and
运算结果才是True
or
是或运算,只要其中有一个为True
,or
运算结果就是True
not
是非运算,它是一个单目运算符,把True
变成False
,False
变成True
>>> print(True and False)
False
>>> print(True and True)
True
>>> print(True or True)
True
>>> print(not True)
False
>>> print(4 > 9)
False
空值 (None)
空值表示什么也没有,他不是0
,也不是空字符串,在 Java 里面的空值是 null
,在Go里面的空值是 nil
。
列表 (list)
列表是可变的有序集合,用方括号 []
定义,可以存储多种类型的数据。
示例:
fruits = ["apple", "banana", "orange"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
print(fruits) # 输出:['apple', 'banana', 'orange']
访问列表元素:
print(fruits[0]) # 输出:apple(索引从0开始)
fruits.append("grape") # 在末尾添加元素
print(fruits) # 输出:['apple', 'banana', 'orange', 'grape']
元组 (tuple)
元组是不可变的有序集合,用圆括号 ()
定义。
示例:
coordinates = (10, 20)
print(coordinates[0]) # 输出:10
coordinates[0] = 5 # 错误!元组不可修改
字典 (dict)
字典是键值对的集合,用大括号 {}
定义,键必须唯一。
示例:
student = {"name": "Alice", "age": 20, "major": "Math"}
print(student["name"]) # 输出:Alice
student["age"] = 21 # 修改值
print(student) # 输出:{'name': 'Alice', 'age': 21, 'major': 'Math'}
集合 (set)
集合是无序的、不重复的元素集合,用大括号 {}
或 set()
定义。
示例:
unique_numbers = {1, 2, 2, 3}
print(unique_numbers) # 输出:{1, 2, 3}(重复的2被移除)
类型转换
有时需要将一种数据类型转换为另一种,使用内置函数:
int()
:转换为整数float()
:转换为浮点数str()
:转换为字符串list()
:转换为列表
示例:
num_str = "123"
num = int(num_str) # 字符串转整数
print(num + 1) # 输出:124
num_float = float("3.14") # 字符串转浮点数
print(num_float) # 输出:3.14
检查数据类型
使用 type()
函数查看变量的类型。
示例:
x = 42
y = "Hello"
z = [1, 2, 3]
print(type(x)) # 输出:<class 'int'>
print(type(y)) # 输出:<class 'str'>
print(type(z)) # 输出:<class 'list'>
本章节只简单介绍下 Python 内置数据类型,后面会详细介绍最常用的列表、元组、字典、集合的详细用法。