2017-07-15 3 views
4

2つのコードを使用しています。私はプログラムから値を受け取るためにプログラム1を望ん2.2つの値が受信されました。数字となし

ファイル1:

from OpenUSB import transmitter 

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


valuepullup() 

ファイル2:

def transmitter(): 
    print (2) 

私が得る結果は次のとおりです。

2 
None 

私は希望愛はちょうど送信された値を使用します。誰もそれを傷つけない現状として。事前

+1

機能(暗黙的に)復帰 'NONE'になります。あなたは 'return newval'(' valuepullup'に)と 'return 2'(' transmitter'に)を含めることができます。 – MSeifert

答えて

5

を返すあなたはここに2つのオプションがあり、どちらかの代わりに単にあなたのtransmitter機能でprintreturnを使用するか、または単にprintを呼び出すことなく、あなたのtransmitterを呼び出します。ここで何が起こっているのは、関数のreturnであるNone(戻り値を指定しないので、デフォルトでは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に格納することを検討しています。だから 関数から2を返す必要があります。newvalが実際に2を保持しています。あなたのコードには、transmitterの戻り値が保持されるので、Noneを保持します。説明したようにNoneです。だから、あなたのコードはは次のようになります。今

from OpenUSB import transmitter 

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

def transmitter(): 
    return 2 

valuepullup() 

、あなたがnewvalを印刷するとき、それは実際には2

1

あなたはdef transmitter():から何も返さなかったで2

おかげで来てから何を止めないための方法はあり です。代わりに2を印刷する、2