2017-08-24 16 views
1

私は、すべて同じパラメータを共有する多くの機能を持っています。彼らはこのパラメータを何度も入力して出力します。例えば(Python)パラメータを使用するか、グローバルにする必要がありますか?

a = foo 
a = fun(a) 
a = bar(a) 

def fun(a): 
    ... 
    return a 

def bar(a): 
    ... 
    return a 

関数を使用してパラメータを渡すか、それはで動作するように、すべての機能のために、グローバルにアクセス可能持つ、より多くのプロ文法的に正しいとは何ですか?

a = foo 
fun() 
bar() 

def fun(): 
    global a 
    ... 

def bar(): 
    global a 
    ... 
+6

引数を使用すると、コードを再利用しやすくなります。関数がすべて関連しており、同様のデータを扱う場合は、すべてをまとめてクラスを作成することも検討できます。これはまた非常にresuableです。 – kindall

+2

オブジェクトを渡し、その場合はフィールドを操作する方がよいでしょう。 –

+2

グローバルの使用を強くお勧めします。実際にはめったに使用されません。 – Alexander

答えて

3

再利用のために、パラメータを渡す方が良い方法です。

+0

多くのパラメータを渡すのは無理でしょうか? – tisaconundrum

+3

@ tisaconundrumあなたはいつもコンテナやオブジェクトにデータをラップし、複数の引数の代わりにそれを渡すことができます... –

4

変数がローカライズされるほど、より良い結果が得られます。

これは任意のプログラミング言語の事実上の公理です。

structs(これはFORTRANなどの他の言語でも同等)はこの実現から育ち、オブジェクト指向プログラミングはまもなく後に続きました。

2

私は他の回答に同意しますが、完了のためだけに、他の人がクラスを指摘しているので、ここでは良いアイデアのように思えます。以下を考慮する。

class myClass(object): 
    def __init__(self, foo): 
     self.a = foo 

    def fun(self): 
     # do stuff to self.a 

    def bar(self): 
     # do something else to self.a 

c = myClass(foo) 
c.fun() 
c.bar() 
関連する問題