function和procedure有什么区别

“function”和“procedure”是编程里常用来描述“一段可复用代码”的两个词,区别主要取决于语言和语境。很多初学者在写代码或读文档时会遇到它们,想知道到底该叫哪个、用哪个。
基本含义与常见用法
一般来说,function(函数)强调“有返回值”:你给它输入参数,它计算后返回一个结果,比如求平均值、格式化字符串。procedure(过程)则强调“执行一系列操作”,不一定返回结果,比如打印日志、保存文件、修改界面状态。在 Pascal、SQL 等语言里,这种区分是语法层面的:function 用返回值,procedure 不返回。但在 Python、JavaScript 等语言里,统称 function,procedure 更多是概念上的说法。
常见困惑
很多人以为两者是绝对对立,其实不然。有些语言只有 function 一种关键字,却既能返回值也能不返回值;有些语言(如 SQL 的存储过程)用 procedure 表示可执行多步操作、可带输出参数的模块。另一个常见问题是:不返回值的函数算不算 procedure?答案取决于你所在语言社区的习惯,不必强行统一。
怎么判断或怎么选
看三点:第一,看你用的语言文档怎么定义,遵循官方术语;第二,看这段代码是否需要“产出结果”——需要就用 function 的思路,不需要就用 procedure 的思路;第三,看团队规范,保持命名和注释一致。实际写代码时,不必纠结标签,先保证职责单一、参数清晰、副作用可控,这才是关键。