百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python黑科技:用列表和字典玩转函数存储与调用,代码效率翻倍

off999 2025-06-10 17:26 43 浏览 0 评论

在日常Python开发中,你是否经常遇到这样的场景:需要根据不同的条件执行不同的函数,代码里堆满了if-else分支?或者需要批量处理一系列相似操作,却只能写重复的调用代码?今天教你通过列表和字典实现优雅的函数存储与调用!


函数:Python中的一等公民

在Python中,函数不仅仅是可执行代码块,它们还是一等对象(First-Class Objects)。这意味着函数可以:

  1. 被赋值给变量
  2. 存储在数据结构中
  3. 作为参数传递给其他函数
  4. 作为其他函数的返回值

这个特性为我们提供了极大的灵活性,让我们看看如何利用它优化代码。


列表:函数的顺序执行利器

适用场景:需要按顺序执行多个函数的场景(如数据处理管道)

# 定义数据处理函数
def clean_data(data):
    print("清洗数据...")
    return data.strip()

def transform_data(data):
    print("转换数据格式...")
    return data.upper()

def save_data(data):
    print(f"保存数据: {data}")
    return True

# 创建函数管道
processing_pipeline = [
    clean_data,
    transform_data,
    save_data
]

# 执行数据处理流程
raw_data = "  python rocks!  "
result = raw_data

for func in processing_pipeline:
    result = func(result)
    print(result)

优势

  • 新增处理步骤只需修改列表
  • 执行顺序一目了然
  • 方便批量操作(如机器学习特征工程)

字典:函数的动态调度中心

适用场景:需要根据输入参数动态选择函数的场景(如命令分发)

# 定义计算操作
def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

# 创建操作映射字典
operations = {
    'add': add,
    'subtract': subtract,
    'multiply': multiply,
    'power': lambda a,b:a**b  # 使用lambda表达式
}
# 用户选择操作
user_choice = 'power'
result = operations[user_choice](2, 3)
print(f"2的3次方结果是: {result}")  # 输出: 8

为什么选择这种方式?

  1. 代码简洁性:减少大量if-else分支
  2. 扩展便捷性:新增功能只需修改数据结构
  3. 维护友好性:所有函数映射关系一目了然
  4. 动态灵活性:运行时修改函数映射关系
  5. 解耦设计:函数定义与调用逻辑分离

性能优化小贴士

  1. 使用functools.lru_cache缓存计算结果
  2. 对于简单操作,lambda比完整函数定义更轻量
  3. 字典查找比列表遍历更高效(O(1) vs O(n))
  4. 使用结构模式匹配(Python 3.10+)作为补充
# Python 3.10+ 结构模式匹配
match user_command:
    case "start":
        start_process()
    case "stop":
        stop_process()
    case "status":
        check_status()

实战案例:构建计算器应用

from math import sqrt

operations = {
    '+': lambda a, b: a + b,
    '-': lambda a, b: a - b,
    '*': lambda a, b: a * b,
    '/': lambda a, b: a / b,
    '√': lambda a: sqrt(a),
    '**': lambda a, b: a**b
}

def calculator():
    while True:
        expr = input("输入表达式 (例如 5 + 3): ").split()
        
        if not expr:
            break
            
        op = expr[1]
        if op in operations:
            try:
                a = float(expr[0])
                # 处理一元操作符
                if len(expr) == 2:
                    result = operations[op](a)
                else:
                    b = float(expr[2])
                    result = operations[op](a, b)
                print(f"结果: {result}")
            except Exception as e:
                print(f"错误: {e}")
        else:
            print("不支持的操作符")

calculator()

掌握函数存储与调用的艺术,能让你的Python代码从"能用"跃升到"优雅"。列表和字典存储函数都是Python开发者的必备技能,当你在代码中看到冗长的if-else链时,不妨试试这种更Pythonic的解决方案!你有在项目中用过这种技巧吗?欢迎分享你的实战经验!

<script type="text/javascript" src="//mp.toutiao.com/mp/agw/mass_profit/pc_product_promotions_js?item_id=7512256478669963826"></script>

相关推荐

捕鱼达人千炮版下载官网(捕鱼达人经典原版下载)

要在捕鱼达人千炮版中进行交易,首先需要进入游戏的交易中心。在交易中心中,你可以浏览其他玩家发布的交易信息,或者自己发布交易需求。如果你找到了感兴趣的交易,可以与对方进行私聊,商讨交易细节和价格。一旦双...

游戏盒大全 安装(游戏盒大全 安装最新版)

要安装统一游戏盒子,首先需要在您的设备上下载并安装统一游戏盒子的应用程序。您可以在应用商店中搜索统一游戏盒子,然后点击安装按钮进行下载。安装完成后,打开应用程序并按照提示进行设置和登录。一旦登录成功,...

