用最接地气的方式讲最专业的知识
“call by passing”这个说法其实有点让人摸不着头脑,因为标准的编程术语里并没有这个说法,通常我们说的是“call by value”(按值传递)和“call by reference”(按引用传递)。不过,有时候人们会把“call by passing”当作一个笼统的说法来指代函数调用时参数的传递方式。
在编程中,函数调用的时候,参数是通过“传递”给函数的。这里的“传递”可以是“按值传递”,也就是把变量的值复制一份传过去;也可以是“按引用传递”,也就是把变量的地址传过去,这样函数内部对参数的修改会影响到原始数据。
所以,如果你看到有人写“call by passing”,大概率是想表达“函数调用时参数是怎么传进去的”。这种说法虽然不太规范,但大家也能理解。
其实这可能是个翻译问题或者口语化表达。比如在中文环境下,有些人可能会直接说“按值传递”或“按引用传递”,但有时候也会说“传值”、“传引用”、“传递参数”,这些都属于“call by passing”的范畴。
再举个例子,当你在 Python 中调用一个函数,传入的是一个整数,这时候就是“按值传递”;而如果传入的是一个列表,Python 实际上是把列表的引用传给了函数,这种情况下就更接近“按引用传递”。