Matthias schrieb:
> Ich komm mir grade ein bisschen Doof vor, brauche in einer Funktion
> mehrere Statische Variablen. Z.B. ob die Serielle-Schnittstelle bereits
> geöffnet ist.
Was hast Du denn in Wirklichkeit damit vor? Unter Python deutet so ein
Vorgehen fast immer auf einen Denk- und / oder Designfehler hin.
Üblicherweise würden eine Klasse oder eine Closure-Funktion verwendet:
1 | #!/usr/bin/env python
|
2 |
|
3 | def outer():
|
4 | a = 1
|
5 | b = 2
|
6 | def inner(*args, **kwargs):
|
7 | print('in inner(): a=%s, b=%s'%(a, b))
|
8 | print('in inner(): args=%s, kwargs=%s'%(args, kwargs))
|
9 | return a + b
|
10 | return inner
|
11 |
|
12 |
|
13 | class Dummi:
|
14 | def __init__(self, *args, **kwargs):
|
15 | self.init_args = args
|
16 | self.init_kwargs = kwargs
|
17 |
|
18 | def __call__(self, *args, **kwargs):
|
19 | print('in Dummi.__call__(): args=%s, kwargs=%s'%(args, kwargs))
|
20 | print('in Dummi.__call__(): init_args=%s, init_kwargs=%s'%(self.init_args, self.init_kwargs))
|
21 | return 4 + 5
|
22 |
|
23 |
|
24 | if __name__ == '__main__':
|
25 | func = outer()
|
26 | print('func is %s'%(func))
|
27 | result = func()
|
28 | print('result of func() was %s'%(result))
|
29 |
|
30 | d = Dummi()
|
31 | print('d is %s'%(d))
|
32 | result = d()
|
33 | print('result of d() was %s'%(result))
|
Was die Linux-Distribution angeht, so ist das ziemlich egal, ob Du ein
[KXL]Ubuntu, ein Debian oder etwas aus der RPM-Familie nimmst, oder ein
Gentoo, Arch, ... Python ist Python, das tut sich nichts, und auch die
Unterschiede unter den Distributionen sind eher marginal. Es sollte
vielleicht keine Uralt-Version von Python sein, schon gar kein Python
2.x, und wenn Du Pythons neuestes Feature benutzen willst, nämlich das
Structural Pattern Matching, muß es natürlich mindestens das aktuelle
Python in Version 3.10 sein. Ich glaube allerdings: wenn Du dort
angekommen bist, werden die großen Distributionen vermutlich auch alle
Python 3.10 an Bord haben.
Ansonsten herzlich willkommen und viel Spaß, Glück, und Erfolg!