Goto considered harmful. https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf&ved=2ahUKEwi8lqHYqfDcAhXImOAKHeAzDmsQFjAEegQIBhAB&usg=AOvVaw1CZug_36-PbevItYXTb7SR
On Wed, Aug 15, 2018, 3:52 PM Jacob Solinsky <jacobsolin...@gmail.com> wrote: > -Jumping to a function as opposed to calling a function > > When a function is jumped to, it inherits the variables in the caller’s > local namespace and is free to modify them or add new local variables, > unlike a normal function call, wherein the caller’s namespace is > inaccesible. At present, the only way I know of to accomplish this is to > bundle all variables in the caller method’s namespace as properties of the > method’s instance and have the callee method modify those properties. > Though it is easier to read code written this way, it resulted in a great > deal of redundancy in the code I was writing. The task I was attempting to > accomplish was approximately this: > > class Verb: > def __init__(self, parameters): > self.parameters = parameters > def conjugate(self): > #Using the parameters, chose an appropriate list of > morphemes to prefix and suffix to the verb > self.morphemelist = morphemelist > for morpheme in self.morphemelist: > morpheme.mutate() > returnstring = ‘' > for morpheme in self.morphemelist: > returnstring = returnstring + morpheme.form > returnstring = returnstring > > class Morpheme: > def __init__(self, verb, form, precedingmorpheme, > succeedingmorpheme): > self.verb = verb > self.form = form > self.precedingmorpheme = precedingmorpheme > self.succeedingmorpheme = succeedingmorpheme > def mutate(self): > #Using the verb’s parameters and the type and form of the > preceding and succeeding morpheme, mutate this morpheme’s form so that > #a correct verb form is produced > self.form = newform > > class Ban(Morpheme): > def __init__(self, verb, form): > super().__init__(verb, ‘ban’) > def mutate(self): > #This morpheme has mutation logic unique to itself but > with many similarities to the default morpheme’s mutation logic > self.form = newform > > Each subclass of Morpheme has its own slightly different mutate method. > Some subclasses of Morpheme needed to access and manipulate a great deal of > information about the verb and their surroundings, while other subclasses’ > mutate methods differed little from the default. Most of the variables > manipulated by the mutate method are not used by any other methods of class > Morpheme and thus should not be made properties of the attached instance. > What I wish I were able to do is write many little methods that modify the > same set of local variables and compose them together into a complete > mutate method. This would be effectively equivalent to having the “jump to > function” calls be replaced with the text in the function’s body, like a C > language macrosubstitution, but without using anything like preprocessor > directives. > > Let foo(a, b) be the syntax to call foo(a, b), and foo(a, b)% be the > syntax to jump to foo(a, b) > > def foo(a): > return a + c > > def bar(a, c): > return foo(a) > > def bazz(a, c): > return foo(a)% > > c = 5 > > call = bar(1, 3) > > jump = bazz(1, 3) > > > After execution, call in the above code would be 6 and jump in the above > code would be 4. > > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/