J'essaie d'écrire du code conforme à PEP-8 pour un projet domestique (je dois admettre que ce sont mes premiers pas dans le monde de python) et j'ai une chaîne f qui fait plus de 80 caractères de long
- la ligne solide et fine près du point à self.text est la marque de 80 caractères.
J'essaie de le diviser en plusieurs lignes dans la plupart des cas. pythonique mais la seule réponse qui fonctionne est une erreur pour mon linter.
Code de travail :
def __str__(self):
return f'{self.date} - {self.time},\nTags:' + \
f' {self.tags},\nText: {self.text}'
Sortie :
2017-08-30 - 17:58:08.307055,
Tags: test tag,
Text: test text
Le linter pense que je ne respecte pas l'E122 de PEP-8, y a-t-il un moyen d'obtenir la chaîne correcte et le code conforme ?
0 votes
Vous n'avez pas besoin de tout renvoyer sur une seule ligne, créez une chaîne de base dans une variable puis ajoutez chaque partie en utilisant
+=
. Ensuite, il suffit de retourner la variable. La raison pour laquelle il n'est pas conforme à la norme E122 est peut-être parce que vous n'indentez pas la ligne suivante.0 votes
Quelle est la description complète de l'E122 ?
1 votes
Ou dites simplement à votre idéal d'augmenter la limite de caractères de la ligne, ou ignorez complètement cette règle.
26 votes
Je ne pense pas que ce soit une copie
f
Les ficelles n'y sont pas abordées.3 votes
@JoshLee "E122 continuation line missing indentation or outdented main" aussi pourquoi vous avez fermé la question ? Il n'y a pas de doublons, c'est la seule question sur les chaînes f multilignes.
0 votes
Pour les autres, ce n'est pas une question sur le code, c'est une question sur la façon de faire en sorte que les chaînes f multi-lignes aient une bonne apparence et soient conformes au pep-8 sans avoir recours à des bidouillages et des styles non pythoniques.
2 votes
@Owlzy La réponse n'est-elle pas exactement la même : utiliser les parenthèses, et non le marqueur de fin de ligne ?
0 votes
En outre, veuillez préciser si vous parlez d'une chaîne de caractères contenant des sauts de ligne (
\n
) ou une chaîne de plusieurs lignes littéral (ce que vous n'avez pas, vous avez juste ajouté quelques littéraux f-string d'une seule ligne).8 votes
Cette question n'aurait jamais dû être fermée en tant que doublon, car le doublon lié n'est pas un doublon de cette question. Les utilisateurs chevronnés de Stackoverflow savent que nous avons un problème concernant le fait d'être trop agressif comme ça, faites-le rouvrir. Je vote pour la réouverture dès que possible.
1 votes
@NickT : C'est peut-être le cas mais le soi-disant duplicata ne le mentionne pas et il n'est pas évident que cela fonctionne.
1 votes
Je conviens que cette question n'aurait pas dû être marquée comme un doublon et fermée. Le doublon référencé n'est pas le même.
0 votes
La question liée a ABSOLUMENT RIEN À FAIRE avec ce qui a été demandé ici. Celle-ci n'aurait pas dû être fermée.