当口头谈论方法时,我永远不确定是否使用单词参数或参数或其他东西.无论哪种方式,其他人都知道我的意思,但是什么是正确的,这些条款的历史是什么?
我是一名C#程序员,但我也想知道人们是否使用不同语言的不同术语.
根据记录,我是自学成才,没有计算机科学的背景.(请不要告诉我阅读Code Complete,因为我问这个是为了其他没有史蒂夫麦康奈尔精彩书籍的人的利益.)
普遍的共识似乎是在团队环境中交替使用这些术语是可以的.除非您定义精确的术语; 那么你也可以使用" 形式参数/参数"和" 实际参数/参数"来消除歧义.
def foo(_, _='override')
_
end
p foo("bye bye")
p foo("hello", "world")
Run Code Online (Sandbox Code Playgroud)
输出:
"override"
"hello"
Run Code Online (Sandbox Code Playgroud)
我能理解结果是:
"override"
"world"
Run Code Online (Sandbox Code Playgroud)
甚至:
"bye bye"
"hello"
Run Code Online (Sandbox Code Playgroud)
但是我得到的结果让我感到困惑.
例如,在JavaScript中我们可以编写这样的程序:
var a = 1;
testFunction(++a, ++a, a);
function testFunction(x, y, z){
document.writeln("<br />x = " + x);
document.writeln("<br />y = " + y);
document.writeln("<br />z = " + z);
}
Run Code Online (Sandbox Code Playgroud)
我们会得到一个输出:
x = 2
y = 3
z = 3
Run Code Online (Sandbox Code Playgroud)
这意味着在JavaScript中从左到右真正地评估参数.在C中我们会得到输出
x = 3
y = 3
z = 3
Run Code Online (Sandbox Code Playgroud)
我想知道我们是否可以在Python中做同样的事情,或者它是不可能的,因为它是价值参考语言的传递?
我做了一个简单的程序,但我不认为这证明了什么:
x = 2
def f(x, y, z):
print(x, y, z)
f(x*2, x*2, x**2)
print(x)
Run Code Online (Sandbox Code Playgroud)
4 4 4
2
Run Code Online (Sandbox Code Playgroud)
当我调用它时,Python不会让我在函数参数中做任何新的赋值(例如f(x=4, x, x)或类似的东西).