[英]Python readibility of long statement
我調用了 function,它返回了很多元素,遵守 PEP8 的方法是執行以下操作,但我覺得它的可讀性不高:
colonne_dernier_attribut, colonne_non_explained_beads, colonne_non_explained_beads_recipient, \
colonne_non_explained_beads_donor, colonne_score, colonne_comments, colonne_loci_manquants, \
colonne_edta, colonne_temps, colonne_summary = \
formatageRes(ws, wrsep, wdsep, feuille, feuille_corrigee, all_epitopes_considered, nbr_ep_considered, nrows)
我想要這樣的東西,我們可以清楚地看到調用 function 的地方。換句話說,我希望看到=
符號前后的明顯區別。
colonne_dernier_attribut, colonne_non_explained_beads, colonne_non_explained_beads_recipient, \
colonne_non_explained_beads_donor, colonne_score, colonne_comments, colonne_loci_manquants, \
colonne_edta, colonne_temps, colonne_summary = \
formatageRes(ws, wrsep, wdsep, feuille, feuille_corrigee, all_epitopes_considered, nbr_ep_considered, nrows)
但這不符合 PEP8 指南。 我正在尋找第三種替代方案,它更具可讀性並且遵循 PEP8。
一個方便的技巧是使用 parens 允許您跨行拆分分配而不必轉義換行符:
(
colonne_dernier_attribut,
colonne_non_explained_beads,
colonne_non_explained_beads_recipient,
colonne_non_explained_beads_donor,
colonne_score,
colonne_comments,
colonne_loci_manquants,
colonne_edta,
colonne_temps,
colonne_summary
) = formatageRes(
ws,
wrsep,
wdsep,
feuille,
feuille_corrigee,
all_epitopes_considered,
nbr_ep_considered,
nrows
)
這使得分配變量列表結束和 function 調用開始的位置變得非常明顯。
我建議如果只是調用這個 function 就這么復雜,你可能想重新考慮這個 API 並讓它返回某種類型的 object (可能只是像dataclass
或NamedTuple
這樣簡單的東西)而不是一個需要所有的匿名元組這種解構是為了可用。 例如:
from dataclasses import dataclass
@dataclass
class Collone:
dernier_attribut: str
non_explained_beads: int
non_explained_beads_recipient: str
non_explained_beads_donor: str
score: int
comments: list[str]
loci_manquants: tuple[int, int]
edta: str
temps: list[int]
summar: int
def formatageRes(
ws,
wrsep,
wdsep,
feuille,
feuille_corrigee,
all_epitopes_considered,
nbr_ep_considered,
nrows
) -> Collone: ...
這樣你就可以:
collone = formatageRes(
ws,
wrsep,
wdsep,
feuille,
feuille_corrigee,
all_epitopes_considered,
nbr_ep_considered,
nrows
)
調用代碼的其余部分基本上相同,但collone_varname
替換為collone.varname
。
(
colonne_dernier_attribut,
colonne_non_explained_beads,
colonne_non_explained_beads_recipient,
colonne_non_explained_beads_donor,
colonne_score,
colonne_comments,
colonne_loci_manquants,
colonne_edta,
colonne_temps,
colonne_summary,
) = formatageRes(
ws,
wrsep,
wdsep,
feuille,
feuille_corrigee,
all_epitopes_considered,
nbr_ep_considered,
nrows,
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.