Python 3 エンジニア認定実践試験対策として、第2章「コーディング規約」について、ChatGPTで生成した模擬問題です。
生成された問題の適切性と“正解”回答の正しさは一通り検証しておりますので、皆さんのご参考になれれば嬉しいです。
問題
問題は以下になります。問題の下に正解を隠してますので、クリックしたら確認できます。
あとは、検証した内容や補足を付け加えてますので参考にしてください。
- Pythonコーディング規約に従うための標準的なスタイルガイドは何ですか?
- a) PIP8
- b) PEP8
- c) PEP20
- d) PIP20
クリックして正解と解説をチェック
正解: b) PEP8問題見て悩むならだいぶ怪しくなりますので、その場合は一番最初に思い浮かんだ選択肢にするといいかもしれません。
問題見てパッと答えが出るように、PIPはパッケージ管理のコマンドであり、PEPは「Python Enhancement Proposals」の略であり、直訳すると「Pythonの機能強化の提案」と覚えておきましょう!ちなみに、ChatGPTが出した選択肢b)は
PEP7
でした。これも情報が古いせいなのかと思ったが、なんと出してくれた正解はa) PIP8
でした。
これは流石に違うでしょう。。そのため、選択肢と正解を修正しています。 - Pythonコーディング規約では、インデントには何を使用することが推奨されていますか?
- a) 2つのスペース
- b) 4つのスペース
- c) タブ
- d) 1つのスペース
クリックして正解と解説をチェック
正解: b) 4つのスペース悩む要素はc) タブかなと思いますが、テキストP19で紹介されているように、基本のインデントはスペース4つです。
- コード内の行の最大文字数は、Pythonコーディング規約によれば何文字ですか?
- a) 79文字
- b) 99文字
- c) 119文字
- d) 159文字
クリックして正解と解説をチェック
正解: a) 79文字テキストはP29、PEP8の原文はMaximum Line Lengthについて紹介された次の通りです。
Limit all lines to a maximum of 79 characters.
- Pythonコーディング規約では、クラス名に使用する命名規則は何ですか?
- a) CamelCase
- b) lowercase
- c) snake_case
- d) UPPERCASE
クリックして正解と解説をチェック
正解: a) CamelCaseテキストP24、PEP8のDescriptive: Naming Stylesになります。
- クラスの名前:CamelCase
- パッケージとモジュールの名前:lowercaseまたはlower_case
- 関数や変数の名前:snake_case
- 定数の名前:UPPERCASEまたはUPPER_CASE
ちなみに、ChatGPT元の問題は
a) camelCase
、b) PascalCase
で、正解はb)でした。厳密に言うと、呼び方的にはChatGPTのほうが正しいかと思います。
しかし、テキストP24には、表:表記方法
の中に、CamelCaseについて次のように定義されています。単語の先頭の文字を大文字にする(CapWords, CapitalizedWords, StudlyCapsとも呼ばれる)
したがって、もしこのよう問題出たとすれば、CamelCaseを選ぶのが正しいでしょう。
- Pythonコーディング規約では、import文でのモジュールの順序に関する推奨事項があります。最初に何をimportすべきですか?
- a) 標準ライブラリモジュール
- b) サードパーティライブラリモジュール
- c) プロジェクト内のモジュール
- d) どの順序でも構わない
クリックして正解と解説をチェック
正解: a) 標準ライブラリモジュールテキストP20になります。推奨順序は以下です。
- 標準ライブラリ
- サードパーティに関連するもの
- ローカルのライブラリ
また、ソースコードの自動整形ツールBlackがありますが、このツールにはimport文の順序チェックや修正は行われません。これは実際の試験で出た知識点ですので、覚えておきましょう!
import文の順序チェックや修正するライブラリにisortがあります。
- Pythonコーディング規約では、クラスのメソッドの第一引数に何を使用することが一般的ですか?
- a) self
- b) cls
- c) this
- d) me
クリックして正解と解説をチェック
正解: a) selfこれは第4章クラスの内容ですね。テキストでいうP84になります。selfという名前は慣例です。
- コード内で単一引用符(シングルクォート)または二重引用符(ダブルクォート)を使用する際、Pythonコーディング規約ではどちらが推奨されていますか?
- a) 単一引用符
- b) 二重引用符
- c) どちらでも可
- d) 引用符の種類は問わない
クリックして正解と解説をチェック
正解: c) どちらでも可ChatGPTが出した正解はa) 単一引用符でしたが、PEP8の該当内容String Quotesには次の記述になってます。
In Python, single-quoted strings and double-quoted strings are the same. This PEP does not make a recommendation for this. Pick a rule and stick to it. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. It improves readability.
PEPではどちらでもいいと言っており、異なる種類引用符の組み合わせてでエスケープを避けることでコードの可読性を上げましょう的なニュアンスだと思います。
つまり、"{\"key\":\"value\"}"
になるなら、'{"key":"value"}'
のほうがいいでしょうというところになります。 - Pythonコーディング規約において、変数名や関数名において使用する命名規則は何ですか?
- a) CamelCase
- b) lowercase
- c) snake_case
- d) kebab-case
クリックして正解と解説をチェック
正解: c) snake_case前の問題で解説した内容を再掲載します。
テキストP24、PEP8のDescriptive: Naming Stylesになります。- クラスの名前:CamelCase
- パッケージとモジュールの名前:lowercaseまたはlower_case
- 関数や変数の名前:snake_case
- 定数の名前:UPPERCASEまたはUPPER_CASE
- 関数やメソッドの引数の順序について、Pythonコーディング規約では一般的にどのような順序を推奨していますか?
- a) 必須引数、デフォルト引数、可変長引数
- b) デフォルト引数、必須引数、可変長引数
- c) 可変長引数、デフォルト引数、必須引数
- d) 必須引数、可変長引数、デフォルト引数
クリックして正解と解説をチェック
正解: a) 必須引数、デフォルト引数、可変長引数テキストP55、こちらは第3章にある関数の引数に関する内容ですね。
以下のように、可変長位置引数の前にデフォルト値付き引数を定義することになります。def sample_func(param1, default_arg=0, *args):
また、ややこしいことに、可変長キーワード引数も交えて4つの引数が混在する場合、順序はまた変わっており、以下の順番で定義する必要があります。
- 位置引数
- 可変長位置引数
- デフォルト値付き引数
- 可変長キーワード引数
def sample_func(param1, *args, default_arg=0, **kwargs):
- 長い行を読みやすく折り返す際、Pythonコーディング規約では行の継続を示すために何を使用することが推奨されていますか?
- a) バックスラッシュ(\)
- b) セミコロン(;)
- c) ピリオド(.)
- d) コロン(:)
クリックして正解と解説をチェック
正解: a) バックスラッシュ(\)テキストに紹介なかったような気がします。Write a long string on multiple lines in Pythonが参考になります。
次のような感じです。>>> n = 1 + 2 \ ... + 3 >>> n 6 >>> s = 'aaa' \ ... 'bbb' >>> s 'aaabbb'
余談
いかがでしょうか。個人的には、こうやって聞かれるといろいろと気づきがあるもんだなぁ感じております。皆さんのお気づきのきっかけになれると嬉しいです。
コメントを残す