Re: Variable scope inside and outside functions - global statement being overridden by assignation unless preceded by reference
Thanks again, all. I think the python -i scoping2.py would have given me a good beginning as well - will archive that one for use. And, to maybe explain how I work - not an excuse at all - but, I am actually 100% blind, so a lot of the IDE's, or their common means/methods of interaction don't suit me all the time, which is why I generally work via programmer's text editor interfaces, or treat something like VS code as such, but then still prefer to run my code via command line, using pdb to then play around with forms of debugging, etc. And, yes, also generally prefer to work via classes, modules, etc. at runtime, but this was more or less mostly testing, which then caused confusion/interference on my side...LOL! Jacob Kruger +2782 413 4791 "Resistance is futile!...Acceptance is versatile..." On 2024/03/07 03:55, Grant Edwards via Python-list wrote: On 2024-03-07, dn via Python-list wrote: The idea of importing a module into the REPL and then (repeatedly) manually entering the code to set-up and execute is unusual (surely type such into a script (once), and run that (repeatedly). As you say, most of us would be working from an IDE and hitting 'Run'. Am wondering why you weren't - but it's not important. Unless the code is intended to be used as a module, 'import'ing it into the REPL doesn't make sense. A simple example: ---testit.py-- x = 'x' y = 'y' def foo(): global y print("hi") x = 'X' y = 'Y' print(x) print(y) -- The usual method to play with that interactively is $ python -i testit.py >>> x 'x' >>> y 'y' >>> foo() hi X Y >>> x 'x' >>> y 'Y' >>> As we've seen, doing a 'from testit.py import *' doesn't let you test what the OP was trying to test. Doing 'import testit.py' gets you closer, but it's a hassle to test code that way. The right thing to do is 'python -i ' (or the equivalent button/option in an IDE). https://docs.python.org/3/tutorial/interpreter.html If you intended to use testit.py as a module, and wanted to experiment with its behavior as a module, then go ahead and import it. But, don't do 'from testit.py import *' until 1. you know how that differs from 'import testit.py' and 2. you want to use that difference -- https://mail.python.org/mailman/listinfo/python-list
If a dictionary key has a Python list as its value!
If a dictionary key has a Python list as its value, you can read the values one by one in the list using a for-loop like in the following. d = {k: [1,2,3]} > for v in d[k]: > print(v) No tutorial describes this, why? What is the Python explanation for this behaviour? Varuna -- https://mail.python.org/mailman/listinfo/python-list
Re: If a dictionary key has a Python list as its value!
On 2024-03-07 14:11, Varuna Seneviratna via Python-list wrote: If a dictionary key has a Python list as its value, you can read the values one by one in the list using a for-loop like in the following. d = {k: [1,2,3]} for v in d[k]: print(v) No tutorial describes this, why? What is the Python explanation for this behaviour? If the value is a list, you can do list things to it. If the value is a number, you can do number things to it. If the value is a string, you can do string things to it. And so on. It's not mentioned in tutorials because it's not special. It just behaves how you'd expect it to behave. -- https://mail.python.org/mailman/listinfo/python-list
Re: If a dictionary key has a Python list as its value!
On 3/7/24 07:11, Varuna Seneviratna via Python-list wrote: If a dictionary key has a Python list as its value, you can read the values one by one in the list using a for-loop like in the following. d = {k: [1,2,3]} for v in d[k]: print(v) No tutorial describes this, why? What is the Python explanation for this behaviour? Sorry... why is this a surprise? If an object is iterable, you can iterate over it. >>> d = {'key': [1, 2, 3]} >>> type(d['key']) >>> val = d['key'] >>> type(val) >>> for v in val: ... print(v) ... ... 1 2 3 >>> -- https://mail.python.org/mailman/listinfo/python-list
Re: Variable scope inside and outside functions - global statement being overridden by assignation unless preceded by reference
On 06Mar2024 15:12, Jacob Kruger wrote: So, this does not make sense to me in terms of the following snippet from the official python docs page: https://docs.python.org/3/faq/programming.html "In Python, variables that are only referenced inside a function are implicitly global. If a variable is assigned a value anywhere within the function’s body, it’s assumed to be a local unless explicitly declared as global." So, I would then assume that if I explicitly include a variable name inside the global statement, then even just assigning it a new value should update the variable in the global context, outside the function? Yes. Note that the "global" namespace is the module in which the function is defined. x = 1 def f(n): global x x += n This updates the `x` global variable in the module where `f` was defined. If you import `f` and use it in another module it will _still_ update `x` in the original module namespace. -- https://mail.python.org/mailman/listinfo/python-list