🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Python

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

Q&A

解決済

4回答

529閲覧

python3の関数を呼び出す際の引数について

p_q_

総合スコア35

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2021/01/27 03:37

pythonにおける関数を呼び出す際の引数についての質問です。例えば以下のような関数があったとします。関数を呼び出すコードとしてパターン1とパターン2を書きました。違いは引数を明示しているか、していないかです。どちらもパフォーマンスが変わることはないと思うのですが、どちらを採用すべきですか?。また引数を明示したほうがいい場合としなくてもよい場合も教えて頂くと幸いです。

python

1def calc(a, b): 2 return a + b 3 4# パターン1 5sum = calc(a=1, b=2) 6 7# パターン2 8sum = calc(1, 2)

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

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

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

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

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

guest

回答4

0

ベストアンサー

個人的なイメージなので、一般論として正しいのかはわかりませんが、値が必須の引数では名前を記述せず、デフォルト値が与えられている引数の値を変更する場合は名前を記述するようなことが多い印象があります。

Python

1def calc(a, b, c=3, d=2): 2 # a + b + c + dを求める関数、cとdはデフォルト値あり 3 return a + b + c + d 4 5ans = calc(3, 2) # 必須のa,bのみを指定するときはそのまま書く 6 7ans = calc(3, 2, d=1) # デフォルト値のある引数dを変える場合は名前を指定する 8

これは、必ず指定するものは順番が決まっているので、別にわざわざ明示する必要はない。
デフォルト値があるものは、指定せずに利用することもあるため、変えた場所をわかりやすくするために指定する。といったイメージです。

この場合、関数を定義する際に、デフォルト値がない、指定が必須のものを前に書き、デフォルト値が存在するオプション的なものを後ろに並べることが必須になります。

投稿2021/01/27 03:57

Amakaze

総合スコア313

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

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

0

ぱっと見でそれぞれの引数の意味がわかるなら、calc(1, 2) でいいと思います。
そういう意味だと関数名は add(1, 2) の方がいいですね。

引数が 5個とか 10個とかになるとどれがどれだかわからなくなるので、
calc(a=1, b=2) のキーワード指定の方がよいと思います。

また、自明なものはキーワードを書かないほうがわたしはよいと思いますので、下記であれば 1 ですね (初心者にとっては mode は自明ではない、となるのでしょうけれども)

1. open("file.txt", "rw", encoding="utf-8") 2. open("file.txt", mode="rw", encoding="utf-8") 3. open(file="file.txt", mode="rw", encoding="utf-8")

なお、キーワード指定だと関数側の引数順序が変わっても影響がないというメリットもあります。

投稿2021/01/27 03:49

68user

総合スコア2022

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

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

0

パフォーマンスは微妙に違いますが、気にするほどのものではありません。

自分で定義した関数であれば、どちらを使うかは個人の好みです。

ただ、以下のような使い方はやめておいた方が無難だと私は思います。

python

1>>> def calc(a, b): 2... return a + b 3... 4>>> calc(b=2, a=1) 53

投稿2021/01/27 03:49

ppaul

総合スコア24670

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

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

0

引数を順番に指定するか、名前で指定するか、ですね
パターン1では順番を気にしなくていいし、
パターン2では名前を気にしなくてもいいってことで。

あなたのわかりやすいようにすればいいかと思います

投稿2021/01/27 03:45

y_waiwai

総合スコア88038

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問