Lambda 函数使用参数 return 不同的值

Lambda Function to return different value using parameters

我想对 return 值使用 lambda 函数。这可以在一个函数中处理,但是更喜欢在这个练习中使用 lambda。通常,我想通过传递第二个参数让 lambda return 为日期或 0。

import datetime
none_func=lambda x: 0 if x is None else x
print(none_func(None))
print(none_func(7))
print(none_func(datetime.datetime(2020,1,1)))
### Here, update the lambda function to take an additional parameters, like returns a date if None as well
none_func=lambda x: datetime.datetime(1900,1,1) if x is None else x
print(none_func(None))
print(none_func(7))

更新说明:

我想将合并函数转换为 lambda

def coalesce(x,return_schema='int'):
    if x is None and return_schema=='int': return 0
    elif x is None and return_schema=='date': return datetime.datetime(1900,1,1)
    else: return x

print(coalesce(7))
print(coalesce(None))
print(coalesce(None,return_schema='date'))
print(coalesce(datetime.datetime.today(),return_schema='date'))

您是否在寻找以下内容:


func = lambda x, y: 'default' if (x is None or y is None) else x

func(1, 2)        # returns 1
func(None, 1)     # returns 'default'
func(1, None)     # returns 'default'
func(None, None)  # returns 'default'

或者如果您只想根据第二个参数做一些事情,只需更改 if 语句来测试它的值。

使用该函数会是更好的选择,但如果您想将其转换为 lambda,您可以尝试这样的操作:

import datetime

f = lambda x,return_schema="int": 0  if x is None and return_schema=='int' else ( datetime.datetime(1900,1,1) if x is None and return_schema=='date' else x)
print(f(7))
print(f(None))
print(f(None, return_schema='date'))
print(f(datetime.datetime.today(), return_schema='date'))

希望对您有所帮助。