Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4621

Re: [Python-de] Wie sieht Python fuer mich aus?

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Stefan Schwarzer <sschwarzer@sschwarzer.net>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Wie sieht Python fuer mich aus?
Date Mon, 9 Jan 2017 06:23:06 +0100
Lines 87
Message-ID <mailman.364.1483939389.2395.python-de@python.org> (permalink)
References <Python-20170108184230@ram.dialup.fu-berlin.de> <0a1a079d-99e2-f353-9334-ad2b20344449@sschwarzer.net>
Mime-Version 1.0
Content-Type text/plain; charset=windows-1252
Content-Transfer-Encoding 8bit
X-Trace news.uni-berlin.de O13bo3OB28q9stqFe3WnkQsRhG63GulivoqdBI+lq6kw==
Return-Path <sschwarzer@sschwarzer.net>
X-Original-To python-de@python.org
Delivered-To python-de@mail.python.org
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666
In-Reply-To <Python-20170108184230@ram.dialup.fu-berlin.de>
X-Provags-ID V03:K0:SSt6J95ejNqxDJRKCJt2yyml+MvKFSmqmvur0Zy4ujb1AdaJQWq csGUtxLqh2eEdCKcK4LAxX1gH1w4ho64VVc1sMgcvEIy8BkEXYQA1byMd91066DacC4Qx9+ o04hIZ7To0AFpq867gzOLgMEz4kbpzfSSQtAOpvRNhLhwIVEjRVUsrthpq3/C3tp/kBKGrm j4Ln1e49DUeqnds1VWv9w==
X-UI-Out-Filterresults notjunk:1;V01:K0:b8EbfVbsDgI=:o0J2yYOAkOW4Mt9R1k26gU YV3aPVrOiTyjm/FfJ0DKU2W55rcMjMxYiiopMP08HWhTViPheGr5SeSlR9SD3VnUW0SLJXjMa h1s22jrYDF+3K2xwBjGDEV+IwtKkYH311OzIhocy6K+kikntvOmX+rdggWqM9GPyIzD4T2xji jkanu8JX90uNPOuUpvcjamP6sJx7TienK0YY1udIgq1UuJcI2cW/yh757PZmXyuFaKp02jnuM ewam820Nx3RJHZ1gWXEz6pAWDunp6eLnTt5eKUaGgUa75w985X5f8vq5xnBjVXyRSFiDEGP9r sCjpzrxcItKq1y8oBU0o4/WMAwFxGvh4fDUcM4cbus08wVYC4L5edwIDEaqU2pGyYXdivkuzG FaS+9u/cklM0TZiRJlkV4iClza/wxq/pqFS6RRs/wP1AQJOF8xfTlBZVnhpcOAf7WqFCXGIWH ukpnLBQT7CXRy12o6cAXTh4TLlMMhWpyBT05NlzzYYRwQiO354CYMz6TMQI2oFS4ieh7ZMBzT Z7ykGk96igfaUnZvWubJ5xqtFpE0zyOdyYXs6wuvWUlhvg+nvbi9wYrRs44VlgeYEyGq+Bl1B nTAmRUR54BovUGQbemjOAPehi8aG0A+qoBF84Eu2pN/0Vmt1uxnp+y8if4RyFf1u2WG4WJgyj eAon8WHTEzg4jXEG7UQetwiA6RsR8aBsJLBhaKBD7J4YZjhIyMACXaefTcCaTvrdtJmEpmhti cEYcJmI6AYG9mEtO
X-BeenThere python-de@python.org
X-Mailman-Version 2.1.23
Precedence list
List-Id Die Deutsche Python Mailingliste <python-de.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-de/>
List-Post <mailto:python-de@python.org>
List-Help <mailto:python-de-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID <0a1a079d-99e2-f353-9334-ad2b20344449@sschwarzer.net>
X-Mailman-Original-References <Python-20170108184230@ram.dialup.fu-berlin.de>
Xref csiph.com de.comp.lang.python:4621

Show key headers only | View raw


Hi Stefan,

On 2017-01-08 18:52, Stefan Ram wrote:
>   Ausgeben
> 
>   »print« rundet Zahlen bei der Ausgabe etwas, während die
>   Konsole alle Nachkommastellen anzeigt.

`print` verwendet die Methode `__str__` zur Umwandlung in
einen String, während in der Konsole (Python-Shell)
`__repr__` verwendet wird. Beide Methoden können
unterschiedlich implementiert sein (siehe unten).

>   Variablen
> 
>   Eine Variable wird durch eine Zuweisung definiert. Eine
>   Variable hat keinen Typ, sondern Werte haben einen Typ.

Eine wichtige Einsicht!

>   Eine Variable wird an eine Liste gebunden, die Liste wird
>   also bei einer Zuweisung nicht kopiert. (Kopieren kann mit
>   nachgestelltem slice »[:]« erfolgen.)

Das kopiert nur die erste "Ebene" der Liste ("flache Kopie",
"shallow copy"). "Innere" Listen oder Objekte werden dabei
also nicht kopiert, sondern deren Referenzen übernommen.

  >>> L = [[1, 2], [3, 4]]
  >>> L2 = L[:]
  >>> L[0].append(2)
  >>> L2
  [[1, 2, 2], [3, 4]]

>   »range(2,7)« ergibt einen Bereich (einen Iterator) und
>   »range(2)« bedeutet »range(0,2)«.

In Python 2 ergibt `range` eine Liste, in Python 3 einen
Iterator.

>   Die spezielle Methode »__string__« repräsentiert Objekte
>   einer Klasse als Zeichenfolge.
> 
>   Muster
> 
> def __string__(self,...):
>     return "string"

Du meintest wahrscheinlich `__str__`. Wie oben gesagt, gibt
es auch noch `__repr__`. Üblicherweise wird `__str__` für
eine "nutzerfreundliche" Darstellung verwendet und
`__repr__` eher für eine "entwicklerfreundliche".

  >>> s = "abc "
  >>> print(s)
  abc
  >>> s  # Nur hier sieht man das Leerzeichen am Ende
  'abc '

  >>> import decimal
  >>> d = decimal.Decimal("1.23")
  >>> print(d)
  1.23
  >>> d
  Decimal('1.23')

Zu deinem Beispiel: "Technisch" kann man `__str__` und
`__repr__` mit weiteren Argumenten außer `self` definieren,
aber es wird praktisch nie gemacht: Beide Methoden werden
üblicherweise in Zusammenhängen verwendet, bei denen keine
Argumente übergeben werden (können).

>>> class A:
...   def __str__(self, x="x"):
...     return "a" + x
...
>>> a = A()
>>> print(a)
ax
>>> print(a.__str__("y"))
ay

Wie du siehst, ist der explizite Aufruf von `__str__`
relativ "unhandlich". :-)

Viele Grüße
Stefan

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] Wie sieht Python fuer mich aus? Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2017-01-09 06:23 +0100

csiph-web