2016-10-10 20 views
-3

これで、関数間で変数を渡すのに苦労しています。Pythonの関数間で変数を渡す

明確な例は見つけられません。

私はfunb()をfunb()で実行したくありません。

def funa(): 
    name=input("what is your name?") 
    age=input("how old are you?") 
    return name, age 

funa() 

def funb(name, age): 
    print(name) 
    print(age) 

funb() 
+2

ダニエルは右であるが、これは次のとおりです。

funb(*funa()) 

それは次のようになりますPythonの入門書や変数や関数のチュートリアルを読んでから拾い上げることができます。 – SwiftsNamesake

答えて

0

これらのオブジェクトへの参照として変数と関数パラメータを使用することで、オブジェクトを渡すと考えることができます。私があなたの例を更新したとき、変数の名前を変更して、異なる名前空間の異なる変数にオブジェクトが存在することが明らかになりました。

def funa(): 
    name=input("what is your name?") 
    age=input("how old are you?") 
    return name, age     # return objects in name, age 

my_name, my_age = funa()    # store returned name, age objects 
             # in global variables 

def funb(some_name, some_age):   # a function that takes name and 
             # age objects 
    print(some_name) 
    print(some_age) 

funb(my_name, my_age)     # use the name, age objects in the 
             # global variables to call the function 
+0

ありがとう、これは非常にはっきりしていますが、私はまだ最初の場所で関数を使用し、名前と年齢がグローバルなものとしてとにかくグローバル変数を使用するのではないのですか? – AHC

+0

それはあなたのプログラムの目的が何であるかによって異なります。プログラムが大きくなるにつれて、データをカプセル化しなければ管理できなくなります。これはグローバル変数を避けることを意味します。他の懸念事項は、あなたがどのように機能を使用するかについてです。将来、あなたは名前の「dict」を維持したいと考えてください:年齢のペア。今あなたの名前、年齢のグローバル変数に問題があります。関数とデータが使用されているすべての場所を変更する必要があります。 – tdelaney

+0

Fabは大きな助けに感謝します。 – AHC

4

funaは、名前と年齢のため値を返すあるので、あなたはローカル変数にそれらを割り当て、funbにそれらを渡す必要があります:

name, age = funa() 
funb(name, age) 

注意関数内名称ことと外部はリンクされていません。

+0

なぜグローバル変数を使用するだけでなく、このようにするのが良いのでしょうか? – AHC

+0

ある意味、それ以来、あなたは全体を通して使用されていた同じ名前に頼ることになるでしょう。 –

0

それがタプルを返すと、あなたは、単に*でそれを解凍することができますが:

def funa(): 
    # funa stuff 
    return name, age 

def funb(name, age): 
    # funb stuff 
    print() 

funb(*funa()) 
関連する問題