python - 如何使用属性调用外部参数

标签 python

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

相关文章:

python - 从 python 运行 docker-compose

python - python XML 解析存在一些问题

python - "Invert"a 开始于 pandas 中的 DataFrame 选择

python - 屏幕捕获错误 - 这是什么意思?

python - 部署 Django 应用程序

python - TypeError : string indices must be integers, not str//试图获取key的值

python - 对列表的每个其他元素求和/将每个其他元素复数

Python 向量类

python - 为什么我的程序没有进入 game()?

python - 来自 Python 中不同输入的实时声音合成器