Apologies, what frees the "table" variable memory, the exit of the calling code?
DEC pack, unpack and disk-images
DEC pack, unpack and disk-images
|
Jun-18-2024, 07:32 AM
(This post was last modified: Jun-18-2024, 07:32 AM by Gribouillis.)
(Jun-18-2024, 06:52 AM)Curbie Wrote: Apologies, what frees the "table" variable memory, the exit of the calling code?The 256 bytes are freed when the program exits because 'table' is a global variable. You can free them earlier if you don't need to pack() or unpack() anymore. You can free them by deleting the 'table' variable or assigning None to this variable. There is little benefit in doing this because 256 bytes is a small amount of memory.
« We can solve any problem by introducing an extra level of indirection »
Jun-18-2024, 11:37 PM
Quote:because 'table' is a global variablestupid question, are both 'table' and 'res' global variables, if not what makes a global variable?
Jun-19-2024, 07:03 AM
(This post was last modified: Jun-19-2024, 07:03 AM by Gribouillis.)
(Jun-18-2024, 11:37 PM)Curbie Wrote: stupid question, are both 'table' and 'res' global variables, if not what makes a global variable?Yes they are global variables because they are defined at module level and not in the body of a function. In the following code spam = 25 def eggs(): ham = 36 spam is a global variable and ham is a local variable of function eggs() . When function eggs() is called, ham is destroyed at function exit. Spam is never destroyed, unless we write at module leveldel spamWe could also do spam = "...some memory intensive data..." spam = None # does not destroy the name 'spam' but destroys the value at which it points.
« We can solve any problem by introducing an extra level of indirection »
Jun-19-2024, 03:31 PM
Thanks,
If I understand correctly, local variables can ONLY be accessed by the function in which contains them, global variables are outside functions that all functions can access within that module. (and possibly importing modules, question to follow) I think I understand that module functions can be called by either importing the whole module or the particular function from that module, but are global variables initialized if I import and call a particular function in a module, seems like they must be but, still trying to head-wrap this stuff? Can Global variables from an imported module be accessed from the importing module? I haven't found any py libraries tutorial, and I think I'll need to do a spread-sheet on and read every py library to document their content functions unless there is a better suggestion?
Jun-19-2024, 06:42 PM
(This post was last modified: Jun-19-2024, 06:43 PM by Gribouillis.)
(Jun-19-2024, 03:31 PM)Curbie Wrote: are global variables initialized if I import and call a particular function in a module, seems like they must be but, still trying to head-wrap this stuff?Yes. The first time a pure Python module is imported, the code that it contains is executed, hence the global variables are assigned. Also note that functions and classes defined at module level are global variables too. >>> def spam(): ... pass ... >>> spam <function spam at 0x7ff2fb34db40> (Jun-19-2024, 03:31 PM)Curbie Wrote: Can Global variables from an imported module be accessed from the importing module?Yes. (Jun-19-2024, 03:31 PM)Curbie Wrote: I haven't found any py libraries tutorialYour first source of documentation is the official documentation, especially the standard library. Searching the standard library can be a little tedious, you could use my 'pyman' script in a terminal. For example if you type pyman pathlib it will open the Python documentation with the search term pathlib.A comprehensive introduction to the standard library's modules is the pyMOTW-3 site by Doug Hellmann. He gives example code for many standard modules.
« We can solve any problem by introducing an extra level of indirection »
Jun-20-2024, 04:14 PM
thanks Gribouillis,
In light of your "pyman" script and library references I my need to go back to my notes to see if i can create a local library text file of notes on py scripting and py libraries, although, I need work more work with debuggers before I do anything, tutorials show how py scripts work, not how to fix py scripts that don't work. I need to ponder this some. more curbie
Jul-08-2024, 05:28 PM
I decided to research python tutorials to start my python notes. Now, I'm reading them again, organizing, and structuring the tutorials in a way that settles my brain to suit my dyslexia, It's torture trying to stick to the intent of the tutorial author and not chase questions that the tutorial raises, but this organizing, and structuring phase should hopefully only take a couple months. Unlearning is the scariest.
To take a break from tutorials, I study python code, while studying Gribouillis's code I added a "print(x)" (see below) looking for an "illegal (127)" character. How "if illegal in x:" is raising this error, but the "print(x) is returning "b'\x14\x0f\r'" with NO illegal (127) character. Now, I WAS playing with reorganizing the "rad50_table" so I'm sure this is my fault, and what "print(x) is returning is what I intended with no displayed illegal characters in 'x', so how is an error coming from 'x'? class IllegalCharacter(Exception): print("Illegal Character from alphamicro.pack()") def pack(c3): x = c3.translate(rad50_table) print(x) # added if illegal in x: raise IllegalCharacter return (1600 * x[0]) + (40 * x[1]) + x[2] res = pack(b'tom') # pack ascii triplicate print(res) # H7F65 D32613 O77545 for 'tom'
Jul-08-2024, 07:58 PM
(This post was last modified: Jul-08-2024, 08:00 PM by Gribouillis.)
(Jul-08-2024, 05:28 PM)Curbie Wrote: How "if illegal in x:" is raising this error, but the "print(x) is returning "b'\x14\x0f\r'" with NO illegal (127) character.The if illegal in x is NOT raising an error. The message is printed because you added a print statement in the body of the IllegalCharacter class. The body of the class is executed unconditionally when the class is read by the interpreter. That print should not be here.
« We can solve any problem by introducing an extra level of indirection »
Jul-08-2024, 08:53 PM
Thanks Gribouillis,
I just reversed your "pack()" function for an "unpack()" function and it's doing the same "raise" thing, although it's rad50 functions flawlessly, I'll revisit error tutorials because I like what I understand of the "raise" notion. |
|
Users browsing this thread: 1 Guest(s)