473,399 Members | 3,656 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,399 software developers and data experts.

"intermodule-global" variables

Hi,
I am having a problem with an application I am writing:

I have 2 scripts called 'conf' and 'build'. Both define
a variable named 'root' and import a module named 'helper'.

In the helper module I want to access the root variable, that is
_either_ in conf _or_ build. How can I do this?
I just want the root variable to be global for all modules.
(I don't want to put root in helper, since that would make no sense at
all)
I also tried this:

---- helper.py
a=5

def printa():
global a
print a
----
from helper import *
a 5 a=6
a 6 printa()

5
Why does this not work? Why are there suddenly two variables a? One
for helper.py (stays 5) and a global one (became 6)? This is a bit
irritating. Didn't find it in any documentation
Thanks

Eddy

Jul 18 '05 #1
2 4222
ed**@netido.de (Eddy Ilg) wrote:
---- helper.py
a=5

def printa():
global a
print a
----
from helper import *
a 5 a=6
a 6 printa()

5


Change that to

---- helper.py
import sys
sys.a = 5
def printa():
print sys.a
----
from helper import *
sys.a = 6
printa()

----------------------------
There are three namespaces in Python at any given moment: local,
global, and built-in. You need to go through the built-in namespace,
for inter-module purposes. You could choose any other module instead
of sys.

A more drastic approach is to directly tweak the __builtin__ module.
That simplifies the reading (retrieval), but not the writing
(assignment).

import __builtin__
__builtin__.a = 4
print a

regards,

Hung Jung
Jul 18 '05 #2

"Eddy Ilg" <ed**@netido.de> wrote in message
news:ma*************************************@pytho n.org...
Hi,
I am having a problem with an application I am writing:

I have 2 scripts called 'conf' and 'build'. Both define
a variable named 'root' and import a module named 'helper'.

In the helper module I want to access the root variable, that is
_either_ in conf _or_ build. How can I do this?
I just want the root variable to be global for all modules.
(I don't want to put root in helper, since that would make no sense at
all)
There's probably something wrong with the design. If helper shouldn't know
about conf or build, then why should it know about a variable that conf or
build use? Rather, conf build and helper should all refer to a variable in a
fourth module.
I also tried this:

---- helper.py
a=5

def printa():
global a
print a
----
from helper import *
a 5 a=6
a 6 printa()

5
Why does this not work? Why are there suddenly two variables a? One
for helper.py (stays 5) and a global one (became 6)? This is a bit


Because you have rebinded a. This can be a confusing aspect of Python at
first, that you access objects through a reference rather than directly. So
when you did a=6, you rebinded the module-level a to a new value, but this
doesn't affect the other reference, in helper.py, that was also called 'a'.
Same thing would happen for two classes:
class A:
def __init__(self):
self.a =1

class B:
def __init(self, a):
self.b = a

aa = A()
bb = B(aa.a)

Now both bb.b and aa.a refer to the same value. Now if you do aa.a = 2,
that won't affect bb.b, rather bb.b and aa.a now refer to diferent
variables.

Oliver
Jul 18 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

68
by: Marco Bubke | last post by:
Hi I have read some mail on the dev mailing list about PEP 318 and find the new Syntax really ugly. def foo(x, y): pass I call this foo(1, 2), this isn't really intuitive to me! Also I...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.