
No.2ベストアンサー
- 回答日時:
> main():の意味や、用途がよくわかりません。
これだけだと、mainという関数があるということしかわからないので、プログラム全体としてどの様な登場のしかたをしているかをご提示いただいた方が良かったかもしれません。
既に回答がありますように、pythonではmainという名前の関数は特別な意味を持ちません。
でも、他の言語の中には、ここからプログラムの実行を開始しますよという意味でかならず書かなければいけないものもあります。
そういう書き方に慣れた人には、最初に実行する処理をmainという名前の関数にした方がわかり易いのかもしれませんね。
例えば以下の様な書き方をしたプログラムを見たことがあります。
-----
#その他の関数
def other():
#その他の関数の処理を記述
#main関数
def main():
#main関数の処理を記述
#その他の関数を呼び出したりもする
#main関数の実行(プログラムの最後に書く)
main()
-----
No.1
- 回答日時:
んー、基本的にPythonの場合、特にmain関数要らない筈ですがねぇ。
基本的に、貴方が調べた通り、C言語なんかではmain関数は「必ず書かないとならない」ですが。
一応ザックリ解説しておきますが、元々、機械語/アセンブリレベルだと必ず「主プログラム」の部分が必要で、その部分のメモリ上の開始地点(これをエントリポイントと呼びます)を、慣用的に「main」と言うわけです(これは当然'main'と言う名前に「しなければならなかった」わけではなくって、アセンブリ言語作成上での「慣習」です)。
C言語なんかはかなり低レベルなんで、アセンブリでの「習慣」を引き摺った言語設計になっていますが、Pythonみたいな「より」高級言語ですと、別にどの関数がどの関数を呼び出そうとあっちゃらけのけー、なワケで、「mainと名付けた関数を作らないとならない」わけではないです。もちろんmainと言う関数を作っても良いですが、C言語等と違って「強制ではありません」。
どの本がそんな説明してたんでしょうか?
一方、Pythonでスクリプト言語的な使い方をする場合、要するに「端末から呼び出すアプリケーション」を書く場合ですね、次のような書式をファイルの最後に書いたりします。
if '__name__' == '__main__':
# ここに今まで書いたプログラムの本体を記述する。
ただ、基本的には、Windowsの場合、バッチプログラムだとどうなるんだろうな・・・。あんま「あれこれ多種類な言語を使う」自由度はそんなに無いんで、ぶっちゃけ、この辺の「書式」は忘れて構わないとは思いますよ。
注: UNIX/Linux(あるいはMac OS)だとバッチスクリプトをガンガン使う前提で設計されてるので、例えば良くある端末上でのPythonのスクリプトの走らせ方
> python hoge.py
を毎回やるとすげぇメンド臭い事になる。
そこで、UNIX/Linuxでは、端末でファイルを読み込んだ場合、即Pythonインタプリタが起動出来るように、プログラムファイルの冒頭に
#! /usr/bin/python
等のようにインタプリタの呼び出しパス(経路)を記述して、ファイル読み込みと同時に「自動的に」インタプリタを起動する事が出来る。
これをシェバングと呼び、UNIX系のOSとプログラミング言語(例えばPython以外でもPerlとかRubyとか)ではお馴染みのテクニックとなる。
ただし、ファイルの「どの関数が主プログラムなのか」分からない問題、と言うのがここで出てきて、そのために上での
if '__name__' == '__main__':
# ここに今まで書いたプログラムの本体を記述する。
で「主関数」を指定する必要が出てくる。
なお、Windowsでもフツーに、
> python hoge.py
と走らせる時、やっぱり「どれが主関数なのか分からない」問題があって、このように端末上でスクリプトとして走らせる場合はやっぱり、
if '__name__' == '__main__':
# ここに今まで書いたプログラムの本体を記述する。
する必要がある。
ちなみに、Windowsではシェバングの代わりに
@python -x "%~f0" %* & exit /b
と記述して、スクリプトファイルを*.pyではなくって*.batとして保存すればUNIX/Linux、あるいはMacOSみたいに実行出来る・・・と言う話もあるけど、個人的には未確認(試してみてください)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像生成AIのプロンプトの作り...
-
vba クリップボードクリアにつ...
-
pip --versionがエラーになる
-
pythonの実行に関する質問
-
AIの登場でプログラマーたちが...
-
初心者powershellのPS1ファイル...
-
Geminiフォーム 画像生成で 人...
-
OS入ってる機器のソフト・アプ...
-
iOSゲームアプリが作りたいと思...
-
数学、プログラミング、物理、...
-
パイソンのソースコードをChatG...
-
CSVファイルの複数行削除
-
PowerAutomateで運賃検索がした...
-
AIのプログラムについて教えて...
-
プログラミングの進学について
-
Google ColaboでGUI作成
-
Webアプリや業務アプリのデータ...
-
Python 3.12.2 か一番最新のパ...
-
uwscでPauseキーが押されたら、...
-
pythonでAmazonのほしいものリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
VBプログラムをEXCEL VBAに移植...
-
SNMPトラップ情報をC#.netで作...
-
LInuxとWindowsでのPerlの動作...
-
コンソールアプリでファイル選...
-
Ryzen 3700(無印)はWin11に対応...
-
C#のプログラムを読むコツって...
-
VB.net エラーメッセージを英文...
-
JOB名とSTEP名の取得方法を教え...
-
UNIX環境でのCプログラム上でC...
-
ショートカットメニュー
-
Xwindow osf/motifのラジオボタン
-
Visual Basic と VC++ のちが...
-
プログラミング言語について御...
-
C言語でプログラムを作りたい
-
超初心者が数値計算のためにC++...
-
Cプログラムの解析(関数の呼び...
-
printf系の書式「w」ってなに?
-
個人プログラミング
-
プログラマの人件費
おすすめ情報