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


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

Re: [Python-de] import Problem

Path csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Hermann Riemann <nospam.ng@hermann-riemann.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] import Problem
Date Fri, 28 Apr 2017 11:33:07 +0200
Lines 66
Message-ID <emggijFmrvvU1@mid.individual.net> (permalink)
References <emg3qcFkefeU1@mid.individual.net> <odurs8$ka2$1@blaine.gmane.org> <mailman.478.1493366431.2951.python-de@python.org>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding 8bit
X-Trace individual.net Q6KwrZ2FgL6HyY6odg3LdQ3B05jHjrVfcx6I6toaSXNZtl3+NA
Cancel-Lock sha1:kgWl3rB48SXj+Nhyj/Ak8exAFEE=
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0
In-Reply-To <mailman.478.1493366431.2951.python-de@python.org>
Xref csiph.com de.comp.lang.python:4754

Show key headers only | View raw


Am 28.04.2017 um 09:44 schrieb Peter Otten:

>> der nicht gerne extra Variable umkopieren mag
> Genau das tust du aber mit

>> from p4 import *

> und wie Christopher bereits gesagt hat, macht "global" einen Namen global im
> Modul, nicht im Programm.

> Um eine Funktion auszulagern und dabei zirkuläre Imports zu vermeiden
> übergibst du am besten den "state" explizit:

> # zeugs.py
> from ausgelagert import f

Da es sich in der Anwendungen um viele Funktionen handelt,
ist * statt f angesagt.
Bis dahin also nichts Neues.

> x = f(0)
> # ausgelagert.py
> def f(x):
>     return x + 42

Im konkreten Fall handelt es sich um viele
Modul übergreifende Variable, die ich nicht dauernd
in Argumentlisten übergeben mag.

Das ganze könnte eher nach folgenden Schema ablaufen:

Kommando
for i in *.py;do echo "##########" $i;cat $i;done
liefert

########## globale_funktionen.py
import globale_variable
g=globale_variable.variablen
def f():
    global g
    g.x=1
########## globale_variable.py
class Globale_Variablen:
    def __init__(self):
       self.x=0
variablen=Globale_Variablen()
########## initialisiere.py
from globale_funktionen import *
f()
########## test.py
import globale_variable
g=globale_variable.variablen
import initialisiere
print(g.x)

python3 test.py
liefert wie gewünscht dann
1

Hermann
    der leider in test.py nicht noch zusätzlich
    import globale_funktionen as g
    absetzen darf, um die Namenszahl zu verringern.

-- 
http://www.hermann-riemann.de

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


Thread

import Problem Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-04-28 07:55 +0200
  Re: [Python-de] import Problem Christopher Arndt <chris@chrisarndt.de> - 2017-04-28 08:45 +0200
    Re: [Python-de] import Problem Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-04-28 09:07 +0200
  Re: [Python-de] import Problem Peter Otten <__peter__@web.de> - 2017-04-28 09:44 +0200
    Re: [Python-de] import Problem Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-04-28 11:33 +0200
      Re: [Python-de] import Problem Peter Otten <__peter__@web.de> - 2017-04-28 12:48 +0200
        Re: [Python-de] import Problem Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-04-28 13:21 +0200
          Re: [Python-de] import Problem Peter Otten <__peter__@web.de> - 2017-04-28 14:48 +0200
  Re: import Problem Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-04-28 14:48 +0200

csiph-web