首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:同名的函数和变量

Python:同名的函数和变量
EN

Stack Overflow用户
提问于 2014-03-04 10:33:14
回答 3查看 27.3K关注 0票数 19

为什么我不能再次调用这个函数?或者,我怎么才能做到呢?

假设我有这个函数:

代码语言:javascript
复制
def a(x, y, z):
 if x:
     return y
 else:
     return z

我用以下方式调用它:

代码语言:javascript
复制
print a(3>2, 4, 5)

我得4分。

但是假设我声明了一个与函数同名的变量(错误地):

代码语言:javascript
复制
a=2

现在,如果我尝试这样做:

代码语言:javascript
复制
a=a(3>4, 4, 5)

或者:

代码语言:javascript
复制
a(3>4, 4, 5)

我会得到这样的错误:"TypeError:'int‘对象不可调用“

不能将变量'a‘赋值给函数吗?

EN

Stack Overflow用户

发布于 2014-03-04 10:59:59

Python中的名称通常是特定类型的identifiers,更像是命名一个存储变量/函数/方法或Python语言中的任何对象的框。当您重新分配时,您只是重命名了一个框。

你可以通过下面的操作找到答案。

最初,在位置140515915925784a分配了一个值9。只要我对一个函数使用相同的标识符,a就会在4512942512中引用一个包含该函数地址的框

a重新分配给3会再次将a指向不同的地址。

代码语言:javascript
复制
>>> a = 9
>>> id(a)
140515915925784
>>> def a(x):
...     return x
...
>>> id(a)
4512942512
>>> a
<function a at 0x10cfe09b0>
>>>
>>>
>>>
>>> a = 3
>>> id(a)
140515915925928
>>> a
3
>>>
票数 7
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22161717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档