Jam*_*mes 15 python return-value function-calls
因此,Python函数可以返回多个值.让我感到震惊的是,如果可能的话,这将是方便的(尽管可读性稍差).
a = [[1,2],[3,4]]
def cord():
return 1, 1
def printa(y,x):
print a[y][x]
printa(cord())
Run Code Online (Sandbox Code Playgroud)
......但事实并非如此.我知道你可以通过将两个返回值转储到临时变量中来做同样的事情,但它看起来并不优雅.我还可以将最后一行重写为"printa(cord()[0],cord()[1])",但这会执行两次cord().
有一种优雅,有效的方法吗?或者我应该只看到关于过早优化的引用并忘记这一点?
Dav*_*d Z 23
printa(*cord())
Run Code Online (Sandbox Code Playgroud)
在*这里有一个论点展开操作...好,我忘记了它在技术上叫,但在这方面,需要一个列表或元组,并将其扩展了这样的功能,看到每个列表/元组元素作为单独的参数.
它基本上与*您可能用于捕获函数定义中的所有非关键字参数相反:
def fn(*args):
# args is now a tuple of the non-keyworded arguments
print args
fn(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
版画 (1, 2, 3, 4, 5)
fn(*[1, 2, 3, 4, 5])
Run Code Online (Sandbox Code Playgroud)
做同样的事.
试试这个:
>>> def cord():
... return (1, 1)
...
>>> def printa(y, x):
... print a[y][x]
...
>>> a=[[1,2],[3,4]]
>>> printa(*cord())
4
Run Code Online (Sandbox Code Playgroud)
这位明星基本上说"使用这个集合的元素作为位置参数." 您可以使用两个星形对关键字参数的dict执行相同的操作:
>>> a = {'a' : 2, 'b' : 3}
>>> def foo(a, b):
... print a, b
...
>>> foo(**a)
2 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7906 次 |
| 最近记录: |