Home > Net >  Python How to iterate through a list of functions
Python How to iterate through a list of functions

Time:10-18

I have a bunch of functions that do x y and z, these functions get executed after an exception has occured. so my problem is that instead of writing the functions one by one i want to create a list of functions and a write a function to iterate through those functions in the list.

If you could show me an example that would be of great help.

here is what i have:

def call_va_funcs(self, stop):
        self.disableZüruckVA()
        while True:
            
            try:
                
                
                correct = urllib.request.urlopen("http://192.168.167.12", timeout=10).getcode()
                print(correct, "192.168.100.2 is reachable: FAIL")
                if correct  == 200:
                    self.enableZüruckVA()
                    self.exitflag == True
                    break
            except Exception:
                print('Preflash')
                if self.exitflag == True:
                    self.enableZüruckVA()
                    break

                self.ping_all_va()
                time.sleep(1)
                if self.exitflag == True:
                    self.enableZüruckVA()    
                    break
                
                self.run_rxtx()
                time.sleep(1)
                if self.exitflag == True:
                    self.enableZüruckVA()
                    break
                
                self.call_netzteil()
                time.sleep(1)
                if self.exitflag == True:
                    self.enableZüruckVA()
                    break

As you can see here i am repeating the same process over and over again but with a different function. Can anyone help me figure out how to have a list and then just iterate through the bunch of functions.

Thank you

CodePudding user response:

you could try smth like this

my_methods = []
my_methods.append('ping_all_va')
my_methods.append('run_rxtx')
my_methods.append('next_func')
for cmd in my_methods:
     method = getattr(self, cmd)
     method()
     time.sleep(1)
     if self.exitflag == True:
          self.enableZüruckVA()    
          break
 

CodePudding user response:

Let's say you have functionA(), functionB() and functionC().
You could put the names of the functions in a list like this:

f_list = [functionA, functionB, functionC]

You can then call these functions one after another:

while True:
    # other code here...
    try:
        #... other code
    except:
        # ...other code

        for func in f_list:
            func()
            time.sleep(1)
            if self.exitflag == True:
                self.enableZüruckVA()    
                break
  • Related