Python Forum
Where to put the global keyword when assigning variables outside a function?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Where to put the global keyword when assigning variables outside a function?
#1
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?
Reply
#2
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 = []
Reply
#3
(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.
Reply
#4
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.
Reply
#5
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.
Recommended Tutorials:
Reply
#6
(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?
Reply
#7
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.
Reply
#8
There is no prototyping. However, you do have to define an object before you call it of course
Recommended Tutorials:
Reply
#9
(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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Why doesn't list require global keyword? johnywhy 9 646 Jan-15-2024, 11:47 PM
Last Post: sgrey
  Find a specific keyword after another keyword and change the output sgtmcc 5 746 Oct-05-2023, 07:41 PM
Last Post: deanhystad
  Trying to understand global variables 357mag 5 1,065 May-12-2023, 04:16 PM
Last Post: deanhystad
  Global variables or local accessible caslor 4 985 Jan-27-2023, 05:32 PM
Last Post: caslor
  global variables HeinKurz 3 1,102 Jan-17-2023, 06:58 PM
Last Post: HeinKurz
  How to print variables in function? samuelbachorik 3 851 Dec-31-2022, 11:12 PM
Last Post: stevendaprano
  Clarity on global variables JonWayn 2 904 Nov-26-2022, 12:10 PM
Last Post: JonWayn
  i want to use type= as a function/method keyword argument Skaperen 9 1,772 Nov-06-2022, 04:28 AM
Last Post: Skaperen
  User-defined function to reset variables? Mark17 3 1,589 May-25-2022, 07:22 PM
Last Post: Gribouillis
  Function global not readable by 'main' fmr300 1 1,296 Jan-16-2022, 01:18 AM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020