电脑知识铺
第二套高阶模板 · 更大气的阅读体验

Python函数教程:从零开始写实用小工具

发布时间:2025-12-15 05:12:16 阅读:105 次

刚学Python时,很多人卡在函数这关。其实函数没那么玄乎,它就像你家厨房里的电饭煲——按一下按钮,它就自动煮饭,不用每次重新发明怎么加热米粒。

函数是什么?

简单说,函数就是把一段代码打包命名,以后想用直接“喊名字”。比如你想算几个数的平均值,每次都写一遍加法除法太累,不如写个函数一次搞定。

def calculate_average(numbers):
    total = sum(numbers)
    count = len(numbers)
    return total / count

scores = [85, 92, 78, 96]
print(calculate_average(scores))

上面这段代码定义了一个叫 calculate_average 的函数,传进去一个列表,它就能返回平均值。以后处理考试成绩、月度开支,直接调用就行。

带默认参数的函数更省事

有些情况你希望函数有点“默认操作”。比如发通知,默认走站内信,但也可以指定发邮件或短信。

def send_notification(message, method="web"):
    print(f"发送消息:{message},方式:{method}")

send_notification("您有新订单")  # 默认走站内
send_notification("密码已重置", method="email")  # 指定邮件

这样调用时如果不填 method,默认就是 web,省得每次啰嗦。

函数也能返回多个值

有时候一个函数干完活,想告诉你好几件事。比如查网络状态,既要IP又要端口。

def get_server_info():
    ip = "192.168.1.100"
    port = 8080
    return ip, port  # 返回两个值

ip_addr, server_port = get_server_info()
print(f"服务地址:{ip_addr}:{server_port}")

虽然看着像返回了两个东西,其实是打包成元组,解包时分开接住就行。

嵌套函数:藏在里面的帮手

有些功能只在某个函数里用到,没必要暴露出去。比如验证用户输入时,内部写个小检查函数。

def process_user_data(name, age_str):
    def is_valid_age(age_text):
        return age_text.isdigit() and 0 < int(age_text) < 150
    
    if is_valid_age(age_str):
        age = int(age_str)
        print(f"用户 {name},年龄 {age}")
    else:
        print("年龄格式不对")

process_user_data("小王", "25")

这里的 is_valid_age 就是小助手,外面没法直接调它,只服务于当前流程。

实际应用场景:自动配置端口映射

假设你在家里搭了个Web服务,每次重启都要手动设路由器端口转发。可以用Python写个脚本,封装成函数自动执行。

def setup_port_forward(protocol, internal_ip, external_port, internal_port):
    print(f"正在设置 {protocol} 转发...")
    print(f"外网端口 {external_port} → {internal_ip}:{internal_port}")
    # 这里可以接入真实的路由器API

# 批量设置
setup_port_forward("TCP", "192.168.1.100", 80, 8000)
setup_port_forward("UDP", "192.168.1.100", 554, 554)

把重复操作变成函数调用,既不容易出错,改起来也方便。哪天换IP,改一处就行。

函数不是语法炫技,而是让代码更像工具箱。写多了你会发现,真正高效的程序员,不是写得多快,而是会把常用动作封装好,下次顺手拿来就用。