我正在尝试设置一个中继模块,可以在其他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/

10-12 19:17