python中的函数调用和类型转换?

时间:2018-06-04 09:56:10

标签: python python-2.7 type-conversion

假设我有一个清单

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_listtuple(my_list)的理性理论或考虑是什么?答案可能是Python不是C,但我想知道更多。

我的第二个问题是python解释器将如何判断它是函数调用还是类型转换函数,即调用my_print(x)和{{1}的约定看起来很相似但实际上两者都在做不同的工作。

3 个答案:

答案 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)

在上面的情况下,它不会进行类型转换,而是执行上面的功能。为什么因为一旦我们开始执行它就会搜索元组对象并完成工作。如果它没有找到,那么它会考虑默认关键字并进行转换。简而言之,它纯粹是在物体的范围内