2017-12-31 47 views
-1

これは基本的な質問のように思えるかもしれませんが、私は混乱しています。次の2つの例は、私が(入力が同じであると仮定して)同じように動作します。ユーザーに数値を入力し、その数値に5を掛けて答えを返します。入力がある関数と入力がない関数 - Python

私の質問は、なぜ、最初のものより2番目の例を選択するのですか? (およびその逆)。より一般的に言えば、なぜ関数内に引数が与えられているのに対して、引数を持つ関数があるのでしょうか。それが意味をなさないならば。これが悪い例であれば、私は謝ります。

おかげ

引数なし:

def func(): 
    x = int(input('Enter a number:')) 
    y = x * 5 
    print(y) 

func() 

つの引数:

def func_2(y): 
    x = int(input('Enter a number:')) 
    y = x * 5 
    return y 

print(func_2(6)) 
+2

2番目のバージョンは意味をなさない引数 'y'は、関数内でさえ使用されませんでした。 – abccd

+1

2番目の例では、 'y'は何も価値がありません。結局、 'y = x * 5'で' y'を計算します。したがって、最初の例はより正確です。 –

+0

唯一の他の著しい違いは、printステートメントが前者の関数内にあり、 'print'が後者の関数の戻り値を出力することです。 – abccd

答えて

1

良い質問!

基本的に、2つの関数の違いは、最初の関数が計算とユーザーへの表示を処理することです。 2番目の関数は計算のみを処理します。 (補正、第二の機能は、ユーザー入力を受け付ける処理し、私はそれを変更します...のようなので、:)第2の機能を利用するための

def func_2(x): 
    y = x * 5 
return y 

x = int(input('Enter a number:')) 
print(func_2(x)) 

理由:

第一の理由:再利用

を関数から何回も値を取得する必要があり、結果を常に印刷するとは限らないとしましょう。結果がユーザーに印刷されることがありますが、結果がファイルに出力されることがあります。計算とプレゼンテーションを分けておくと、後で時間を節約できます。

第二の理由:再帰

あなたは再帰的にあなたの関数を呼び出したいことがあります。あなたはこのようなことを行うことができます唯一の計算についてのあなたの機能を維持する - ここで階乗を計算する関数を作成する例です。

def factorial(n): 
    if n == 1: 
     return 1 
    else: 
     return n * factorial(n-1) 

(Googleの「再帰」それはクールです)

第三の理由は:グッド練習

私の意見の種類は、私は人々が同意すると思います。コードのさまざまな部分を分けるほど、トラブルシューティング、再利用、他の人が読むことが容易になります。...おそらくもっと...

+0

さらに、さらに私は、ユーザーからの入力を受け入れることを別にしています... – varlogtim

関連する問題