On Thu, Aug 31, 2023 at 3:19 PM Chris Green via Python-list <python-list@python.org> wrote: > > I'm obviously doing something very silly here but at the moment I > can't see what. > > Here's the code:- > > #!/usr/bin/python3 > # > # > # GPIO > # > import gpiod > # > # > # Simple wrapper class for gpiod to make set and clearing outputs > easier > # > class Gpiopin: > > def __init__(self, pin): > # > # > # scan through the GPIO chips to find the line/pin we want > # > for c in ['gpiochip0', 'gpiochip1', 'gpiochip2', 'gpiochip3']: > > chip = gpiod.Chip(c) > for l in range(32): > line = chip.get_line(l) > if pin in line.name(): > print("Found: ", line.name()) > return > else: > raise ValueError("Can't find pin '" + pin + "'") > > def print_name(self): > print (self.line.name()) > > def set(self): > self.line.set_value(1) > > def clear(self): > self.line.set_value(0) > > > This is by no means the final code, the print() in the __init__() is > just a diagnostic for example. However I really can't understand why I > see the following when I try it:- > > >>> import ngp > >>> ngp.Gpiopin("P9_23") > Found: P9_23 > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/home/chris/.cfg/hosts/bbb/bin/ngp.py", line 24, in __init__ > return > ValueError: Can't find pin 'P9_23' > >>> > > Does a return in __init__() not do what I think it does? > > How else could/should I do this?
Change the return to a break -- https://mail.python.org/mailman/listinfo/python-list