Python 有哪些未定义的行为?语言规范中未定义的含义。我知道的唯一例子是在迭代序列时修改序列。在了解这一点之前,我曾经认为 Python 没有未定义的行为,所以我认为这是极其罕见的。
这是一个从列表中获取最小值、最大值和平均值的简单示例。下面的两个函数具有相同的结果。我想知道这两个函数的区别。为什么使用itertools.tee()?它提供什么优势?
from statistics import median
from itertools import tee
purchases = [1, 2, 3, 4, 5]
def process_purchases(purchases):
min_, max_, avg = tee(purchases, 3)
return min(min_), max(max_), median(avg)
def _process_purchases(purchases):
return min(purchases), max(purchases), median(purchases)
def main():
stats = process_purchases(purchases=purchases)
print("Result:", stats)
stats = _process_purchases(purchases=purchases)
print("Result:", stats)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud) 当我调用str()具有重载__getattribute__方法的对象时,它似乎没有使用它,而是__str__直接调用。是否有其他一些我应该修改的功能或让它使用的方法__getattribute__?如果我__str__直接超载它会按预期运行,但这并不适合我的需求。
class A(object):
def __getattribute__(self, attr):
if attr == "__str__":
return lambda: "Hello"
return object.__getattribute__(self, attr)
x = A()
print(x)
print(str(x))
print(x.__str__())
Run Code Online (Sandbox Code Playgroud)
输出:
< main .A object at 0x000001FDF7AEA760>
< main .A object at 0x000001FDF7AEA760>
Hello
期望输出:
你好
你好
你好
sent1 = nlp("I am happy")
sent2 = nlp("I am sad")
sent3 = nlp("I am joyous")
Run Code Online (Sandbox Code Playgroud)
在这里,我想比较三个句子的相似之处,显然sent1应该更相似于sent3与相比sent1。
sent1.similarity(sent2) = 0.9492464724721577
sent1.similarity(sent3) = 0.9239675481730458
Run Code Online (Sandbox Code Playgroud)
正如您从输出中看到的,sent1更类似于sent2,我的代码有什么问题吗?