
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 正規表現について教えてく...
-
プログラム言語
-
pythonでのローカルファイルか...
-
vba クリップボードクリアにつ...
-
今のプログラミング言語
-
数学、プログラミング、物理、...
-
プログラミング言語のバージョ...
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
uwscでPauseキーが押されたら、...
-
数行削除してコピーするbatファ...
-
itエンジニアに就職希望で未経...
-
Python... 環境設定 初心者です...
-
if関数とは?
-
著作権法について
-
プログラミングについて
-
自作scratch アニメの商用利用
-
趣味がプログラミングだと言っ...
-
OS入ってる機器のソフト・アプ...
-
COPYコマンドで、最後に1文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
VBプログラムをEXCEL VBAに移植...
-
C言語のHP-UXからLinuxへのポ...
-
VB.net エラーメッセージを英文...
-
小中学校でプログラミングなん...
-
SNMPトラップ情報をC#.netで作...
-
printf系の書式「w」ってなに?
-
C言語プログラミング 逆行列を...
-
スクエニ バグ
-
Windows と WindowsVista の違...
-
無料のクリックカウンターない...
-
ニンテンドーDS用、自作プロ...
-
会話ができるLINEボットの設計...
-
ランチャーの作り方について教...
-
<python> main():関数
-
Ryzen 3700(無印)はWin11に対応...
-
Cプログラムの解析(関数の呼び...
-
AIなんて所詮人間のプログラ...
-
PICのI2C通信のプログラムについて
-
このプログラミング誰か教えて...
おすすめ情報