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

Dinu Gherman gherman at darwin.in-berlin.de
Mo Jan 9 11:23:16 EST 2017


Ich denke, die meisten sehen “Bezeichner”/“Identifier” zutreffend als Synonym für den textuellen Namen einer “Variablen” und auf Verweis auf das dazugehörige Objekt. Mir scheint allerdings auch, dass die Python-Doku traditionell besonders gern von “Namen” spricht, wohl um hervorzuheben, dass es eben nur Verweise auf Objekte (im Sinne von "Schall und Rauch”) und nicht mit diesen identisch sind. Ganz realistisch gehört beides zusammen, und zumindest auf oberster Ebene kann man nicht nur eines davon haben, wenn man eigene Variablen benutzen möchte.

Und dass in der Doku nicht alles 100% konsistent ist, sollte niemanden überraschen. Diese ist ja nicht automatisch erzeugt worden.

Gruß,

Dinu

> On 09 Jan 2017, at 16:41, Stefan Ram <ram at zedat.fu-berlin.de> wrote:
> 
> Dinu Gherman <gherman at darwin.in-berlin.de> writes:
> [Anführungszeichen aus technischen Gründen verändert]
>> Wobei der Begriff "Variable" leider häufig sehr vage
>> verwendet wird. Es wird einiges klarer, wenn man andere
> 
>  Im The Python Language Reference (PLR) Release 3.6.0 (Guido
>  van Rossum and the Python development team) 4.2.1 steht
> 
> »If a name is bound in a block, it is a local variable of
> that block, unless declared as nonlocal or global. If a
> name is bound at the module level, it is a global variable.«
> 
>  . Dies könnt man als eine Definition von »variable« lesen.
> 
>> Begriffe benutzt (und auch die jeweilige Rolle mit in
>> Betracht zieht). In der Ausbildung spricht man eher von
>> "Bezeichnern" bzw. "Identifier". Das macht
> 
>  »Identifier« wird in PLR 3.6.0 2.3 als ein bestimmter
>  Text definiert, nämlich als ein Text nach dem Muster
> 
> xid_start xid_continue*
> 
>  . Ein Bezeichner ist also etwas anderes als eine Variable.
> 
>  Ein Bezeichner ist einfach jede Folge von Schriftzeichen,
>  die jenem Muster genügt, auch wenn sie nicht als Variable in
>  einem Programm verwendet wird.
> 
>  In diesem Zusammenhang ist aber auch (wie schon am
>  Zitat aus 4.2.1 erkennbar) der Begriff »name« wichtig.
>  Dazu kann man PLR 3.6.0 4.2 "Naming and Binding" lesen.
> 
>  Man kann meiner Meinung nach dem ersten Zitat oben
>  entnehmen, daß »name« der Oberbegriff zu »local variable«
>  und »global variable« sein könnte.
> 
>  Wobei ich vielleicht einen kleinen Widerspruch entdecke.
>  Zuerst heißt es in 4.2.1
> 
> Names refer to objects.
> 
>  , aber dann später in 4.2.2
> 
> When a name is not found at all, a NameError exception is
> raised.
> 
>  . Aber, wenn »a name is not found at all«, dann ist es
>  nach der zitierten Definition »Names refer to objects«
>  gar kein »name«. Hier müßte es vielleicht heißen
> 
> When an ordinary identifier is not found to refer to 
> any object at all, ...
> 
>  Ganz chaotisch wird es dann, wenn man 2.3 liest:
> 
> Identifiers (also referred to as names)
> 
>  . Hier wird »name« als Synonym für »identifier« definiert,
>  aber laut 4.2.1 ist ein Name kein Synonym für »identifier«,
>  sondern bezieht sich immer auf ein Objekt.
> 
>  Also, das ist meiner Meinung nach eine Sprachnorm,
>  die Begriffe nicht so genau verwendet, wie ich es
>  mir wünschen würde.
> 
>  Dies bringt den Leser dann tatsächlich in die Pflicht,
>  die Begriffe, welche von jener Norm selber nicht so 
>  genau definiert werden, selber - so nah wie möglich an
>  der Norm - zu definieren.
> 
>> klarer, dass eine "Variable" letztlich auch nur eine
>> Art Tupel ist, das aus einem Namen und einem Wert besteht.
>> Und, richtig, eine Typ-Information hat nur für die Werte
>> irgendeinen Sinn.
> 
> _______________________________________________
> python-de maillist  -  python-de at python.org
> https://mail.python.org/mailman/listinfo/python-de



Mehr Informationen über die Mailingliste python-de