Clojure到Python:类似str的fn中的可选元素

Clojure到Python:类似str的fn中的可选元素,python,clojure,Python,Clojure,Clojure版本: (defn问候语[&[name]] (条件->“你好”名称(str“名称”) 朴素Python版本: def问候语(name=None): 如果名称为“无”: 名称=“” 其他:名称=“”+名称 返回“Hello”+name 问题:如何使python版本更短、更地道 def greeting(name=''): return f'Hello {name}'.strip() 如果默认参数为None: def greeting(name=None): r

Clojure版本:

(defn问候语[&[name]]
(条件->“你好”名称(str“名称”)
朴素Python版本:

def问候语(name=None):
如果名称为“无”:
名称=“”
其他:名称=“”+名称
返回“Hello”+name
问题:如何使python版本更短、更地道

def greeting(name=''):
    return f'Hello {name}'.strip() 
如果默认参数为
None

def greeting(name=None):
    return f'Hello {name}' if name else 'Hello'
如果默认参数为
None

def greeting(name=None):
    return f'Hello {name}' if name else 'Hello'

返回“Hello”+name if name else“Hello”
返回“Hello”+name if name else“Hello”挑剔:Clojure版本在显式传递
nil
时也会返回
Hello
——假设OPs使用
None
作为参数,这将返回
Hello None
@cfrick您是对的,为suc添加了变量h caseNitpick:Clojure版本在显式传递
nil
时也将返回
Hello
——假设OPs使用
None
作为arg,这将返回
Hello None
@cfrick you is right,为这种情况添加了变量