Python变量不能和它调用的函数同名,就像在PHP中一样?

Python变量不能和它调用的函数同名,就像在PHP中一样?,python,Python,在php中,这是可能的: function a(): return "b" a = a() 但是在python中。。我别无选择,只能将变量的名称更改为其他名称 a1 = a() “a”只需要吃“a”,就变成了“a”。新的“a”是它吃的东西,它是“a()”函数的输出 为什么在python中而不是在php中忽略此逻辑?python(与php不同)没有单独的变量和函数名称空间 在Python中调用函数时,实际上只需计算一个表达式(例如,a),该表达式的计算结果为函数对象,然后调用函数(

在php中,这是可能的:

function a():
   return "b"

 a = a()
但是在python中。。我别无选择,只能将变量的名称更改为其他名称

 a1 = a()
“a”只需要吃“a”,就变成了“a”。新的“a”是它吃的东西,它是“a()”函数的输出

为什么在python中而不是在php中忽略此逻辑?

python(与php不同)没有单独的变量和函数名称空间

在Python中调用函数时,实际上只需计算一个表达式(例如,
a
),该表达式的计算结果为函数对象,然后调用函数(例如,使用
()
)——这是因为Python具有

因此,如果变量(可以引用一个函数,它只是一个值)被分配了一个不同的值,那么它将计算为新的值


然而,在PHP中,当进行函数调用时,它会在函数名称空间(与变量名称空间不同)中查找函数,然后调用它。在PHP代码中,变量以
$
开头,这有助于使它们看起来不同于函数名,但仍有一些内部使用的变量不重叠。在名称空间中还有其他很大的差异,例如函数总是“全局的”。

在PHP中,变量和函数使用不同的语法。变量是
$a
,函数只是
a
,因此没有混淆

在Python中,函数和变量使用相同的语法并共享相同的名称空间。如果你要做:

a = a()
然后
a
将不再包含函数,它将包含调用该函数的结果


基本上,命名函数只是一个变量,其值是一个函数。

我不确定我是否了解您要做的事情
a=a()
在Python中可以工作,它只是用函数的返回值替换
a
。我无法从你对“吃”的描述中判断你是否想要吃。不管怎样,如果你问“为什么PHP和Python工作方式不同”,答案是“因为它们是不同的语言”。你可能想花点时间学习Python的基础知识。没有名为
function
(称为
def
)的关键字,函数外部的
return
语法无效。似乎工作正常。。也许这是我的wsgi脚本。。problemsPHP具有不同的函数和变量名称空间,$只是通过使单个名称空间中的某些符号看起来不同而隐藏了事实(并消除了混淆)。请参阅-注意,变量名为“say_hi”,这也是函数的确切名称。@user40111218请尝试在PHP中将函数分配给变量,如
def a():return 1;f=a;f()