所以我第一次使用def函数,文档看起来很简单。并举了几个例子。但是我无法将它与我的代码联系起来。 我有2个文件langpy和test1:
test1.py
import time
import thread
import os
import sys
import ctypes
import wmi
from langpy import lang
from langpy import port
string = ""
class service_test:
def __init__(self):
thread.start_new(self.do_something, tuple())
while True:
if getattr(sys,'stopservice', False):
sys.exit()
time.sleep(0.3)
def do_something(self):
print(str(lang))
print(str(port))
while True:
fname = 'c:\\\\test.txt'
f = open(fname, 'a')
f.write(str(time.time()))
#f.write("%s /n/r") % string
f.close()
time.sleep(1)
if __name__ == "__main__":
tst = service_test()
langpy:
import os
import time
import ctypes
import wmi
def lang(self, language):
windll = ctypes.windll.kernel32
language = str(windll.GetUserDefaultUILanguage())
return
def port(self, Ardport):
Ardport = "not found"
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
s = str(item.Dependent.Caption)
strfind = "Raptor"
if (s.find(strfind) >= 0):
Ardport = str(item.Dependent.Caption)
return
我希望它在test1代码中从Ardport = str(item.Dependent.Caption)
和language = str(windll.GetUserDefaultUILanguage())
返回字符串,但它会继续打印
function lang at 0x027479F0
function port at 0x027503B0
(他们外面也有<>
,但论坛格式不包括它们)
我有一个未编辑的langpy版本(没有定义任何东西),它会重新调整正确的str
import os
import time
import ctypes
import wmi
windll = ctypes.windll.kernel32
lang = str(windll.GetUserDefaultUILanguage())
print(lang)
Ardport = "not found"
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
s = str(item.Dependent.Caption)
strfind = "Raptor"
if (s.find(strfind) >= 0):
Ardport = str(item.Dependent.Caption)
print (Ardport)
答案 0 :(得分:0)
您正在正确导入这些功能:
from langpy import lang
from langpy import port
但是,您正在将参考打印到这些功能,而不是返回值。
print(str(lang))
print(str(port))
您希望实际调用功能,然后打印返回的内容。你可以这样做:
print(str(lang()))
print(str(port()))
再加上一组括号!
编辑:进一步查看,您也没有从功能中返回任何内容。尝试:
def lang():
windll = ctypes.windll.kernel32
language = str(windll.GetUserDefaultUILanguage())
return language
def port():
Ardport = "not found"
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
s = str(item.Dependent.Caption)
strfind = "Raptor"
if (s.find(strfind) >= 0):
Ardport = str(item.Dependent.Caption)
return Ardport
注意:除非我缺少某些功能,否则你不需要这些功能的争论。
self
参数用于类方法,因此它们知道要引用哪个对象。
答案 1 :(得分:0)
您需要从函数中返回要打印的实际值。将return
中的现有langpy
行替换为:
return language
和
return Ardport
然后,您需要在print(lang(my_lang))
文件中print(port(my_port))
和test1
。然后,这些打印语句基本上会读取&#34;打印函数调用lang(my_lang)
(或port(my_port)
)&#34;返回的内容。