假设我有一个 python 方法可以在 p4 中获取最后同步的更改列表。(问题本身与p4无关,只是一个基本的python问题)
def get_last_synced_changelist(p4port, client_name, p4 = None):
with P4Connection(p4port) as p4:
last_change_list = p4.run_changes("-m1", "@%s" % client_name)
if last_change_list:
return last_change_list[0]["change"]
else:
return None
此方法的调用者可以提供作为字符串的 p4port,也可以提供 p4 对象本身。我的要求是,如果提供了“p4”对象,我想在没有上下文的情况下运行方法主体,即,我不希望在 p4 上调用enter或exit方法。这是因为关闭/进入 p4 对象的责任现在在于调用者。如果未提供 p4 对象,则需要在此程序中使用 p4port 字符串构造 with 语法。
有人能告诉我构建这种方法的最佳方法是什么吗?我想尽可能少地改变身体。基本上像
p4 or with P4Connection(p4port) as p4:
p4.run_changes(...)
但我不确定最好的语法是什么。