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.小结

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

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

相关推荐
Dxy12393102161 小时前
Python观察者模式详解:从理论到实战
开发语言·python·观察者模式
hqxstudying1 小时前
J2EE模式---前端控制器模式
java·前端·设计模式·java-ee·状态模式·代码规范·前端控制器模式
开开心心就好2 小时前
Excel数据合并工具:零门槛快速整理
运维·服务器·前端·智能手机·pdf·bash·excel
im_AMBER3 小时前
Web开发 05
前端·javascript·react.js
Au_ust3 小时前
HTML整理
前端·javascript·html
安心不心安3 小时前
npm全局安装后,依然不是内部或外部命令,也不是可运行的程序或批处理文件
前端·npm·node.js
迷曳4 小时前
28、鸿蒙Harmony Next开发:不依赖UI组件的全局气泡提示 (openPopup)和不依赖UI组件的全局菜单 (openMenu)、Toast
前端·ui·harmonyos·鸿蒙
爱分享的程序员4 小时前
前端面试专栏-工程化:29.微前端架构设计与实践
前端·javascript·面试
上单带刀不带妹4 小时前
Vue3递归组件详解:构建动态树形结构的终极方案
前端·javascript·vue.js·前端框架
-半.4 小时前
Collection接口的详细介绍以及底层原理——包括数据结构红黑树、二叉树等,从0到彻底掌握Collection只需这篇文章
前端·html