On Wed, Feb 26, 2014 at 12:42:00PM +0530, Santosh Kumar wrote: > All, > > Requirement : i want to call a variable assigned outside a function scope > anytime within the function. I read "global" is a way.
You can *read* the value of a global from inside a function without needing to declare it at any time. In fact, this is how you can call other functions -- they are just globals that you read. So this will work: a = 10 def func(): print("a equals %s" % a) func() => prints "a equals 10" But if you want to re-assign a global, you need to declare it global first. By default, if you say "x = ..." inside a function, Python will treat that variable x as a local variable. So here's an example: a = 10 def func(): global a print("Before, a equals %s" % a) a = 23 print("After, a equals %s" % a) func() => prints "Before, a equals 10" and "After, a equals 23") > a) Case I looks fine. > b) Case II is bombing out. Actually no it isn't. You're just getting a warning, not an error. See below. > Is this how it works or please correct me if i am wrong. > > case I: > > In [17]: a = 10 > > In [19]: def fun_local(): > ....: global a > ....: print "the value of a is %d" %(a) > ....: a = 5 > ....: print "the value of a is %d" %(a) > ....: > > In [20]: fun_local() > the value of a is 10 > the value of a is 5 This is completely fine. > CASE II: > > In [21]: a = 10 > > In [22]: def fun_local(): > ....: a = 5 > ....: print "the value of a is %d" %(a) > ....: global a > <input>:4: SyntaxWarning: name 'a' is assigned to before global declaration > <input>:4: SyntaxWarning: name 'a' is assigned to before global declaration > <input>:4: SyntaxWarning: name 'a' is assigned to before global declaration This is just a warning. It is STRONGLY RECOMMENDED that you put the global declaration at the top of the function, but it is not compulsary. If you put it somewhere else, you will get a warning, but the function will still work. For now. Some day Python may change that behaviour, so it is safest if you move the global to the top of the function. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor