在python中是否可以根据条件调用dot-syntax-function.转向的简单示例:
if condition:
foo().bar().baz()
lots_of_code()
else:
foo().baz()
lots_of_code()
def lots_of_code():
# lots of code
Run Code Online (Sandbox Code Playgroud)
成:
foo().(if condition: bar()).baz()
# lots of code only once
Run Code Online (Sandbox Code Playgroud)
不,这是不可能的.
属性引用的语法是
attributeref ::= primary "." identifier
Run Code Online (Sandbox Code Playgroud)
引用文档,
属性引用是主要的,后跟句点和名称
name必须是常规Python标识符,标识符不能包含特殊字符(.
但是,您可以使用简单的条件表达式来选择主要:
(foo().bar() if condition else foo()).baz()
Run Code Online (Sandbox Code Playgroud)
它相当于
if condition:
primary = foo().bar()
else:
primary = foo()
primary.baz()
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,我们必须使用括号,因为属性引用的优先级高于条件表达式.