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

python中的函数调用和类型转换?,python,python-2.7,type-conversion,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\u list()如下 print_list(x) | | method argument name my_tuple

假设我有一张清单

x = [1,2,3,4,5,6,7,8,9,10]
我想通过调用一个函数来打印这个列表。这是我打印列表的功能

def print_list(list_received):
        for var in list_received:       
                print var
我正在调用
print\u list()
如下

print_list(x)
    |      |
 method   argument
  name
my_tuple = tuple(my_list)
因此,上面的函数调用看起来类似于我们在C/C++中使用的函数调用

现在让我们假设我有一个名为
my_list

my_list = [1,2,3,4,5,6,7,8,9,10]
我想把
我的列表
转换成tuple&我会像下面这样做

print_list(x)
    |      |
 method   argument
  name
my_tuple = tuple(my_list)
现在这里这个
元组(我的列表)
被称为typecasting,正如我从这里读到的

现在上面的typecasting看起来与我们以前做的
C
C++
完全不同

int x = 10;
char ch = (char)x
我的第一个疑问是关于将
C
看起来像
(tuple)My_list
更改为
tuple(My_list)
的理性理论或考虑是什么?答案可能是
Python
不是
C
,但我想知道更多


我的第二个问题是python解释器将如何决定它是一个函数调用还是类型转换函数,即
My\u print(x)
元组(My\u list)的调用约定
看起来很相似,但实际上两者所做的工作不同。

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

或者,由于python中几乎所有的东西都是一个对象,实际上函数也是一种实现
\uuuu调用的对象


此外,实际上没有类型转换函数<代码>元组
充当构造函数,它接受一个iterable对象并返回一个元组对象

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

或者,由于python中几乎所有的东西都是一个对象,实际上函数也是一种实现
\uuuu调用的对象

此外,实际上没有类型转换函数<代码>元组
充当构造函数,它接受一个iterable对象并返回一个元组对象

my\u tuple=tuple(my\u list)
my\u list
对象创建类tuple的实例。由于创建了一个新对象,这与C中的类型转换(如
(tuple)my_list
)不同

< MyTuple tuple =元组(MyListList] MySuple = MySuple(MyLeLIST) .

< MyTytuple=tuple(MyListList])/Cudio>从MyOrList对象创建类元组实例。由于创建了一个新对象,这与C中的类型转换(如

(tuple)my_list
)不同


<代码> MyuthUpple = Muple Tuple = MyLoad 更接近C++ > MyTuple =新元组(MyListList] 。< /P> < P>我可以回答您的第二个问题,Python解释器是基于范围(局部、封闭、全局、默认)工作的。 例如:

def tuple(l_list):
     print l_list

l_list = [1,2]
tuple(l_list)

在上述情况下,它不进行类型转换,而是执行上述函数。为什么呢?因为一旦我们开始执行,它就会搜索元组对象并执行任务。若并没有找到,那个么它将考虑默认关键字并进行转换。简而言之,它纯粹是关于对象的作用域的

我可以回答您的第二个问题,Python解释器基于作用域(本地、封闭、全局、默认)工作

例如:

def tuple(l_list):
     print l_list

l_list = [1,2]
tuple(l_list)

在上述情况下,它不进行类型转换,而是执行上述函数。为什么呢?因为一旦我们开始执行,它就会搜索元组对象并执行任务。若并没有找到,那个么它将考虑默认关键字并进行转换。简而言之,它纯粹是在对象的范围上,但类型转换函数也是函数hanks@Ev.Kounis yes
tuple()
也是内置的。但是我可以在这里说我正在调用语句
tuple(my_list)
中的
tuple()
方法吗?函数调用和类型转换函数之间没有区别。您可以调用
tuple
函数。它返回一个元组。故事结束。但是通常在 C.C/代码>显式类型化不被看作函数调用,不是吗?在python中,
int(x)
和在C
(int)x
中,两者的工作原理相同,但约定不同,
x
是浮点变量。在python中,
int(x)
调用
x.\uuuuu int_uuuu()
,可以是
int.\uuuu
float.\uuu.\uu
numpy.int64.\uu int\uuu
等。根据
x
的类型,但类型转换函数也是函数hanks@Ev.Kounis yes
tuple()
也是内置的。但是我可以在这里说我正在调用语句
tuple(my_list)
中的
tuple()
方法吗?函数调用和类型转换函数之间没有区别。您可以调用
tuple
函数。它返回一个元组。故事结束。但是通常在 C.C/代码>显式类型化不被看作函数调用,不是吗?在python中,
int(x)
和在C
(int)x
中,两者的工作原理相同,但约定不同,
x
是浮点变量。在python中,
int(x)
调用
x.\uuuuu int_uuuu()
,可以是
int.\uuuu
float.\uuu.\uu
numpy.int64.\uu int
等。根据
x
的类型,我同意将
tuple
作为返回的tuple对象。但在内部,它将如何初始化/转换列表为元组?通过调用类的构造函数之类的方法?如果我错了,请纠正我?正如雅克·高丁所说,它确实像构造器一样工作。它不仅可以转换
list
,还可以转换任何可转换的对象。它不像构造函数那样工作:tuple是一个类是@bobrobbob
tuple
是一个类,但是
tuple
类的
初始化方法将初始化它。对不起,我只是为了避免误解而学究。它不像一个构造函数,它是一个构造函数,我同意
tuple
返回tuple对象。但在内部,它将如何初始化/转换lis