Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5881
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Hans-Peter Jansen <hpj@urpla.net> |
| Newsgroups | de.comp.lang.python |
| Subject | [Python-de] Re: Code Style Review |
| Date | Wed, 30 Nov 2022 15:52:59 +0100 |
| Lines | 128 |
| Message-ID | <6509182.4vTCxPXJkl@xrated> (permalink) |
| References | <tm2jhn$1k5h8$1@news1.tnib.de> <25b8d1d4-d6e2-22ee-4bed-ec76227fa65d@sschwarzer.net> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="iso-8859-1" |
| Content-Transfer-Encoding | quoted-printable |
| X-Trace | news.uni-berlin.de qz4+/nT2G53YuZ19McEfjQCVrQIXVAsyGNLWGPfOPMrA== |
| Authentication-Results | mail.python.org; dkim=none reason="no signature"; dkim-adsp=none (unprotected policy); dkim-atps=neutral |
| X-Virus-Scanned | amavisd at 'smile.earth' |
| In-Reply-To | <25b8d1d4-d6e2-22ee-4bed-ec76227fa65d@sschwarzer.net> |
| X-Provags-ID | V03:K1:LF7QOSbbedrUeEfetJPpG+KVbE4xZegCeA6BtR3yP6VHYfFvwzj yJOjGWidnLH6z905lx4RUJPE3KqaT8iPDEhEqFJGe8uzQsBEMKJTZMBGd/fbXwH7fmeORCu wjfKU3hsuqBBPqrtkCd+Cg4iwTvFol4quZ3rfLojfk14Ry/f+9G3zuSBvhI+eGjCT7efpBW Gv+7IkrE5oMpgur1MEg+A== |
| X-Spam-Flag | NO |
| X-UI-Out-Filterresults | notjunk:1;V03:K0:Y1TF07QtjHc=:h6dmm7PxUPvfiSHQlDxi56 maVhzrYWl0sLIwL+LWUS+a+YyRNZ4DPquAC+VLL2EufRn9HVkqZep0OgIqHUXjCfvfHzpuD7J Di9wtXC15qnLKYb4ny4vfm2gIa2OJq6PUAgRo1GbxzjqULX6Unn8tgPItJkv2nHbRdAA6qxGX 7+iKF+ipJTltnZguVX+tPuaRHbBu5ppxvXgEBk0iCzXtjDvAOp+pZ3H7yfDunVlruh9/LLBgF +h83jUQb0VAT+12EZn49L0UmW4YrUshKONU27SfoPPH/qCqTJBI100hBH0URB48h1YMw75knF sp4SfHj85vhFb9Hf2YXHvsBMLB/almkN32FBnNpjf7X4qot6VC4A3wwSpm1dcGKQc4OEs2+Wu XMkgubnid/N7bASKI9/B8vS3xM6VhvN4sGuUbkRPDBRj0WqYxoA3NwOMmEhWJ5W6R3teZua18 y9s7zLC33pc9uoBcDVtutKc4cRSTCkJgCIkEqli+1W+JQ3/N+ehsjVF/LO9gjmZIe6L3WJbq7 wTttoQHWcZqCVIlt5bj3qHQwBs+5FncKAyBQWURhFmzG5JCZjRAh0AutHRuqAIXYz5C93/tgW znFNky8XvoQZJdVN4tdB19Hsa1MHRFGk8u72XunjPZNJEeW0Z85DnMY/ODTcRt8RrJy5P8Ma9 dfuU75TTDOj4YRUcI5JisFG2zMw764QZXDzA63NUU9rk0qSU2Wb7QjWEil2GXRd9G7d4tc+xR TCw6iKAdyqz51Er9UUdLOH6JWQv3MDDx9oqrthLGkEugGynW0TE2x+D14Ck77ADWfLOVru5i9 rdKv2SE |
| Message-ID-Hash | OI2KRTCOCRKEG4RWY5SZ5CAHX2SIRF5K |
| X-Message-ID-Hash | OI2KRTCOCRKEG4RWY5SZ5CAHX2SIRF5K |
| X-MailFrom | hpj@urpla.net |
| X-Mailman-Rule-Misses | dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-python-de.python.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header |
| X-Mailman-Version | 3.3.7 |
| Precedence | list |
| List-Id | Die Deutsche Python Mailingliste <python-de.python.org> |
| Archived-At | <https://mail.python.org/archives/list/python-de@python.org/message/OI2KRTCOCRKEG4RWY5SZ5CAHX2SIRF5K/> |
| List-Archive | <https://mail.python.org/archives/list/python-de@python.org/> |
| List-Help | <mailto:python-de-request@python.org?subject=help> |
| List-Owner | <mailto:python-de-owner@python.org> |
| List-Post | <mailto:python-de@python.org> |
| List-Subscribe | <mailto:python-de-join@python.org> |
| List-Unsubscribe | <mailto:python-de-leave@python.org> |
| Xref | csiph.com de.comp.lang.python:5881 |
Show key headers only | View raw
Am Dienstag, 29. November 2022, 18:18:38 CET schrieb Stefan Schwarzer:
> Hallo Marc,
>
> On 2022-11-28 16:19, Marc Haber wrote:
>
> > ich wollte mich schon seit Jahren mal etwas ernsthafter mit python
> > beschäftigen und hier ist mein Erstlingswerk signifikanter Länge.
> > pylint hat nichts auszusetzen, an manchen Stellen habe ich pylint aber
> > überstimmt.
> >
> > Ist da irgendetwas drin, was nicht pythonesk genug formuliert ist?
> >
> > Laufen tut das Programm jedenfalls.
> >
> > Ich würde mich über Eure Kommentare freuen.
>
>
> ich habe hier und da ein paar Anregungen. Wie immer gilt,
> dass letztlich der Autor entscheidet, wie er/sie diese
> Anregungen umsetzt. :-)
+1
> Erst mal zum Thema der Konfigurations-Speicherung, was in
> dem Diskussions-Thread auch aufgegriffen wurde. Da in Python
> Module und Klassen natürliche Singletons sind, wäre mein
> Vorschlag, die Konfigurations-Daten in einer Klasse zu
> speichern, also
>
> ```
> class config:
>
> # Listener IP address and port of MQTT server.
> ip_address = None
> port = None
>
> # If `True`, print debugging output.
> debug = False
>
> ...
> ```
>
> Du kannst einfach von überall aus dem Modul auf das
> `config`-Objekt zugreifen und brauchst auch kein `global`.
> Die Klasse wird nie instanziiert, sondern nur als Namespace
> benutzt.
Yep, dem kann ich mich nur anschließen, und ich praktiziere diese Methode seit
Jahrzehnten. Bei mir heißt diese Klasse <gpar>, da es mit <config> häufig zu
Überschneidungen von anderen Funktionalitäten kommt (z.B. config files).
Grundsätzlich gilt es dabei abzuwägen, ob Du diese Werte
* direkt wie globals verwendest <gpar.value>
-> für skriptnahe Routinen
* deinen Funktionen/Methoden gpar als Parameter <func(gpar)> übergibst
-> skriptnahe Funktionen/Instanzen, die viele der Werte brauchen
* die Konfigurationswerte einzeln übergibst <func(gpar.v1, gpar.v2)>
-> für universell wiederverwendbare Funktionen/Klassen/Methoden
Vorab, ich erhebe nicht den Anspruch, irgendwie ausgesprochen pythonistisch zu
sein, und setze in manchen Bereichen ganz bewusst oldschool-Ansätze ein (z.B.
getopt). Komme von einem systemnahen Assembler und C-Umfeld, und habe mit
Python im letzten Jahrtausend angefangen. Seitdem nutze ich es überall, wo es
die Wahl gibt, als überaus nützliches, universelles Werkzeug, dass immer noch
Spaß macht! Letzteres ist eines der wichtigsten Aspekte für die Beliebtheit
der Sprache, die nicht in irgendwelchen strategischen Charts ihren Einstieg in
Industrie-Projekte gefunden hat (wie beispielsweise Java).
Zu dem schon Gesagten möchte ich noch ergänzen:
Aus Gründen der Flexibilität verwende ich für einfache Skripte folgendes
Muster:
def main(argv = None):
"""Command line interface and console script entry point."""
if argv is None:
argv = sys.argv[1:]
[...]
return 0
if __name__ == '__main__':
sys.exit(main())
So kannst Du den Funktionsumfang des Skripts direkt, von anderen Modulen und
auch mit setuptools benutzen.
Die --help Ausgabe findet sich in meinen Skripten meistens im __doc__ Bereich
des Hauptmoduls, wie Du auch schon damit angefangen hast. So habe ich auch die
Dokumentation da, wo ich sie *will*. Neben vielen Vorteilen hat das aber auch
den Nachteil, Kommandozeilen Optionen nicht an einer Stelle fokussiert
abzufrühstücken. Das funktioniert gut bis zu einer gewissen Größe des
Projekts.
Wie das in echt aussieht, kannst Du Dir ja mal hier anschauen:
https://github.com/frispete/vpndnshelper/blob/main/vpndnshelper.py
Vielleicht findest Du da auch noch die eine oder andere Anregung. Da Du dich
scheinbar auch in einem unixoiden Umfeld bewegst, könnten dich die signal und
exception Behandlungen der main Funktion interessieren. Dieses Skript läuft
übrigens üblicherweise als systemd Dienst, hat aber noch nie einen Linter
gesehen (und ja, das sollte ich auch mal tun..).
Cheers,
Pete
--
Life without chameleons is possible, but pointless.
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 16:19 +0100
[Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 15:37 +0000
[Python-de] Re: Code Style Review Christopher Arndt <chris@chrisarndt.de> - 2022-11-28 16:48 +0100
[Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 19:53 +0000
Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 22:07 +0100
[Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:51 +0100
[Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-11-29 21:44 +0100
[Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 23:16 +0100
Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-28 21:52 +0100
[Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-28 22:38 +0000
Re: [Python-de] Re: Code Style Review Enrik Berkhan <Enrik.Berkhan@inka.de> - 2022-11-29 06:03 +0000
Re: [Python-de] Re: Code Style Review Marc Haber <mh+usenetspam1118@zugschl.us> - 2022-11-29 15:22 +0100
[Python-de] Re: Code Style Review c.buhtz@posteo.jp - 2022-11-29 14:39 +0000
[Python-de] Re: Code Style Review Matthias Urlichs <matthias.urlichs@noris.de> - 2022-11-30 10:47 +0000
[Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-01 21:30 +0100
[Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-12-02 00:07 +0100
Re: [Python-de] Re: Code Style Review "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:32 +0100
[Python-de] Re: Code Style Review Matthias Urlichs <matthias.urlichs@noris.de> - 2022-12-02 09:29 +0000
[Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-02 18:02 +0100
[Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:33 +0100
[Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-11-29 18:18 +0100
[Python-de] Re: Code Style Review Hans-Peter Jansen <hpj@urpla.net> - 2022-11-30 15:52 +0100
[Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-01 21:16 +0100
[Python-de] Re: Code Style Review Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2022-12-01 23:58 +0100
[Python-de] Re: Code Style Review Marc Haber <mh+python-de@zugschlus.de> - 2022-12-02 18:10 +0100
Re: [Python-de] Re: Code Style Review "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2022-12-03 14:36 +0100
csiph-web