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

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

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

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

ドキュメント

ドキュメントは、IT用語では、ソフトウェアやハードウェアに関する情報であり、意図された目的、機能性、メインテナンスを含みます。ドキュメントは、多くの様々なフォームとフォーマットに存在しますが、その目的は常に教育することにあります。

Python

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

PyCharm

エディター・開発ツール

Q&A

解決済

3回答

302閲覧

pygameソース内のコメントの->の意味は?

palm-t

総合スコア37

Python 3.x

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

ドキュメント

ドキュメントは、IT用語では、ソフトウェアやハードウェアに関する情報であり、意図された目的、機能性、メインテナンスを含みます。ドキュメントは、多くの様々なフォームとフォーマットに存在しますが、その目的は常に教育することにあります。

Python

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

PyCharm

エディター・開発ツール

1グッド

0クリップ

投稿2017/10/07 11:44

###前提・実現したいこと
現在、「ゲームを作りながら楽しく学べるPythonプログラミング」という本で
pygameを使って学習しています。

例として円を描画するcircle()メソッドがあるのですが、IDEで定義を見ると
以下のように書かれています。

python

1def circle(Surface, color, pos, radius, width=0): # real signature unknown; restored from __doc__ 2 """ 3 circle(Surface, color, pos, radius, width=0) -> Rect 4 draw a circle around a point 5 """ 6 pass 7

"""に囲まれている部分は、コメントでメソッドの説明だと思うのですが
「-> Rect」
の部分の意味がはっきりと分かりません。

おそらく、返り値の種類などを示しているのではと思うのですが。
この書き方は、pythonでのコメントやメソッドの説明時の慣習だったりするのでしょうか?
それとも、規約などがあったりするのでしょうか?

よろしくお願いします。

shimizukawa👍を押しています

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

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

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

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

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

guest

回答3

0

circle(Surface, color, pos, radius, width=0) -> Rect

このように 関数シグネチャ -> 返すもの 形式でdocstringを提供するのは、pythonのC実装関数(主に組み込み関数等)で関数のヘルプドキュメントを提供するときの書き方です。規約は見つけられませんでした(知ってる方いたら教えてください)ので、おそらく慣習ということになります。

例えばstrのdocstringを見ると以下のように表示されます。

python

1>>> help(str) 2Help on class str in module builtins: 3 4class str(object) 5 | str(object='') -> str 6 | str(bytes_or_buffer[, encoding[, errors]]) -> str

これはPython本体での例ですが、pygameなどのC実装された関数を提供するライブラリでは、この記法で表示するようにdocstringを合わせていると思います。


以下、オマケ情報です。

Pythonの関数、メソッドは常にこのようにdocstringを書くのが正しいかというと、C実装ではないPure Python関数などでは書くべきではありません。
https://www.python.org/dev/peps/pep-0257/ では、 The one-line docstring should NOT be a "signature" reiterating the function/method parameters (which can be obtained by introspection) という説明があり、書くべきでは無いとされています。


他の方が書かれているように、Pure Pythonの関数宣言に型情報を書けるようになったのが、型アノテーション、型ヒント、type hintsと呼ばれるものです。これはpygameのdocstringとは別ですが、これによって、Pure Pythonの世界で ->
の記法を文法化して、コードの一部として書けるようになりました。(一次情報が見つからなかったので推測ですが、CPython関数で -> のように慣習(?)で書かれていた記法の影響を受けているんじゃないかなあ。)

初めは、文法だけがPython3で導入され、Python 3.5ではtype hintsが正式に導入されました。以下のように書けます。

python

1def get_something(age:int) -> str: 2 ...

type hints は規約、文法の規定があります。

投稿2017/10/08 00:05

shimizukawa

総合スコア1847

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

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

0

ベストアンサー

Pythonは動的型付け言語です。
たまに勘違いする人がいるのですが、型自体は確かに存在します。

コーディングをする際、型を明示したいときに、型ヒントが用いられます。
こちらのページが非常に参考になります。

Python

1def greeting(name: str) -> str: 2 return 'Hello ' + name

このように、引数の型と戻り値の型を明示することが出来るのです。
(使い方を間違えてもエラーは出ませんが、IDEが警告を出すことはあります。)

この型ヒントをベースに、戻り値の型をコメントしているのでしょう。

追記
型ヒントは便利ですが、あんまり多用するとPythonらしい型の簡潔さを失います。
ほどほどに使うのが良いでしょうね。

投稿2017/10/07 13:16

編集2017/10/07 16:33
LouiS0616

総合スコア35660

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

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

0

pygameのオブジェクトの意味だと思います。rectangleの略だと思います。

参考
http://westplain.sakuraweb.com/translate/pygame/Rect.cgi

投稿2017/10/07 13:03

GOTA77

総合スコア160

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

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

palm-t

2017/10/07 13:08

回答ありがとうございます。 ということはpygameを作った人がこういう書き方をしているだけで ->が返り値を示す規約などは特にないのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問