相关疑难解决方法(0)

参数和参数之间有什么区别?

当口头谈论方法时,我永远不确定是否使用单词参数参数或其他东西.无论哪种方式,其他人都知道我的意思,但是什么是正确的,这些条款的历史是什么?

我是一名C#程序员,但我也想知道人们是否使用不同语言的不同术语.

根据记录,我是自学成才,没有计算机科学的背景.(请不要告诉我阅读Code Complete,因为我问这个是为了其他没有史蒂夫麦康奈尔精彩书籍的人的利益.)

摘要

普遍的共识似乎是在团队环境中交替使用这些术语是可以的.除非您定义精确的术语; 那么你也可以使用" 形式参数/参数"和" 实际参数/参数"来消除歧义.

language-agnostic parameters arguments terminology

661
推荐指数
21
解决办法
22万
查看次数

这个结果背后的逻辑是什么?

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)

但是我得到的结果让我感到困惑.

ruby

24
推荐指数
1
解决办法
722
查看次数

如何证明参数评估在Python中"从左到右"?

例如,在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)或类似的东西).

python parameter-passing operator-precedence

8
推荐指数
1
解决办法
1232
查看次数