Python零基础从入门到精通详细教程9-数据类型高级应用 - 下篇

1.简介

上一篇宏哥讲解和分享了数据类型得高级应用,由于时间的关系,还剩下一部分,宏哥今天就将剩下一部分在日常工作中或者面试中可能会遇到的数据类型的高级应用讲解和分享一下,希望对各位小伙伴或者童鞋们,有所帮助或者参考。好了,废话不多说,直接进入今天的主题:python数据类型的高级应用。

2.数据类型的高级应用

2.1字符串到复杂类型的转换

1.使用 json 模块:将 JSON 字符串转换为 Python 对象(如字典、列表)。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程9-数据类型高级应用 - 下篇
'''

# 3.导入模块
import json

json_str = '{"name": "Alice", "age": 30}'
data = json.loads(json_str)
print(data)  # 输出: {'name': 'Alice', 'age': 30}

🚀运行结果:

2.使用 ast.literal_eval:安全地将字符串解析为 Python 字面量(如列表、字典)。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程9-数据类型高级应用 - 下篇
'''

# 3.导入模块
import ast

s = "[1, 2, 3]"
result = ast.literal_eval(s)
print(result)  # 输出: [1, 2, 3]

🚀运行结果:

2.2自定义类类型转换

定义 intfloatstr 等魔术方法,控制对象如何转换为其他类型。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程9-数据类型高级应用 - 下篇
'''

# 3.导入模块
class Temperature:
    def __init__(self, celsius):
        self.celsius = celsius
    def __int__(self):
        return int(self.celsius)
    def __str__(self):
        return f"{self.celsius}°C"

temp = Temperature(25.5)
print(int(temp))  # 输出: 25
print(str(temp))  # 输出: 25.5°C

🚀运行结果:

2.3使用 pydantic 或 dataclasses

1.pydantic:自动验证和转换数据类型。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程9-数据类型高级应用 - 下篇
'''

# 3.导入模块
from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

# 自动将字符串 "30" 转换为整数
user = User(name="Alice", age="30")
print(user.age)  # 输出: 30

🚀运行结果:

2.dataclasses:结合类型注解实现类型转换。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-18
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程9-数据类型高级应用 - 下篇
'''

# 3.导入模块
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(x="1", y="2")  # 字符串会引发类型不匹配警告(需手动转换)
print(p)  # 输出: Point(x=1, y=2)

🚀运行结果:

2.4切片

切片是一种从序列中提取子序列的方式,可以通过一个范围来访问列表、元组、字符串等序列。切片语法为 start:stop:step

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程7-数据类型高级应用
'''

# 3.导入模块

a = [1, 2, 3, 4, 5]
b = a[1:4] # 获取索引为 1~3 的元素,即 [2, 3, 4]
c = a[:3] # 获取前三个元素,即 [1, 2, 3]
d = a[::2] # 获取每隔一个元素的所有元素,即 [1, 3, 5]
print(b,c,d)

🚀运行结果:

2.5解包

解包是一种将多个值从容器中提取并分配给多个变量的技巧。可以在变量名前添加 * 或 **,将可迭代对象解包成单独的变量。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程7-数据类型高级应用
'''

# 3.导入模块

a, *b, c = [1, 2, 3, 4, 5] # a=1, b=[2, 3, 4], c=5
print(a,b,c)

🚀运行结果:

2.6列表推导式

列表推导式是一种使用简洁的语法生成新列表的方法。它可以使用 for 循环和条件表达式来过滤和转换列表中的元素。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程7-数据类型高级应用
'''

# 3.导入模块

a = [x**2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64]
print(a)

🚀运行结果:

2.7字典推导式

字典推导式是一种使用简洁的语法生成新字典的方法。它可以使用 for 循环和条件表达式来构建键值对。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程7-数据类型高级应用
'''

# 3.导入模块

a = {x: x**2 for x in range(10) if x % 2 == 0} # {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
print(a)

🚀运行结果:

2.8生成器

生成器是一种可以迭代的对象,它在运行时动态生成数据,而不是先生成所有数据,然后再进行迭代。使用 yield 关键字可以将函数转换为生成器函数。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程7-数据类型高级应用
'''

# 3.导入模块

def fibonacci():

    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

f = fibonacci()
for i in range(10):
    print(next(f)) # 输出前 10 个斐波那契数列元素

🚀运行结果:

2.9装饰器

装饰器是一种在不修改函数源代码的情况下,扩展函数功能的方式。它本质上是一个函数,用于接收一个函数作为参数,并返回一个新的函数。

💎示例代码:

python 复制代码
# -*- coding:utf-8 -*-

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2025-06-16
@author: 北京-宏哥
北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货!)
Project: Python零基础从入门到精通详细教程7-数据类型高级应用
'''

# 3.导入模块

def add_one(func):
    def wrapper():
        return func() + 1
    return wrapper
@add_one
def get_number():
    return 1

print(get_number()) # 输出 2

🚀运行结果:

3.小结

今天又介绍了一些日常工作或者面试中可能遇到的一些其他高级数据类型的应用,有几个非常简单容易上手,但是有几个就需要好好理解消化,为后续的学习或者面试夯实基础。

好了,时间不早了,今天就分享和讲解到这里。希望对小伙伴或者童鞋们的有所帮助或者参考。

相关推荐
程序员黑豆2 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
To_OC3 小时前
踩了个 TS 的坑之后,我终于把 type 和 interface 掰明白了
前端·react.js·typescript
GreenTea3 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
浮生望3 小时前
前端API工程化:用 Mock 数据与 Axios 配置实现独立于后端的并行开发
前端
2603_965148113 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
万少3 小时前
给 DeepSeek Harness 装个"应用商店":一条命令,595 个插件随你逛
前端·javascript·后端
波波0074 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
Brown.alexis4 小时前
es6知识点1-自备使用
前端·ecmascript·es6
jufeng13075 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 8 篇】
python·ai agent·配置系统