闹钟下载(闹钟下载正版)

苹果下载闹钟铃声方法如下:1.在手机上下载好爱思助手app,然后打开“爱思助手”软件,点击打开该app。2.点击进去后,点击页面底部的“发现”按钮,在“发现”页面中,找到“铃声”。3.之后在“铃声”的...

高清免费观看电视软件(永久免费观看的电视剧软件)

1.有免费在线看高清电视的网站。2.因为有些网站提供免费的高清电视节目,可以通过网络直接观看,不需要付费。3.除了免费在线观看高清电视的网站,还有一些付费的订阅平台,可以提供更多的高清电视节目选...

交管12123成绩查询(交管12123成绩查询怎么查)
  • 交管12123成绩查询(交管12123成绩查询怎么查)
  • 交管12123成绩查询(交管12123成绩查询怎么查)
  • 交管12123成绩查询(交管12123成绩查询怎么查)
  • 交管12123成绩查询(交管12123成绩查询怎么查)
flash下载安卓版下载(flashget安卓下载)

通过iTunes上的iTunesstore或者iPhone上的AppStore下载要是越狱版本91助手也可以下载而且有更多免费的游戏就是说你的电脑没有flash插件,需要安装flash插件才能...

模拟农场20(模拟农场20国产收割机)
  • 模拟农场20(模拟农场20国产收割机)
  • 模拟农场20(模拟农场20国产收割机)
  • 模拟农场20(模拟农场20国产收割机)
  • 模拟农场20(模拟农场20国产收割机)
电子公章印章在线制作(电子公章印章在线制作教程)

首先说明:电子公章制作需要有授权才能够进行!公章做成电子版可以通过Word来进行。具体方法步骤如下:1、准备工作:首先需要你(妳)将实体印章拍成图片格式上传到计算机保存桌面。2、制作操作:打开计算机办...

12306掐点抢票技巧(抢不到票去人工窗口能买到吗)

1、提前做好准备:在12306官网上预订车票前,先登录账号并保存好乘车人信息和常用联系人信息。此外,在购票日前,可以提前进行车次和座位的查询和选择。2、时间选择:00:00到08:00。3、车次选择:...

qq炫舞官网掌上炫舞(qq炫舞官方网站最新活动)

你好,进入掌上炫舞商城的方法如下:1.打开掌上炫舞游戏,进入游戏主界面。2.点击屏幕左下角的“商城”按钮。3.进入商城后,可以选择购买游戏中的道具、礼包等物品。4.在商城中选择要购买的物品后,...

西瓜音乐免费听(西瓜音乐免费听歌的app)
西瓜音乐免费听(西瓜音乐免费听歌的app)

TOP15:少年原唱:梦然热度值:1,013,022我还是从前那个少年没有一丝丝改变抖音梦然-《少年》mvTOP14:好想爱这个世界啊原唱:华晨宇热度值:1,013,096不想离开当你的笑容绽开这世界突然填满色彩华晨宇新歌《好想...

2026-02-03 17:43 off999

酷酷狗app正版下载安装(酷狗音乐下载最新版酷)

卖八个金,目前六阶的酷酷狗以及松鼠都是属于不错的两个战宠,酷酷狗的平A伤害十分之高,与黑霸对比也不会落下风,当我们使用技能还可以增加大量伤害,大约等于黑霸的两倍。虽然说松鼠的伤害对比酷酷狗来说十分一...

迅雷app(迅雷app下载安装官网手机版)
迅雷app(迅雷app下载安装官网手机版)

首先打开迅雷app,点击我的转存然后点击我们下载的文件然后点击左下角下载就好拉迅雷下载完的视频是直接保存到我的转存里。如果要想再把我的转存里面文件,下载到手机上,首先选择底部云盘图标进入我的转存页面,找到里面要下载的视频,勾选打√,下面会出...

2026-02-03 17:03 off999

苹果itunes在哪里打开(itunes从哪打开)
苹果itunes在哪里打开(itunes从哪打开)

1、将你的iPhone关机。2、同时按住开关机键和Home键。3、当你看见白色的苹果Logo时,请松开开关机键,并继续保持按住Home键。4、开启iTunes,等待其提示你进入恢复模式后,即可按住键盘上的Shift键,点击“恢复”,选择相应...

2026-02-03 16:51 off999

如何申请qq号(如何申请qq号详细步骤)

只需在网页上申请即可获得QQ号码或Email帐号,无需任何费用。为了打击使用自动机进行批量申请QQ帐号的行为,我们对网页申请进行了部分限制,有可能对少数申请造成影响。手机免费申请(仅支持申请QQ号码)...

取消回复欢迎 发表评论: