python - 实际上作为参数传递给函数的是什么?

标签 python

 def f(a):
     for i in a:
         print i 
 >>> f(i for i in [1,2,3])
 1
 2
 3
 >>> f([i for i in [1,2,3]])
 1
 2
 3
 >>> f((i for i in (1,)))
 1

我在第一个示例中传递了元组或列表吗?

它们之间有什么区别?

最佳答案

您传递一个生成器和一个列表:

>>> def f(a):
...     print type(a)
...     for i in a:
...         print i 
... 
>>> f(i for i in [1,2,3])
<type 'generator'>
1
2
3
>>> 
>>> f([i for i in [1,2,3]])
<type 'list'>
1
2
3
>>> f((i for i in (1,)))
<type 'generator'>
1
>>> 

两者都可以在 for 循环中迭代,但工作方式不同。生成器每次迭代都会执行一条语句,列表(或另一个 Iterables)是一段​​数据,它的所有元素都存在,无需任何操作。
有关发电机的更多信息 here

关于python - 实际上作为参数传递给函数的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616647/

相关文章:

python - ipyparallel view.sync_import 不绑定(bind)到附加名称

python - pliSTLib 无法读取 Safari 的 plist 文件

python - "AttributeError: ' _NotSet ' object has no attribute ' lower '"使用 Pyinstaller 将 PRAW python 文件转换为 exe 时

python - 在 Raspberry 上使用 python 读取原始以太网数据包

Python 的 psutils——它会反射(reflect)类似于 top/monit 的 CPU 负载吗?

python - 如何获取多索引数据框前两个索引的字典

python - Python 如何实现它的类型对象,即类型总是类型?

python - 将 pandas DataFrame 转换为没有额外列的记录数组

python - 为什么 venv 在 rsync 后中断?

Python大文件解析与re