質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

501閲覧

Python def関数の最適な記述方法

sin471

総合スコア50

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/31 10:21

Pythonのdef関数を使用する際の記述方法について
可読性や保守性等を考えたときにどの方法がベストなのか分からなかったので質問させていただきました

該当のソースコード

すべて渡された値を+1して表示する関数です(実行結果は2)

Python

1#1つ目 2def add1(): 3 a=1 4 a+=1 5 print(a) 6add1()

python

1#2つ目 2a=1 3def add2(): 4 b=a+1 5 print(b) 6 7add2()

Python

1#3つ目 2def add3(a): 3 a+=1 4 print(a) 5 6add3(1)

Python

1#4つ目 2def add4(a): 3 a+=1 4 return a 5 6print(add4(1))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

1は値を渡すことができないので要件に合いません。
2は予めaに値を代入する必要があり使いづらいです。マルチスレッドにできません。
3は要件を満たしますが、printしたくないときや出力形式を変えたいときに対応できません。
4が一番扱いやすいでしょうね。

あと、第5の選択肢として。やってることは4と同じです。

Python

1def add5(a): 2 return a + 1

投稿2020/10/31 10:28

編集2020/10/31 10:30
LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

処理とその出力をひとつのメソッド中で行ってしまうと、単体テストがちょっと面倒になります。
(See 下の参考情報)

計算処理だけをメソッドにしておいたほうが保守の面では好ましいかもしれません。

その観点では、4番目が良さそうです。

python3

1def add4(a): 2 a += 1 3 return a

参考情報

  • Pytestで標準出力をテストする

https://qiita.com/okky_eng/items/4e4c9c3ceff4c82a22d5

投稿2020/11/03 00:37

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問