假设我有一个清单
x = [1,2,3,4,5,6,7,8,9,10]
我想通过调用函数打印此列表。这是我打印列表的功能
def print_list(list_received):
for var in list_received:
print var
我正在呼叫print_list()
,如下所示
print_list(x)
| |
method arguement
name
因此,上面的函数调用看起来类似于我们在C / C ++中所做的那样。
现在假设我有一个名为my_list
my_list = [1,2,3,4,5,6,7,8,9,10]
我希望将my_list
转换为元组&我会像下面这样做
my_tuple = tuple(my_list)
现在这里tuple(my_list)
被称为类型转换,因为我在这里读到http://www.pitt.edu/~naraehan/python2/data_types_conversion.html
现在类型转换上方与我们过去C
中的C++
或C
完全不同
int x = 10;
char ch = (char)x
我首先怀疑的是,将C
改为(tuple)my_list
到tuple(my_list)
的理性理论或考虑是什么?答案可能是Python
不是C
,但我想知道更多。
我的第二个问题是python解释器将如何判断它是函数调用还是类型转换函数,即调用my_print(x)
和{{1}的约定看起来很相似但实际上两者都在做不同的工作。
答案 0 :(得分:3)
my_tuple = tuple(my_list)
从my_list
对象创建类元组的实例。由于创建了一个新对象,它不像C (tuple)my_list
那样的类型转换。
my_tuple = tuple(my_list)
更接近C ++ my_tuple = new Tuple(my_list)
。
答案 1 :(得分:2)
为什么应将其识别为正常功能或类型转换功能?这只是一个功能。
或者因为python中的几乎所有东西都是一个对象,实际上函数也是一种实现__call__
的对象。
此外,实际上没有类型转换功能。 tuple
充当构造函数,它接受一个可迭代对象并返回一个元组对象。
答案 2 :(得分:0)
我可以回答你的第二个问题,Python解释器在范围的基础上工作(本地,封闭,全局,默认)。
例如:
def tuple(l_list):
print l_list
l_list = [1,2]
tuple(l_list)
在上面的情况下,它不会进行类型转换,而是执行上面的功能。为什么因为一旦我们开始执行它就会搜索元组对象并完成工作。如果它没有找到,那么它会考虑默认关键字并进行转换。简而言之,它纯粹是在物体的范围内