答案 0 :(得分:7)
这两个程序并不相同。 equals(#Creating Workflow here ,
workflow Start-Something {
Start-Transcript C:\temp\agent.log -IncludeInvocationHeader
$computers = gc "C:\temp\list.txt"
$source = "\\pathtodfsrootstore"
$dest = "c$\windows\temp\test2533212"
foreach -Parallel($computer in $computers) {
if (Test-Connection -Cn $computer -count 1 -quiet) {
Copy-Item -Force $source -Destination \\$computer\$dest -Recurse
#psexec.exe \\$computer cmd /c "c:\windows\temp\testv2533212\test.bat"
} else {
#You should log it somewhere
}
}
Stop-Transcript
}
#Calling Workflow
Start-Something
)的右侧一起进行评估。
这样做的:
=
与以下不同:
a=b
b=a+b
这实际上与:
相同a,b = b,a+b
您的示例实际上涵盖在Python documentation:
上第一行包含多个赋值:变量a和b同时获取新值0和1.在最后一行再次使用它,证明右边的表达式在任何之前都是先评估的的任务发生了。右侧表达式从左到右进行评估。
答案 1 :(得分:7)
行
a = b # Assigns the value of 'b' to 'a'
b = a + b # Adds the new value of 'a' to 'b'
而,
a, b = b, a+b
将b
的值分配给a
。将a
的现有值添加到b
。
答案 2 :(得分:5)
它在第二个例子中起作用的原因是因为a=b
在两者都完成之前不进行评估。因此,当它到达b=a+b
部分时,a
仍然是其之前的值。在您的第一个示例中,您在使用之前覆盖a
。在python中,当您以这种方式声明变量时,您实际上将它们用作元组。这意味着在整行完成之前,它们会保留原始值。一旦元组被解压缩,它们就会被覆盖。
答案 3 :(得分:2)
我在您的解决方案中看到了额外的标签,而且您的程序逻辑也是错误的。据我所知,通过写fib(5)
,您希望系列中的第5个斐波那契(即5)不是小于5的数字(即3)。
a=b
b=a+b
和
a,b = b,a+b
不相等。
请看下面的代码。
def fibonacci(num):
a,b=0,1;
counter = 2;
while(a<=):
a,b = b,a+b
counter += 1
return b
print fibonacci(5)