[英]Python reuse of function with parameters
hello i wanted to make my code when i needed to call back my function but because of my addr parameter i can't call it i will need help thanks你好,当我需要回调我的 function 时,我想编写我的代码,但由于我的 addr 参数,我无法调用它,我需要帮助谢谢
def send_magic_packet(addr):
# create socket
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SOBROADCAST, 1)
# parse address
mac = addr.upper().replace("-", "").replace(":", "")
if len(mac) != 12:
raise Exception("invalid MAC address format: {}".format(addr))
buf = b'f' * 12 + (mac * 20).encode()
# encode to magic packet payload
magicp = b''
for i in range(0, len(buf), 2):
magicp += struct.pack('B', int(buf_[i:i + 2], 16))
# send magic packet
print("sending magic packet for: {}".format(addr))
s.sendto(magicp, ('<broadcast>', DEFAULT_PORT))
while True:
send_magic_packet(addr)
data = aio.receive('feed')
if int(data.value) == 0:
print("PC Off")
if int(data.value) == 1:
print("PC ON")
Traceback (most recent call last):
File "D:/Documents/WOL.py", line 42, in <module>
send_magic_packet(addr)
NameError: name 'addr' is not defined
Replace address while calling as a string or define it.调用时替换地址作为字符串或定义它。
while True:
addr = '192.168.2.323'
send_magic_packet(addr)
or simply like this,或者就这样,
while True:
send_magic_packet('192.168.2.323')
You need to define addr
outside of your function definition.您需要在 function 定义之外定义
addr
。
So, eg所以,例如
def send_magic_packet(addr):
# create socket
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SOBROADCAST, 1)
# parse address
mac = addr.upper().replace("-", "").replace(":", "")
if len(mac) != 12:
raise Exception("invalid MAC address format: {}".format(addr))
buf = b'f' * 12 + (mac * 20).encode()
# encode to magic packet payload
magicp = b''
for i in range(0, len(buf), 2):
magicp += struct.pack('B', int(buf_[i:i + 2], 16))
# send magic packet
print("sending magic packet for: {}".format(addr))
s.sendto(magicp, ('<broadcast>', DEFAULT_PORT))
# Define addr
# -----------
addr = "foo"
while True:
send_magic_packet(addr)
data = aio.receive('feed')
if int(data.value) == 0:
print("PC Off")
if int(data.value) == 1:
print("PC ON")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.