Python多变量声明
我正在读一本书,他们在书中写道:Python多变量声明,python,scipy,Python,Scipy,我正在读一本书,他们在书中写道: fp1, residuals, rank, sv, rcond = sp.polyfit(x, y, 1, full=True) 似乎sp.polyfit方法以某种顺序为这些变量赋值 例如: >>> print("Model parameters: %s" % fp1) Model parameters: [ 2.59619213 989.02487106] >>> print(res) [ 3.17389767e+08]
fp1, residuals, rank, sv, rcond = sp.polyfit(x, y, 1, full=True)
似乎sp.polyfit
方法以某种顺序为这些变量赋值
例如:
>>> print("Model parameters: %s" % fp1)
Model parameters: [ 2.59619213 989.02487106]
>>> print(res)
[ 3.17389767e+08]
(我不知道在哪里定义了res
,但是…)这是Python创建对象的方式吗
在其他语言中,您可以执行以下操作:
Foo myFooObject = bar.GenerateFoo();
myFooObject.foo();
myFooObject.bar();
python的一般语法以这种方式让我感到困惑。感谢您帮助我理解。这与对象创建无关——这是python中解包(或更一般地说是序列)的一个示例 元组是一个固定的项目序列,您可以通过如下命令将一个集合分配给另一个集合
a, b, c = 1, 'two', 3.0
这和
a = 1
b = 'two'
c = 3.0
(请注意,您可以使用此语法交换项目:a,b=b,a
)
所以在你的例子中发生的是,有一条线
return fp, resides, rank, eval, rcondnum
您正在将变量分配给这些对象。这与对象创建无关——这是python中解包(或更一般地说是序列)的一个示例 元组是一个固定的项目序列,您可以通过如下命令将一个集合分配给另一个集合
a, b, c = 1, 'two', 3.0
这和
a = 1
b = 'two'
c = 3.0
(请注意,您可以使用此语法交换项目:a,b=b,a
)
所以在你的例子中发生的是,有一条线
return fp, resides, rank, eval, rcondnum
您正在为这些变量赋值。这是元组解包
假设你有一些元组:
t = (1, 2, 3)
然后您可以使用它设置三个变量:
x, y, z = t # x becomes 1, y 2, y 3
函数sp.polyfit只返回一个元组
实际上,它适用于任何iterable,不仅仅是元组,但使用元组是目前最常见的方法。此外,iterables中的元素数必须与变量数完全相等。这是元组解包
假设你有一些元组:
t = (1, 2, 3)
然后您可以使用它设置三个变量:
x, y, z = t # x becomes 1, y 2, y 3
函数sp.polyfit只返回一个元组
实际上,它适用于任何iterable,不仅仅是元组,但使用元组是目前最常见的方法。此外,iterables中的元素数必须与变量数完全相等。一个方法返回多个变量似乎很奇怪。我不记得在其他语言(C#、VB、Java、PHP)中看到过这种情况。这是Python的事情吗?其他语言必须做更多的工作来做同样的事情(返回一个结构、一个类实例或一个hashmap…),这将取代(某些)其他语言的Python所没有的东西(或者不是微不足道的):无法更改传递给函数的变量的值。方法返回多个变量似乎很奇怪。我不记得在其他语言(C#、VB、Java、PHP)中看到过这种情况。这是Python的事情吗?其他语言必须做更多的工作来做同样的事情(返回一个结构、一个类实例或一个hashmap…)这取代了(某些)其他语言的Python所没有的东西(或者不是微不足道的):你不能更改传递给函数的变量的值。知道在哪里
print(res)
是否正在定义?我想代码上写的是res
,但他们的意思是说残差
?我想是的,我甚至不知道它是哪本书也很难说出来:-)对不起,它正在用Python构建机器学习系统。我只是想理解其中的代码。无论如何,谢谢。知道在哪里定义了print(res)
?我想代码上写的是res
,但他们的意思是说残差
?我想是的,我甚至不知道它是哪本书也很难说出来:-)对不起,它正在用Python构建机器学习系统。我只是想理解其中的代码。无论如何,谢谢你。