[Python] 模块导入与字典 : 从入门到进阶

2024-10-09 14:16:46 浏览数 (3)

Python 是一门功能强大且易于学习的编程语言。在 Python 中,模块字典是两个极其重要的概念。模块用于组织代码并复用现有代码,而字典则是处理键值对映射的重要数据结构。本文将带你从零开始学习 Python 中的模块导入和字典,帮助你更好地掌握这两个概念。适合刚学习 Python 的读者,同时我们会通过经典示例和测试题目帮助你巩固所学内容。

模块导入详解

什么是模块?

在 Python 中,模块相当于一个独立的 .py 文件,里面可以包含函数、类和变量。通过模块,我们可以组织和复用代码,不需要每次都从头开始写代码。

为什么要导入模块?

模块的主要目的是代码复用。例如,Python 内置了许多功能模块(如 datetimemath 等),我们只需要导入模块并调用其功能,不用自己重新实现。

如何导入模块?

1. 直接导入整个模块

最常见的导入方式是直接导入整个模块。在这种方式下,调用模块内的函数或类型时,必须使用 模块名.函数名 的格式。

代码语言:javascript复制
import datetime

# 创建两个日期
date1 = datetime.datetime(year=2020, month=5, day=17)
date2 = datetime.datetime(year=2023, month=10, day=5)

# 计算两个日期的差值
print(date2 - date1)  # 输出:874 days, 0:00:00
2. 导入模块并重命名

有时模块名比较长,我们可以在导入时给模块起一个别名,这样调用时代码更加简洁。

代码语言:javascript复制
import datetime as dt

# 创建两个日期
date1 = dt.datetime(year=2020, month=5, day=17)
date2 = dt.datetime(year=2023, month=10, day=5)

# 计算两个日期的差值
print(date2 - date1)  # 输出:874 days, 0:00:00

通过 as 关键字,我们将 datetime 模块重命名为 dt,之后调用时只需使用 dt 代替 datetime

3. 直接导入模块中的某个类型或函数

如果我们只需要模块中的某个函数或类型,可以使用 from ... import ... 语法,这样导入后可以直接使用该函数或类型。

代码语言:javascript复制
from datetime import datetime

# 创建两个日期
date1 = datetime(year=2020, month=5, day=17)
date2 = datetime(year=2023, month=10, day=5)

# 计算两个日期的差值
print(date2 - date1)  # 输出:874 days, 0:00:00

这样,我们只导入了 datetime 模块中的 datetime 类型,调用时直接使用类型名即可,不需要加模块名前缀。

4. 导入模块中的所有内容

使用 from ... import * 可以将模块中的所有内容导入。这种方式不推荐使用,因为它会使代码的可读性变差,容易造成命名冲突。

代码语言:javascript复制
from datetime import *

# 直接使用 datetime 类型
date1 = datetime(year=2020, month=5, day=17)
date2 = datetime(year=2023, month=10, day=5)

print(date2 - date1)  # 输出:874 days, 0:00:00

虽然这种方式让调用更加简单,但由于导入了模块的所有内容,可能会覆盖或与现有的函数或变量重名,造成冲突。


Python 字典详解

在 Python 中,字典(dictionary)是一种非常强大且常用的数据结构,它提供了键值对之间的映射关系,能够高效地存储和查找数据。字典的每个元素由键组成,键是唯一的,而值可以是任意类型的数据。

创建字典

我们可以通过两种方式来创建字典:

代码语言:javascript复制
# 方法一:使用 { } 创建字典
student = {}

# 方法二:使用 dict() 创建字典
student = dict()

你也可以在初始化时直接添加键值对:

代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice',
    'age': 20
}

字典的特性

  1. 键的唯一性:字典中的键必须是唯一的。如果有重复的键,后面的键值对会覆盖前面的。
  2. 可变性:字典是可变的,可以动态地添加、删除或修改键值对。
  3. 无序性:字典中的键值对是无序的,也就是说,字典并不会按照插入顺序存储数据。

访问字典元素

我们可以通过键来访问字典中的值。访问方法有两种:

1. 通过 [] 访问键值
代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice'
}

print(student['name'])  # 输出:Alice
2. 使用 get() 方法

使用 get() 方法时,如果键不存在,可以返回一个默认值,避免抛出异常。

代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice'
}

print(student.get('name', 'Unknown'))  # 输出:Alice
print(student.get('score', 'Unknown')) # 输出:Unknown

修改和新增元素

字典是可变的,可以随时修改或添加元素。

1. 新增键值对
代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice'
}

student['score'] = 90
print(student)  # 输出:{'id': 1, 'name': 'Alice', 'score': 90}
2. 修改已有的键值对
代码语言:javascript复制
student['score'] = 95
print(student)  # 输出:{'id': 1, 'name': 'Alice', 'score': 95}

