後の末尾にカンマ:Pythonの:私は、関数パラメータリストの末尾のコンマに困惑していますキャッチオール引数
def f(*args,): pass
は私にSyntaxError
例外を稼いでいます。 Python 3では、さらに:
def f(*, arg = 1,): pass
は、構文エラー例外を発生させます。両方とも閉じ括弧を指します。
末尾のカンマを削除すると、すべて静かです。 私はhttps://docs.python.org/3/reference/compound_stmts.html#function-definitionsで私の頭を傷つけていますが、それは何とか私を超えています(そしておそらく間違っています...少なくとも私のブラウザのレンダリングでは、最後の閉じ括弧はparameter_list
の定義にはペアにできません)。 何か間違っていますか? 私は人の
def f(*,
a: "doc A" = 1,
b: "doc B" = 2,
c: "doc C" = 3,
d: "doc D" = 4,
# ... and maybe more,
)
タイプ、およびこの問題の種類-のは(多分それは間違っている部分であり、そして私は人の, a: "doc A" = 1
タイプになる必要があります - しかし、それは私には奇妙に見える)私を悩ませています。
Gentoo ebuildsで配布されているpythonをdev-lang/python 2.7.12と3.5.2(http://www.python.org)として使用しています。
機能的な引数がなくなったときに、最後にカンマが必要なのはなぜですか? –
@be_good_do_good:末尾のカンマで簡単に引数を並べ替えたり、新しいものを追加したりできます。それは編集の便利さとメンテナンスの容易さです。機能面では、もちろん違いはありません。 – Hamlet
@be_good_do_good:行の追加/削除/並び替えの際の一貫性とより小さなバージョン差分のため。彼らは、私が正しく覚えていれば、PEP8を含む多くのスタイルガイドによって奨励されています。 – bluenote10