2017-10-21 7 views
1

私はオンラインで回答を探してみましたが見つかりませんでした。私はかなり新しいPythonとあなたがプログラムで複数の主な機能を持つことができるかどうか疑問に思っています。例:Python __name __()main function

ask_user = int(input('enter your choice (1 or 2): ')) 

if ask_user == 1: 
    def print_hello(): 
     print('hello world') 
    def main(): 
     print_hello() 

    if __name__ == '__main__': main() 

elif ask_user == 2: 
    def print_hi(): 
     print('hi') 
    def main(): 
     print_hi() 

    if __name__ == '__main__': main() 

これは良いプログラミング方法ですか?

+3

あなたは*できますが、それは本当に奇妙で、誤解を招き、無意味です。 – user2357112

+1

この質問は、同じプログラムの異なるブロック内で同じ名前の複数の関数を定義することができるかどうかを尋ねる特別なケースです(これまでに質問されています)(https://stackoverflow.com/q/45109185/831878)。 –

+0

ありがとうございます。関数を呼び出す最良の方法は何でしょうか? ArgumentParser()で引数を渡す場合。何が最善の方法でしょうか? –

答えて

2

これは良いプログラミング手法ではありません。 index.htmlのように、main()のポイントは、プログラムのプライマリエントリポイントを持つことです。たとえ特定の言語がそのようなことを許したとしても、誰かがコードを読んでどこから始めるべきなのか混乱させるでしょう。表示オプションについては、print_hello_worldprint_hiのような意味のある名前を持つ別々の関数を使用し、両方ともmain()によって呼び出すことができます。

+0

'main()'関数の 'def print_hello()'と 'def print_hi()'の両方の関数を追加するにはどうしたらいいですか? –

+0

私はそれを行う方法を示すためのスクリプトを書いています:https://repl.it/MzdE –

+0

別の関数の中で関数を定義すると、その関数内でのみ使用できます。 Python開発者は、プログラムの残りの部分とは関係のない、非常に特殊な関数に対してネストされた関数を使用しています。あなたはあなたがそれをやる方法について非常に意図的でなければなりません。 –