使用自身值的python字典函数调用

使用自身值的python字典函数调用,python,dictionary,user-defined-functions,elements,Python,Dictionary,User Defined Functions,Elements,在Python中,如何在调用同一字典中引用的函数时反引用字典的值 例如(愚蠢的): 我知道你可以在课堂上做到这一点。当然但是,你能用字典做到这一点吗?你不能在文本中做到这一点,因为当对文本进行计算时,字典还不存在。所以没有办法参考它 但是,您可以稍后插入它: >>> player = { 'x' : 0, 'y' : 22, 'z' : -37} >>> player['f'] = f1(player['x'], player['y'], player['z'

在Python中,如何在调用同一字典中引用的函数时反引用字典的值

例如(愚蠢的):


我知道你可以在课堂上做到这一点。当然但是,你能用字典做到这一点吗?

你不能在文本中做到这一点,因为当对文本进行计算时,字典还不存在。所以没有办法参考它

但是,您可以稍后插入它:

>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = f1(player['x'], player['y'], player['z'])
>>> player
{'f': -0.5945945945945946, 'x': 0, 'y': 22, 'z': -37}
或者,如果它应该是动态的,您可以使用包装器。例如
lambda
函数:

>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = lambda: f1(player['x'], player['y'], player['z'])
>>> player['f']()
-0.5945945945945946
>>> player['x'] = 10
>>> player['f']()
-0.8648648648648649
>>> player['x'] = 100
>>> player['f']()
-3.2972972972972974

但我想,仅仅是将
Player
制作成一个类将更具可读性,更易于维护。而且,类使这类事情变得几乎微不足道,而不需要lambda或诸如此类的东西。

你不能在文本中这样做,因为在对文本求值时,字典还不存在。所以没有办法参考它

但是,您可以稍后插入它:

>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = f1(player['x'], player['y'], player['z'])
>>> player
{'f': -0.5945945945945946, 'x': 0, 'y': 22, 'z': -37}
或者,如果它应该是动态的,您可以使用包装器。例如
lambda
函数:

>>> player = { 'x' : 0, 'y' : 22, 'z' : -37}
>>> player['f'] = lambda: f1(player['x'], player['y'], player['z'])
>>> player['f']()
-0.5945945945945946
>>> player['x'] = 10
>>> player['f']()
-0.8648648648648649
>>> player['x'] = 100
>>> player['f']()
-3.2972972972972974
但我想,仅仅是将
Player
制作成一个类将更具可读性,更易于维护。同样,类使这类事情变得几乎微不足道,而不需要lambda或类似的东西。

def f1(x,y,z): 返回(x+y)/z

l=[10,4,7,f1]

l[3](l[0],l[1],l[2])

def f1(x,y,z): 返回(x+y)/z

l=[10,4,7,f1]


l[3](l[0],l[1],l[2])

您不能,因为所有键和值表达式都是在构造字典之前首先解析的。因此,在创建字典之前,不能引用字典中的值。此外,大多数语言都有一些特殊的关键字,如
this
self
。Python没有。只有由于元类的缘故,
self
才被正确地“注入”。大多数人把
\uuuu init\uuuu
看作一个构造函数,但是通过元类可以省略
\uuuu init\uuuu
。在
\uuuu init\uuuu
被构造时,实例已经被构造。我不明白这个问题。我必须试一试。@jeanfrancoisfab:SaraToo在为
'f'
构造值时,希望获得与
'x'
键关联的th值。您不能,因为所有键和值表达式都是在构造字典之前先解析的。因此,在创建字典之前,不能引用字典中的值。此外,大多数语言都有一些特殊的关键字,如
this
self
。Python没有。只有由于元类的缘故,
self
才被正确地“注入”。大多数人把
\uuuu init\uuuu
看作一个构造函数,但是通过元类可以省略
\uuuu init\uuuu
。在
\uuuu init\uuuu
被构造时,实例已经被构造。我不明白这个问题。我必须试一试。@jeanfrancoisfab:SaraToo在为
'f'
构造值时,希望获得与
'x'
键关联的th值。