What I understand from reading the documentation is that Python has a separate namespace for functions, and if I want to use a global variable in that function, I need to use
I"m using Python 2.7 and I tried this little test
>>> sub = ["0", "0", "0", "0"] >>> def getJoin(): ... return ".".join(sub) ... >>> getJoin() "0.0.0.0"
It seems things are working fine even without
global. I was able to access global variable without any problem.
Am I missing anything? Also, following is from Python documentation:
Names listed in a global statement must not be defined as formal parameters or in a for loop control target, class definition, function definition, or import statement.
While formal parameters and class definition make sense to me, I"m not able to understand the restriction on for loop control target and function definition.
global is only useful to change or create global variables in a local context, although creating global variables is seldom considered a good solution.
def bob(): me = "locally defined" # Defined only in local context print(me) bob() print(me) # Asking for a global variable
The above will give you:
locally defined Traceback (most recent call last): File "file.py", line 9, in <module> print(me) NameError: name "me" is not defined
While if you use the
global statement, the variable will become available "outside" the scope of the function, effectively becoming a global variable.
def bob(): global me me = "locally defined" # Defined locally but declared as global print(me) bob() print(me) # Asking for a global variable
So the above code will give you:
locally defined locally defined
In addition, due to the nature of python, you could also use
global to declare functions, classes or other objects in a local context. Although I would advise against it since it causes nightmares if something goes wrong or needs debugging.
While you can access global variables without the
global keyword, if you want to modify them you have to use the
global keyword. For example:
foo = 1 def test(): foo = 2 # new local foo def blub(): global foo foo = 3 # changes the value of the global foo
In your case, you"re just accessing the list
Systems programming provides the basis for global calculation. Developing performance-sensitive code requires a programming language that allows programmers to control the use of memory, processor tim...
Automate the Boring Stuff with Python PDF, 2nd Edition: Practical Programming for Total Beginners Illustrated Edition. The second edition of this Python bestseller (over 100,000 copies sold in prin...
Black Hat Python, 2nd Edition: Python Programming for Hackers and Pentesters PDF, 2nd Edition. Fully updated for Python 3, the second edition of this worldwide bestseller (over 100,000 copies sold)...
This book is an indispensable guide focuses on Machine Learning and R Programming, in an instructive and conversational tone which helps them who want to make their career in Big Data Analytics/ Data ...