とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

Python 関数の定義とヘルプの書き方

WindowsでPython シリーズ その13


とうとう来ました関数定義の巻。
だんだんプログラミングらしくなってきました。
関数定義を学習し、冗長的なコードから開放されたいと思います。

これまでコードの確認にprint()を多様してきました。
出力結果を見やすくするために無駄にprint()なんて書いてましたけど、関数定義をすることで自動的に改行付きのprint()を実装することができます。

それではいってみましょう!

関数定義をする前に


コーディングを適当にして変なクセが付いてしまうと、後でとても後悔します。
醜いコードになります。
なのできちんとコーディング規則に従って関数を定義することに専念します。

今回参考にするマニュアルはコチラ

  • 4.6. 関数を定義する
  • 4.7.6. ドキュメンテーション文字列
  • 4.8. 間奏曲: コーディングスタイル


  • つまり
    「関数の宣言方法」
    で、書き方を

    「関数の説明(docstring)」
    で、ヘルプ呼び出し時に説明がでるようにして

    「関数の命名規則(コーディング規則」
    で、書くだけじゃなくてキレイに書こう

    ということですね。

    関数定義とdocstring


    docstringとは、その関数の説明書のことです。help(関数名)と書くと表示されます。
    今回はマニュアルにそって関数定義をして、関数の実行とhelpを見てみます。



    実行結果
    Python 関数の定義とヘルプの書き方

    いかがでしょうか。
    printの代わりにprint_and_lineを使うことで、自動改行が行われています。
    さらにdocstringで、helpすればその説明が表示されています。
    書き方は、マニュアルのコーディングスタイルに従って記載しました。
    しかし、完全にルールを守っている訳ではなく、日本語コメントを使ったりしています。(この当たりは日本文化風に・・)

    あと、命名規則には
    self をメソッドの第 1 引数の名前 (クラスやメソッドについては クラス初見 を見よ) として使うこと。
    と書いてるんですが、利用事例を見てるとクラスのメソッドでの利用例がほとんどだったので、関数に関して、第一引数をsとしています。関数でもselfと名付けたほうがいいのかな?
    とまぁ、何より大事なのは一貫性を保つことのようなので、今回はこれでよしとしておきます。

    関数名などは以下に記載のように、lower_case_with_underscores で定義しています。
    インデントには空白 4 つを使い、タブは使わないこと。

    空白 4 つは (深くネストできる) 小さいインデントと (読み易い) 大きいインデントのちょうど中間に当たります。タブは混乱させるので、使わずにおくのが良いです。

    ソースコードの幅が 79 文字を越えないように行を折り返すこと。

    こうすることで小さいディスプレイを使っているユーザも読み易くなり、大きなディスプレイではソースコードファイルを並べることもできるようになります。

    関数やクラスや関数内の大きめのコードブロックの区切りに空行を使うこと。

    可能なら、コメントは行に独立で書くこと。

    docstring を使うこと。

    演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れないこと: a = f(1, 2) + g(3, 4)。

    クラスや関数に一貫性のある名前を付けること。慣習では CamelCase をクラス名に使い、 lower_case_with_underscores を関数名やメソッド名に使います。常に self をメソッドの第 1 引数の名前 (クラスやメソッドについては クラス初見 を見よ) として使うこと。

    あなたのコードを世界中で使ってもらうつもりなら、風変りなエンコーディングは使わないこと。どんな場合でも、Python のデフォルト UTF-8 またはプレーン ASCII が最も上手くいきます。

    同様に、ほんの少しでも他の言語を話す人がコードを読んだりメンテナンスする可能性があるのであれば、非 ASCII 文字も識別子に使うべきではありません。


    できそうなことが増えてきた


    さて関数を学ぶと、部品を色々つくってゴニョゴニョできそうな気がしてきました。
    そろそろpyファイルをエディタから実行するんじゃなくて、一つのプログラムとして呼び出したいところ・・・
    そんなことできるんかな?
    ▼この記事を読んだ方は、こんな記事も読んでいます。▼

    スポンサードリンク

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバック URL
    http://dalmore.blog7.fc2.com/tb.php/173-50846fb6
    この記事にトラックバックする(FC2ブログユーザー)

    FC2Ad