收到两个值,一个是数字,另一个是无。

4

我的需求是将第二个程序中的数值传递给第一个程序。

文件1:

from OpenUSB import transmitter

def valuepullup():
    newval = transmitter()
    print(newval)


valuepullup()

文件2:

def transmitter():
    print (2)

我得到的结果是:

2
None

我希望使用刚刚发送的值。当前情况是None破坏了它。 有没有办法阻止None与2一起出现?
提前感谢。

1
这些函数(隐式地)返回None. 你可以在valuepullup中包含return newval和在transmitter中包含return 2. - MSeifert
2个回答

5
你有两个选择,要么在你的transmitter函数中使用return而不是print,要么只调用transmitter而不调用print。这里发生的情况是你同时打印了函数的返回值,而函数没有指定返回值,默认会返回None,以及函数内部的print语句。
观察:
>>> def transmitter():
...     print (2)
...
>>>
>>>
>>> transmitter()
2
>>> print(transmitter())
2
None
>>>

更贴近你的例子,当你将 transmitter 赋值给一个值时会发生什么:
>>> newval = transmitter()
2
>>> print(newval)
None
>>>

因此,关于您的代码,您应该这样做:

def transmitter():
    return 2

实际上,这使得你的valuepullup内部代码更有意义。你要存储的是2newval中。因此,你应该从你的transmitter函数返回2,以便newval现在实际上持有2。在你的代码中,它持有None,因为它将持有transmitter的返回值。正如解释的那样,返回值是None。所以,你的代码现在应该是:
from OpenUSB import transmitter

def valuepullup():
    newval = transmitter()
    print(newval)

def transmitter():
    return 2

valuepullup()

现在,当您打印newval时,其实值为2。

1

你的def transmitter():函数没有返回任何内容。不要打印2,而是返回2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接