社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

rassar

rassar 最近创建的主题
rassar 最近回复了

您可以使用以下装饰器:

def lazy_fn(fn):
    return lambda *args: lambda: fn(*args)

(也可以表示为 lazy_fn = lambda fn: lambda *args: lambda: fn(*args) 如果你喜欢羊肉。)

像这样使用:

@lazy_fn
def expensive_call(x):
    print(x)
    if x == "d":
        return x

@lazy_fn
def expensive_call_2(x, y):
    print(x)
    print(y)
    return x + y

a = [expensive_call("a"), expensive_call_2("b", "c"), expensive_call("d")]
print(next((e for e in map(lambda i: i(), a) if e is not None), 'All are Nones'))

输出:

a
b
c
bc

注意不要使用 for e in a ,您需要使用 for e in map(lambda i: i(), a) 是的。

6 年前
回复了 rassar 创建的主题 » python 3.6.6输入不从输入返回任何内容

这是因为你没有打电话 lower() ,您正在设置 menu_select 函数本身 :

>>> menu_select = input("? ").lower
? 
>>> menu_select
<built-in method lower of str object at 0x10ca5eab0>

将您的行更改为:

menu_select = input("A/B: ").lower()