好吧,也许这不是最易读的,但是如果您使用大量 Python,我强烈建议您进行一些列表理解练习,因为您会遇到比 FizzBuzz 复杂得多的列表理解。
另一个有趣的特性是装饰器。你把一个块写成一个函数,然后装饰器把它变成你真正想要的函数。这是一个简单的 fib 函数,由于记忆化,它是 O(n),即使它看起来是 O(n^2):
#!/usr/bin/env python3
from functools import cache
@cache
def fib(n):
if n < 2:
return n
else:
return fib(n-1) + fib(n-2)
for i in range(1, 100):
print(fib(i))
我们可以在这里看到,默认情况下 Python 具有无限的精度整数 - 即使在较新的语言中,这一特性仍然非常少见。
我们也可以用装饰器做更多有趣的事情:
#!/usr/bin/env python3
def override(value, condition):
def decorator(func):
def wrapper(*args, **kwargs):
if condition(*args, **kwargs):
return value
else:
return func(*args, **kwargs)
return wrapper
return decorator
@override(“FizzBuzz”, lambda i: i%15 == 0)
@override(“Buzz”, lambda