Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么是作为参数传递给函数的?_Python - Fatal编程技术网

Python 什么是作为参数传递给函数的?

Python 什么是作为参数传递给函数的?,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 定义f(a): ... 打印类型(a) .

在第一个示例中,我是否传递了一个元组或列表


它们之间有什么不同?

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

 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
定义f(a): ... 打印类型(a) ... 对于我来说,在一个: ... 打印i ... >>>f(i代表[1,2,3]中的i) 1. 2. 3. >>> >>>f([1,2,3]]中的i代表i) 1. 2. 3. >>>f((i代表(1,))中的i) 1. >>>
两者在for循环中都是可移植的,但工作方式不同。生成器每次迭代都执行一条语句,列表(或另一个Iterables)是一段数据,其所有元素都不需要任何操作
关于生成器的更多信息

您不想检查类型,因为这样会破坏多态性的目的。但是,如果确实想知道对象的类型,可以调用内置的type()函数

>>> 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
>>> 
#Python 3.x
a=[1,2,3]
b=(1,2,3)
类型(a)
类型(b)

您传递了一个生成器。尝试将行
打印类型(a)
添加到函数中。列表中的每个元素都是迭代的
#Python 3.x
a=[1,2,3]
b=(1,2,3)
type(a)
<class 'list'>
type(b)
<class 'tuple'>