有人可以给我一个解释,为什么isinstance()在下列情况下返回True?编写代码时,我期待False.
print isinstance(True, (float, int))
True
Run Code Online (Sandbox Code Playgroud)
我的猜测是它的python的内部子类,如0和1 - wheter float或int - 在用作布尔值时都会计算,但不知道确切的原因.
什么是解决这种情况的最pythonic方式?我可以使用,type()但在大多数情况下,这被认为是较少pythonic.
给出一个简单的词典列表
lst = [{'key1': 1}, {'key2': 2}, {'key3': 3}]
Run Code Online (Sandbox Code Playgroud)
我想找到一个dict,它产生使用此处未详述的方法评估的最小值.我的第一个想法是迭代列表以通过dict检查dict,但是这失败了:
for k, v in [x.items() for x in lst]:
print(k, v)
Run Code Online (Sandbox Code Playgroud)
结果ValueError(以及使用生成器而不是列表):
for k, v in [x.items() for x in lst]:
ValueError: not enough values to unpack (expected 2, got 1)
Run Code Online (Sandbox Code Playgroud)
然而,
for x in lst:
for k, v in x.items():
print(k, v)
Run Code Online (Sandbox Code Playgroud)
产量
key1 1
key2 2
key3 3
Run Code Online (Sandbox Code Playgroud)
正如所料.我假设所有方法都按预期工作(除非PEBKAC),但为什么它不能使用列表理解?有人可以开导我吗?
编辑:我使用python 3,我知道items()产生一个dict_view,但我不明白为什么逻辑不起作用.
在这里生锈新手。当提供参数并将其在函数声明中保持未使用状态时(例如,在学习Rust ...时),编译器会警告变量在范围内未使用的事实,并建议考虑在其下划线。这样做,警告消失。
warning: unused variable: `y`
--> src/main.rs:23:29
|
23 | fn another_function(x: i32, y: i32) {
| ^ help: consider using `_y` instead
|
= note: #[warn(unused_variables)] on by default
Run Code Online (Sandbox Code Playgroud)
为什么?变量如何区别对待?