我正在尝试设置一个继电器模块,我可以在其他 python 脚本中调用该模块来激活继电器。我创建了这个简单的脚本,名为relay.py:
#!/usr/bin/python
# Import required Python libraries
import RPi.GPIO as GPIO
# Use BCM GPIO references instead of physical pin numbers
GPIO.setmode(GPIO.BOARD)
# GPIO assigned relay pin numbers for peripherals
light = 35
waterPump = 33
fanMotor = 31
pinList = [light, waterPump, fanMotor]
for i in pinList:
GPIO.setwarnings(False)
GPIO.setup(i, GPIO.OUT)
def relayOn(peripheral):
GPIO.output(peripheral, GPIO.LOW)
def relayOff(peripheral):
GPIO.output(peripheral, GPIO.HIGH)
如果我想通过调用激活脚本内的继电器:
relayOn(light)
脚本运行良好。但是当我尝试从另一个 python 脚本运行该脚本时,我的问题发生了。例如我制作了一个名为relayTester.py的测试文件:
#!/usr/bin/python
import relay
relay.relayOn(light)
如果我运行此脚本,我会收到错误:
NameError: name 'light' is not defined
我对新问题表示歉意。我到处都找过了,似乎找不到答案。
最佳答案
您应该使用:
relay.relayOn(relay.light)
这是因为 light
是在 relay
模块上下文中定义的全局变量。
或者,你可以这样做:
from relay import relayOn, light
然后只需使用:
relayOn(light)
关于python - 如何使用属性调用外部参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504306/