Python Forum
Where to put the global keyword when assigning variables outside a function? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Where to put the global keyword when assigning variables outside a function? (/thread-24305.html)



Where to put the global keyword when assigning variables outside a function? - new_to_python - Feb-08-2020

Hello, I came across the following code:

a = None

def bind_a_variable():
  global a
  a = []

bind_a_variable()
It is stated that assigning variables outside of the function's scope is possible but those variables must be declared as global via the global keyboard. I am a C programmer. In C, we have to declare a variable first before using it. I would declare global a before
a = None
. However, in the example, a is declared inside a function and after the
a = None 
assignment. Could anybody please clarify?


RE: Where to put the global keyword when assigning variables outside a function? - Larz60+ - Feb-08-2020

globals are almost never necessary.
If you feel you need them, rethink your coding
def bind_a_variable():
    alist = []
    return alist

a = bind_a_variable()
of course in reality, you would code this simply as:
a = []



RE: Where to put the global keyword when assigning variables outside a function? - new_to_python - Feb-08-2020

(Feb-08-2020, 02:54 AM)Larz60+ Wrote: globals are almost never necessary.
If you feel you need them, rethink your coding
def bind_a_variable():
    alist = []
    return alist

a = bind_a_variable()
of course in reality, you would code this simply as:
a = []

Thanks. In regard to globals are almost never necessary, is it the same reason as other languages such as C and C++?

Anyway, I am trying to understand some examples from teaching materials.


RE: Where to put the global keyword when assigning variables outside a function? - Larz60+ - Feb-08-2020

Quote:In regard to globals are almost never necessary, is it the same reason as other languages such as C and C++?
I was a 'C' (and sometimes C++) programmer for 30 years.
I don't think I ever used a Global during that time.

If you have teaching material and their showing this (globals) as valid code, find some other material!
If there just showing how it's done, and recommending against it, that's OK.


RE: Where to put the global keyword when assigning variables outside a function? - metulburr - Feb-08-2020

i have been using python now for about 10 years. 10 years ago i learned about globals, but i seriously forgot most of it because i never use them. C/C++ is not Python, it is not good practice in Python to use globals. That said, if your just trying to understand the concept, thats fine. I just figured i would reverberate the fact globals can be coded a different way.


RE: Where to put the global keyword when assigning variables outside a function? - new_to_python - Feb-08-2020

(Feb-08-2020, 01:23 PM)metulburr Wrote: i have been using python now for about 10 years. 10 years ago i learned about globals, but i seriously forgot most of it because i never use them. C/C++ is not Python, it is not good practice in Python to use globals. That said, if your just trying to understand the concept, thats fine. I just figured i would reverberate the fact globals can be coded a different way.

Thanks. Yes, I am just trying to understand the concept.

(Feb-08-2020, 02:54 AM)Larz60+ Wrote: globals are almost never necessary.
If you feel you need them, rethink your coding
def bind_a_variable():
    alist = []
    return alist

a = bind_a_variable()
of course in reality, you would code this simply as:
a = []

By "of course in reality, you would code this simply as:
a = []
[/quote]"

Do you mean either of these two blocks of code will work?

In C, we need to define the function first at the beginning of the program before calling it (e.g. in main).
Alternatively, if the programmer define the function at the end of the program (after the function is called by main for example), the programmer needs to write down the prototype of the function at the beginning of the program. How about python?


RE: Where to put the global keyword when assigning variables outside a function? - Larz60+ - Feb-08-2020

a = []
is the proper way!

otherwise it's like you have a company that make teapots, but before you sell them,
you move them to someone else's factory next door, then have them return them to you,
telling you that they are teapots.


RE: Where to put the global keyword when assigning variables outside a function? - metulburr - Feb-08-2020

There is no prototyping. However, you do have to define an object before you call it of course


RE: Where to put the global keyword when assigning variables outside a function? - new_to_python - Feb-09-2020

(Feb-08-2020, 10:59 PM)metulburr Wrote: There is no prototyping. However, you do have to define an object before you call it of course

Thanks. So, function definition(s) and then the main program.