删除元素

我们可以使用 pop() 方法根据键删除字典中的键值对。

代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice',
    'score': 90
}

student.pop('score')
print(student)  # 输出:{'id': 1, 'name': 'Alice'}

遍历字典

字典支持多种遍历方式。

1. 遍历键
代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice',
    'score': 90
}

for key in student:
    print(key)
2. 遍历值
代码语言:javascript复制
for value in student.values():
    print(value)
3. 遍历键值对
代码语言:javascript复制
for key, value in student.items():
    print(f"{key}: {value}")

获取字典中的所有键和值

我们可以使用 keys()values() 方法分别获取字典中的所有键和值。

代码语言:javascript复制
student = {
    'id': 1,
    'name': 'Alice',
    'score': 90
}

# 获取所有键
print(student.keys())  # 输出:dict_keys(['id', 'name', 'score'])

# 获取所有值
print(student.values())  # 输出:dict_values([1, 'Alice', 90])

# 获取所有键值对
print(student.items())  # 输出:dict_items([('id', 1), ('name', 'Alice'), ('score', 90)])

字典合法的键类型

字典的键必须是可哈希的,即不能是可变类型,例如列表和字典本身不能作为键使用。

以下是一些可用作键的类型:

代码语言:javascript复制
print(hash(1))         # 整数可作为键
print(hash(3.14))      # 浮点数可作为键
print(hash('hello'))   # 字符串可作为键
print(hash(()))        # 元组可作为键

但是,像列表和字典这样可变的数据类型不能作为字典的键:

代码语言:javascript复制
# 列表不能作为键
# my_dict = {[1, 2]: 'value'}  # 会抛出 TypeError: unhashable type: 'list'

# 字典不能作为键
# my_dict = {{'a': 1}: 'value'}  # 会抛出 TypeError: unhashable type: 'dict'

阅读后的经典测试题

通过以下测试题,你可以更好地巩固模块导入和字典的知识。

题目 1:导入 math 模块并计算平方根

导入 Python 的 math 模块,使用该模块的 sqrt() 函数计算数字 16 的平方根。

代码语言:javascript复制
# 请写出你的代码:
import math

# 使用 sqrt 计算平方根
result = math.sqrt(16)
print(result)  # 输出:4.0
题目 2:创建一个字典并访问其中的值

创建一个包含 idnamescore 的学生字典,并分别访问和输出这些键对应的值。

代码语言:javascript复制
# 请写出你的代码:
student = {
    'id': 101,
    'name': 'Alice',
    'score': 95
}

print(student['id'])    # 输出:101
print(student['name'])  # 输出:Alice
print(student['score']) # 输出:95
题目 3:使用 get() 方法访问字典中的值

使用 get() 方法查找字典中 score 键对应的值。如果不存在,返回默认值 "N/A"

代码语言:javascript复制
# 请写出你的代码:
student = {
    'id': 101,
    'name': 'Alice'
}

score = student.get('score', 'N/A')
print(score)  # 输出:N/A
题目 4:添加和修改字典中的键值对

创建一个字典,并在其中添加一个新的键值对 age: 20。然后修改 name 的值为 "Bob"

代码语言:javascript复制
# 请写出你的代码:
student = {
    'id': 101,
    'name': 'Alice',
    'score': 95
}

# 新增一个键值对
student['age'] = 20

# 修改已有的键值对
student['name'] = 'Bob'

print(student)
# 输出:{'id': 101, 'name': 'Bob', 'score': 95, 'age': 20}
题目 5:遍历字典的键和值

使用 for 循环遍历字典的键和值,并按格式 "键: 值" 输出。

代码语言:javascript复制
# 请写出你的代码:
student = {
    'id': 101,
    'name': 'Alice',
    'score': 95
}

for key, value in student.items():
    print(f"{key}: {value}")

# 输出:
# id: 101
# name: Alice
# score: 95

结语

通过这篇博客,我们深入学习了 Python 模块的导入 方式以及 字典 的创建、操作和应用。模块是 Python 的重要组成部分,能够帮助我们组织和复用代码;字典作为键值对的数据结构,具有高效的查找和存储功能,适合用于各种场景。

模块导入的不同方式适应不同的场景,可以通过直接导入模块、导入模块中的部分类型或函数来简化代码。字典则支持动态添加、修改、删除键值对,同时提供了丰富的操作方法如 get()pop()keys()values() 等。

在学习过程中,确保多动手实践,理解每个示例代码中的操作原理。通过练习这些经典的题目,你将更加熟练地掌握 Python 中模块导入和字典的知识。

0 人点赞