python基础知识——字典,函数,类

以下是关于 Python 基础知识字典(dict)、函数(function)、类(class) 的系统讲解,适合初学者快速掌握核心概念和常用用法。

我会尽量用清晰、结构化的方式讲解,并附上最常用的代码示例。


1. 字典(dict)

字典是 Python 中最常用的键值对数据结构,底层是哈希表,查找速度非常快。

核心特点

  • 键(key)必须是不可变类型:字符串、数字、元组(列表、字典、集合不能做 key)
  • 值(value)可以是任意类型
  • 键不能重复,重复赋值会覆盖
  • Python 3.7+ 字典保持插入顺序

基本操作

# 创建字典
d1 = {}                     # 空字典
d2 = dict()                 # 空字典
d3 = {"name": "小明", "age": 18, "city": "北京"}

# 访问与修改
print(d3["name"])           # 小明
d3["age"] = 19              # 修改
d3["score"] = 95            # 新增

# get 方法(推荐,避免 KeyError)
print(d3.get("height"))     # None
print(d3.get("height", 170)) # 170(默认值)

# 删除
d3.pop("city")              # 删除指定 key
d3.popitem()                # 删除并返回最后一个键值对(3.7+ 有序)
del d3["age"]               # 删除

# 常用方法
print(d3.keys())      # dict_keys(['name', 'score'])
print(d3.values())    # dict_values(['小明', 95])
print(d3.items())     # dict_items([('name', '小明'), ('score', 95)])

# 遍历
for k in d3:
    print(k, d3[k])

for k, v in d3.items():
    print(f"{k}: {v}")

字典推导式(非常常用)

# 快速创建字典
squares = {x: x**2 for x in range(1, 6)}
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 过滤
students = {"小明": 85, "小红": 92, "小刚": 60}
passed = {k: v for k, v in students.items() if v >= 60}
print(passed)  # {'小明': 85, '小红': 92}

小技巧

  • setdefault():如果 key 不存在则设置默认值并返回
  • update():批量更新字典
d = {}
d.setdefault("age", 18)   # 如果没有 age,就设为 18 并返回 18
print(d)  # {'age': 18}

2. 函数(function)

函数是代码复用、逻辑封装的核心。

定义与调用

# 基本定义
def greet(name="客人"):     # 默认参数
    print(f"你好,{name}!")

greet()          # 你好,客人!
greet("小明")    # 你好,小明!

参数类型(非常重要)

def func(a, b, c=10, *args, **kwargs):
    print("a =", a)         # 位置参数
    print("b =", b)         # 位置参数
    print("c =", c)         # 默认参数
    print("args =", args)   # 剩余位置参数 → 元组
    print("kwargs =", kwargs)  # 关键字参数 → 字典

func(1, 2)                    # a=1, b=2, c=10, args=(), kwargs={}
func(1, 2, 3, 4, 5, x=100, y=200)
# a=1, b=2, c=3, args=(4,5), kwargs={'x':100, 'y':200}

返回值

def get_info():
    return 18, "小明", "北京"   # 返回元组

age, name, city = get_info()   # 解包
print(age, name, city)         # 18 小明 北京

lambda 表达式(匿名函数)

# 普通写法
def add(x, y):
    return x + y

# lambda 写法
add = lambda x, y: x + y

# 常用于排序
students = [("小明", 85), ("小红", 92), ("小刚", 70)]
students.sort(key=lambda x: x[1], reverse=True)
print(students)  # [('小红', 92), ('小明', 85), ('小刚', 70)]

3. 类(class)—— 面向对象基础

Python 是完全面向对象的语言,一切皆对象。

基本定义与使用

class Person:
    # 类属性(所有实例共享)
    species = "人类"

    # 初始化方法(构造器)
    def __init__(self, name, age):
        # 实例属性
        self.name = name
        self.age = age
        self.__money = 10000   # 私有属性(名字改写:_Person__money)

    # 实例方法
    def say_hello(self):
        print(f"大家好,我是{self.name},今年{self.age}岁")

    # 类方法(操作类属性)
    @classmethod
    def get_species(cls):
        return cls.species

    # 静态方法(不依赖实例和类)
    @staticmethod
    def is_adult(age):
        return age >= 18

# 使用
p1 = Person("小明", 20)
p1.say_hello()               # 大家好,我是小明,今年20岁

print(Person.get_species())  # 人类
print(Person.is_adult(16))   # False

私有属性与封装

print(p1._Person__money)     # 10000(可以访问,但不推荐)
# p1.__money                 # AttributeError

继承与多态

class Student(Person):
    def __init__(self, name, age, school):
        super().__init__(name, age)   # 调用父类构造方法
        self.school = school

    # 方法重写(多态)
    def say_hello(self):
        print(f"大家好,我是{self.school}的学生{self.name},今年{self.age}岁")

s1 = Student("小红", 18, "北大")
s1.say_hello()
# 大家好,我是北大的学生小红,今年18岁

常用魔法方法(dunder methods)

class Book:
    def __init__(self, title, price):
        self.title = title
        self.price = price

    def __str__(self):           # print() 时调用
        return f"{self.title} - ¥{self.price}"

    def __len__(self):           # len() 时调用
        return len(self.title)

    def __add__(self, other):    # + 运算符
        return self.price + other.price

b1 = Book("Python入门", 59)
b2 = Book("Java高级", 89)

print(b1)           # Python入门 - ¥59
print(len(b1))      # 8
print(b1 + b2)      # 148

快速对比总结表

内容字典 (dict)函数类 (class)
核心作用存储键值对封装可复用逻辑封装数据 + 行为
创建方式{} / dict()def / lambdaclass
访问方式d[key] / get()func()obj.attr / obj.method()
常用场景配置、计数、映射工具函数、算法、处理逻辑建模实体、面向对象设计
高级用法推导式、setdefault*args, **kwargs继承、多态、魔法方法

练习小建议(快速上手)

  1. 用字典实现一个简单的单词计数器
  2. 写一个函数,接受任意参数,返回它们的类型和值
  3. 定义一个 Car 类,包含品牌、速度、油量,支持加速、加油、鸣笛等方法

如果你想针对上面任意一部分深入(例如字典的高级用法、闭包、装饰器、类的多继承、属性装饰器等),可以告诉我,我继续展开讲解。

祝你 Python 学习顺利!

文章已创建 4631

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部