代码之家  ›  专栏  ›  技术社区  ›  Achal

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

  •  1
  • Achal  · 技术社区  · 6 年前

    假设我有一个清单

    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]
    

    我想改变 我的清单 对tuple&我将执行如下操作

    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 元组(我的清单) ?答案可能是 Python 不是 C 但我想知道更多。

    我的第二个问题是python解释器如何决定 函数调用 类型转换函数 也就是说双方的通话约定 my_print(x) 元组(我的清单) 看起来很相似,但实际上两人都在做不同的工作。

    3 回复  |  直到 6 年前
        1
  •  3
  •   Jacques Gaudin    6 年前

    my_tuple = tuple(my_list) 从创建类元组的实例 my_list 反对。这可不是什么类型的演员 (tuple)my_list 在C中执行,因为创建了新对象。

    my_tuple=元组(my_list) 更接近C++ my_tuple = new Tuple(my_list) .

        2
  •  2
  •   Sraw    6 年前

    为什么应该将其标识为普通函数或类型转换函数?它只是一个函数。

    或者因为python中几乎所有的东西都是一个对象,实际上函数也是一种实现 __call__ .

    而且,实际上没有类型转换函数。 tuple 作为构造函数,它接受一个iterable对象并返回一个tuple对象。

        3
  •  0
  •   Kumar    6 年前

    我可以回答您的第二个问题,python解释器基于作用域(local、enclosing、global、default)工作。

    例如:

    def tuple(l_list):
         print l_list
    
    l_list = [1,2]
    tuple(l_list)
    

    在上面的例子中,它不执行类型转换,而是执行上面的函数。因为一旦我们开始执行,它就会搜索tuple对象并执行任务。如果没有找到,则考虑默认关键字并转换。简言之,它纯粹是关于物体的范围