我有以下代码:
>>> def test(a,b,c,d):
... print([x in [a,b,c,d] for x in [1,]])
... print([x in list(locals().values()) for x in [1,]])
>>> test(1, 2, 3, 4)
[True]
[True]
>>> test(2, 2, 3, 4)
[False]
[True]
这个实现可能看起来有点奇怪,但是这个例子来自一个更大的项目,其中有许多函数参数。
对于函数的第一次调用,所有操作都按预期进行,两条语句的结果相同。然而,对于第二个电话,这种行为对我来说似乎很奇怪。有人能解释一下这里发生了什么吗?
谢谢
locals()
引用列表的本地值。
考虑:
def test(a,b,c,d):
print([x in [a,b,c,d] for x in [1,]])
print([(x in list(locals().values()) and not print(locals())) for x in [1,]])
解释
not print(locals())
的值为True,因此和not print(locals())
不会更改布尔表达式的结果。
输出:
>>> test(2, 2, 3, 4)
[False]
{'.0': <tuple_iterator object at 0x000001A4D070CDC0>, 'x': 1}
[True]
因此,您将从第二次打印中获得[True]
,因为循环变量x
当然在局部范围内。
问题内容: 在Python中,如何将列表转换为? 我需要知道,因为功能 希望将几个time_series对象作为传递,而我有一个timeseries对象列表。 问题答案: 您可以在迭代器之前使用运算符,以在函数调用中对其进行扩展。例如: (请注意之前) 从python文档中: 如果语法* expression出现在函数调用中,则表达式必须求值为可迭代。来自此迭代器的元素被视为附加的位置参数。如果存
问题内容: 我正在尝试从EditText字段中将两个数字加在一起。到目前为止,我有下面的代码,我相信它会将EditText字段“ pos1_deg”和“ pos2_deg”转换为整数deg1和deg2。 然后,我可以执行以下操作将它们添加在一起 然后degSum寄存器保存deg1和2的和。 然后要输出回“结果” EditText,我需要将整数degSum更改为字符串。我认为正确的方法是使用以下代码
问题内容: 我有一个方法,它使用可变长度的字符串(String …)作为参数。我和我在一起。如何将其作为参数传递给方法? 问题答案: 等于a 因此,只需将a 转换为a ,就可以了。
通过使用Java8流: 从性能上看,哪个更好?
我正在尝试将位于服务器上的图像转换为数据URI。当我通过确切的url位置时,它转换得很好。我需要能够将文件名作为变量传递,但是当我传递时,返回的数据是base64:text/html而不是data:image/jpeg。 任何帮助都很感激!
问题内容: 我使用一个外部模块(libsvm),该模块不支持numpy数组,仅支持元组,列表和字典。但是我的数据是二维二维数组。我如何以pythonic方式转换它,也就是没有循环。 问题答案: 您可以简单地将矩阵转换为,以证明: