Python:为什么returnstation不是&x27;不行吗?
我有一个很奇怪的问题,退货不起作用。 我的代码:Python:为什么returnstation不是&x27;不行吗?,python,Python,我有一个很奇怪的问题,退货不起作用。 我的代码: def data_for_dump(action = None , type_of_dump = None, where_is_price = None, check = 'false', currentQty=None, unrealisedRoePcnt=None, last_price=None): if type_of_dump == 'control_panels': data = { '
def data_for_dump(action = None , type_of_dump = None, where_is_price = None, check = 'false', currentQty=None, unrealisedRoePcnt=None, last_price=None):
if type_of_dump == 'control_panels':
data = {
'Action':{
'Action':action,
'Where_is_price':where_is_price,
}
}
#return data
elif type_of_dump == 'get_position_info':
data = {
'Info':{
'check':check,
'currentQty':currentQty,
'unrealisedRoePcnt':unrealisedRoePcnt,
'last_price':last_price,
}
}
return data
当我这样调用这个函数时
data_for__dump = data_for_dump(action = 'set_location',type_of_dump = 'control_panels', where_is_price = price_location)
它让我回想起:
<function data_for_dump at 0x7f409cdd7510>
这是什么鬼东西?以下内容在我的电脑上运行良好 您的函数名为
data\u for\u dump
,但这就是您调用函数返回的变量的名称。然后,当您试图实际调用该函数以返回值时,您正在调用数据\u以获取\uuuu dump
,额外的\uuu
字符很重要
它以字符串形式返回函数。只需更正\uu
以调用函数并切换变量名即可解决问题
def data_for_dump(action = None , type_of_dump = None, where_is_price = None, check = 'false', currentQty=None, unrealisedRoePcnt=None, last_price=None):
if type_of_dump == 'control_panels':
data = {
'Action':{
'Action':action,
'Where_is_price':where_is_price
}
}
#return data
elif type_of_dump == 'get_position_info':
data = {
'Info':{
'check':check,
'currentQty':currentQty,
'unrealisedRoePcnt':unrealisedRoePcnt,
'last_price':last_price
}
}
return data
def main():
data = data_for_dump(action = 'set_location',type_of_dump = 'control_panels', where_is_price = 3)
print(data)
# Yields {'Action': {'Action': 'set_location', 'Where_is_price': 3}}
main()
如果正在显示用于转储的数据,则应为。我想您可能会希望打印用于转储的数据 首先修复缩进。问题可能和缩进一样简单。在第一行之后,缩进所有其他行。您使用的变量看起来非常相似。您确定您正在使用2个下划线评估“data_for_dump”以检查函数“data_for_dump”的返回值吗?在我的计算机上运行良好,您是否打印了
data_for_dump
或data_for_dump
?似乎在联机解释器上也运行良好:。我确信您正在为转储打印数据。你能检查一下吗?“它返回的是内存中存储该函数的位置。”不,不是,它返回的是函数对象本身。十六进制返回语句是寄存器中存储该对象的位置,否?在寄存器中?这是函数对象的标准输出,但这是因为正在打印函数对象。它不再是内存中的位置,而不是class Foo:pass;f=Foo();打印(f)
f
是Foo
对象,而不是内存中的位置。默认的字符串表示法只能打印thatAh OK。道歉。我认为hex值是对象的内存位置,就像Python基于的C语言一样。现在编辑问题…打印输出中的值确实表示堆上函数对象的内存地址,但这不是打印的内容。它正在打印函数本身。当您打印该函数时,您将获得该输出,因为这就是\uuu repr\uu
钩子的实现方式。同样,它不是作为字符串的函数,而是函数本身。与def func()过程相同;印刷(func);打印(键入(func))
。函数是Python中的一级对象。正如您所指出的,由于名称相似,OP似乎只是简单地打印了函数对象。