 |
 |
 |
Python/C API ¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë |
 |
 |
 |
2. ͹â¥ì¥Ù¥ë¥ì¥¤¥ä
¤³¤Î¾Ï¤Î´Ø¿ô¤ò»È¤¦¤È¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ð¥Ã¥Õ¥¡¤Ë¤¢¤ëPython¥½¡¼¥¹¥³¡¼¥É¤ò
¼Â¹Ô¤Ç¤¤Þ¤¹¤¬¡¢¤è¤ê¾ÜºÙ¤Ê¤ä¤ê¼è¤ê¤ò¥¤¥ó¥¿¥×¥ê¥¿¤È¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤Ç¤·¤ç¤¦¡£
¤³¤ì¤é¤Î´Ø¿ô¤Î¤¤¤¯¤Ä¤«¤Ï°ú¿ô¤È¤·¤ÆÊ¸Ë¡¤Î³«»Ïµ¹æ¤ò¼õ¤±¼è¤ê¤Þ¤¹¡£
»ÈÍѤǤ¤ë³«»Ïµ¹æ¤ÏPy_eval_input¤ÈPy_file_input¡¢
Py_single_input¤Ç¤¹¡£³«»Ï´ü¹æ¤ÎÀâÌÀ¤Ï¤³¤ì¤é¤ò°ú¿ô¤È¤·¤Æ¼è¤ë
´Ø¿ô¤Î¸å¤Ë¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤é¤Î´Ø¿ô¤Î¤¤¤¯¤Ä¤«¤¬FILE*°ú¿ô¤ò¤È¤ë¤³¤È¤Ë¤âÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
Ãí°Õ¿¼¤¯°·¤¦É¬Íפ¬¤¢¤ëÆÃÊ̤ÊÌäÂê¤Ë¤Ï¡¢°Û¤Ê¤ëC¥é¥¤¥Ö¥é¥ê¤ÎFILE¹½Â¤ÂΤÏ
°Û¤Ê¤Ã¤Æ¤¤¤Æ¸ß´¹À¤¬¤Ê¤¤²ÄǽÀ¤¬¤¢¤ë¤È¤¤¤¦¤³¤È¤¬´Ø·¸¤·¤Æ¤¤¤Þ¤¹¡£
¼ÂºÝ¤Ë(¾¯¤Ê¤¯¤È¤â)Windows¤Ç¤Ï¡¢Æ°Åª¥ê¥ó¥¯¤µ¤ì¤ë³ÈÄ¥¤¬°Û¤Ê¤ë¥é¥¤¥Ö¥é¥ê¤ò
»È¤¦¤³¤È¤¬²Äǽ¤Ç¤¢¤ê¡¢¤·¤¿¤¬¤Ã¤Æ¡¢FILE*°ú¿ô¤¬Python¥é¥ó¥¿¥¤¥à¤¬
»È¤Ã¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥ê¤ÈƱ¤¸¥é¥¤¥Ö¥é¥ê¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤¿¤³¤È¤¬³Î¤«¤Ê¤é¤Ð¡¢
ñ¤Ë¤³¤ì¤é¤Î´Ø¿ô¤ØÅϤ¹¤À¤±¤È¤¤¤¦¤³¤È¤ËÃí°Õ¤¹¤Ù¤¤Ç¤¹¡£
int Py_Main( | int argc, char **argv) |
-
ɸ½à¥¤¥ó¥¿¥×¥ê¥¿¤Î¤¿¤á¤Î¥á¥¤¥ó¥×¥í¥°¥é¥à¡£Python¤òÁȤ߹þ¤à
¥×¥í¥°¥é¥à¤Î¤¿¤á¤Ë¤³¤ì¤òÍøÍѤǤ¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
argc¤Èargv°ú¿ô¤òC¥×¥í¥°¥é¥à¤Îmain()´Ø¿ô¤Ø
ÅϤµ¤ì¤ë¤â¤Î¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤ËºîÀ®¤¹¤Ù¤¤Ç¤¹¡£
°ú¿ô¥ê¥¹¥È¤¬Êѹ¹¤µ¤ì¤ë²ÄǽÀ¤¬¤¢¤ë¤È¤¤¤¦ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¤Ï½ÅÍפǤ¹¡£
(¤·¤«¤·¡¢°ú¿ô¥ê¥¹¥È¤¬»Ø¤·¤Æ¤¤¤ëʸ»úÎó¤ÎÆâÍÆ¤ÏÊѹ¹¤µ¤ì¤Þ¤»¤ó)¡£
Ìá¤êÃͤÏsys.exit()´Ø¿ô¤ØÅϤµ¤ì¤ëÀ°¿ô¤Ç¤·¤ç¤¦¡£
Îã³°¤¬¸¶°ø¤Ç¥¤¥ó¥¿¥×¥ê¥¿¤¬½ªÎ»¤·¤¿¾ì¹ç¤Ï
1
¡¢¤¢¤ë¤¤¤Ï¡¢
°ú¿ô¥ê¥¹¥È¤¬Í¸ú¤ÊPython¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï2
¤Ç¤¹¡£
int PyRun_AnyFile( | FILE *fp, char *filename) |
-
fp¤¬ÂÐÏÃŪ¥Ç¥Ð¥¤¥¹(¥³¥ó¥½¡¼¥ë¤äüËöÆþÎϤ¢¤ë¤¤¤ÏUnix²¾ÁÛüËö)¤È
´ØÏ¢¤Å¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¤¤ë¤Ê¤é¤Ð¡¢
PyRun_InteractiveLoop()¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢
PyRun_SimpleFile()¤Î·ë²Ì¤òÊÖ¤·¤Þ¤¹¡£filename¤¬
NULL¤Ê¤é¤Ð¡¢¤³¤Î´Ø¿ô¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ
"???"
¤ò»È¤¤¤Þ¤¹¡£
int PyRun_SimpleString( | char *command) |
-
__main__¥â¥¸¥å¡¼¥ë¤ÎÃæ¤Çcommand¤Ë´Þ¤Þ¤ì¤ëPython¥½¡¼¥¹¥³¡¼¥É¤ò
¼Â¹Ô¤·¤Þ¤¹¡£__main__¤¬¤Þ¤À¸ºß¤·¤Ê¤¤¾ì¹ç¤ÏºîÀ®¤µ¤ì¤Þ¤¹¡£
Àµ¾ï½ªÎ»¤Î¾ì¹ç¤Ï
0
¤òÊÖ¤·¡¢¤Þ¤¿Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï-1
¤ò
ÊÖ¤·¤Þ¤¹¡£¥¨¥é¡¼¤¬¤¢¤Ã¤Æ¤â¡¢Îã³°¾ðÊó¤òÆÀ¤ëÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£
int PyRun_SimpleFile( | FILE *fp, char *filename) |
-
PyRun_SimpleString()¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Python¥½¡¼¥¹¥³¡¼¥É¤ò
¥á¥â¥êÆâ¤Îʸ»úÎó¤Ç¤Ï¤Ê¤¯fp¤«¤éÆÉ¤ß¹þ¤ß¤Þ¤¹¡£
filename¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
int PyRun_InteractiveOne( | FILE *fp, char *filename) |
-
ÂÐÏÃŪ¥Ç¥Ð¥¤¥¹¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤«¤éʸ¤ò°ì¤ÄÆÉ¤ß¹þ¤ß¼Â¹Ô¤·¤Þ¤¹¡£
filename¤¬NULL¤Ê¤é¤Ð¡¢
"???"
¤¬Âå¤ï¤ê¤Ë»È¤ï¤ì¤Þ¤¹¡£
sys.ps1
¤Èsys.ps2
¤ò»È¤Ã¤Æ¡¢¥æ¡¼¥¶¤Ë¥×¥í¥ó¥×¥È¤òÄ󼨤·¤Þ¤¹¡£
ÆþÎϤ¬Àµ¾ï¤Ë¼Â¹Ô¤µ¤ì¤¿¤È¤¤Ï0
¤òÊÖ¤·¤Þ¤¹¡£Îã³°¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï
-1
¤òÊÖ¤¹¤«¡¢¤â¤·¤¯¤Ï¥Ñ¡¼¥¹¥¨¥é¡¼¤Î¾ì¹ç¤ÏPython¤Î°ìÉô¤È¤·¤ÆÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë
errcode.h¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Ë¤¢¤ë¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£
(Python.h¤Ïerrcode.h¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Þ¤»¤ó¡£¤·¤¿¤¬¤Ã¤Æ¡¢
ɬÍפʤé¤ÐÆÃÊ̤˥¤¥ó¥¯¥ë¡¼¥É¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£)
int PyRun_InteractiveLoop( | FILE *fp, char *filename) |
-
ÂÐÏÃŪ¥Ç¥Ð¥¤¥¹¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤«¤éEOF ¤Ë㤹¤ë¤Þ¤ÇÊ£¿ô¤Îʸ¤ò
ÆÉ¤ß¹þ¤ß¼Â¹Ô¤·¤Þ¤¹¡£filename¤¬NULL¤Ê¤é¤Ð¡¢
"???"
¤¬Âå¤ï¤ê¤Ë
»È¤ï¤ì¤Þ¤¹¡£sys.ps1
¤Èsys.ps2
¤ò»È¤Ã¤Æ¡¢¥æ¡¼¥¶¤Ë¥×¥í¥ó¥×¥È¤ò
Ä󼨤·¤Þ¤¹¡£EOF¤Ë㤹¤ë¤È0
¤òÊÖ¤·¤Þ¤¹¡£
struct _node* PyParser_SimpleParseString( | char *str,
int start) |
-
³«»Ï¥È¡¼¥¯¥óstart¤ò»È¤Ã¤Æstr¤Ë´Þ¤Þ¤ì¤ëPython¥½¡¼¥¹¥³¡¼¥É¤ò¥Ñ¡¼¥¹¤·¤Þ¤¹¡£
¸úΨŪ¤Ëɾ²Á²Äǽ¤Ê¥³¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤¹¤ë¤¿¤á¤Ë¤½¤Î·ë²Ì¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥³¡¼¥ÉÃÇÊÒ¤ò²¿ÅÙ¤âɾ²Á¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¾ì¹ç¤ËÌò¤ËΩ¤Á¤Þ¤¹¡£
struct _node* PyParser_SimpleParseFile( | FILE *fp,
char *filename, int start) |
-
PyParser_SimpleParseString()¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢
Python¥½¡¼¥¹¥³¡¼¥É¤ò¥á¥â¥êÆâ¤Îʸ»úÎó¤Ç¤Ï¤Ê¤¯fp¤«¤éÆÉ¤ß¹þ¤ß¤Þ¤¹¡£
filename¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤Ê¤±¤ì¤Ê¤Ê¤ê¤Þ¤»¤ó¡£
PyObject* PyRun_String( | char *str, int start,
PyObject *globals,
PyObject *locals) |
-
Ìá¤êÃÍ:
¿·¤¿¤Ê»²¾È.
¼½ñglobals¤Èlocals¤Ç»ØÄꤵ¤ì¤ë¥³¥ó¥Æ¥¥¹¥È¤Ë¤ª¤¤¤Æ¡¢
str¤Ë´Þ¤Þ¤ì¤ëPython¥½¡¼¥¹¥³¡¼¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¥Ñ¥é¥á¡¼¥¿start¤Ï¥½¡¼¥¹¥³¡¼¥É¤ò¥Ñ¡¼¥¹¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¤Ù¤
³«»Ï¥È¡¼¥¯¥ó¤ò»ØÄꤷ¤Þ¤¹¡£
¥³¡¼¥É¤ò¼Â¹Ô¤·¤¿·ë²Ì¤òPython¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£¤Þ¤¿¤Ï¡¢
Îã³°¤¬È¯À¸¤·¤¿¤Ê¤é¤ÐNULL ¤òÊÖ¤·¤Þ¤¹¡£
PyObject* PyRun_File( | FILE *fp, char *filename,
int start, PyObject *globals,
PyObject *locals) |
-
Ìá¤êÃÍ:
¿·¤¿¤Ê»²¾È.
PyRun_String()¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢Python¥½¡¼¥¹¥³¡¼¥É¤ò
¥á¥â¥êÆâ¤Îʸ»úÎó¤Ç¤Ï¤Ê¤¯fp¤«¤éÆÉ¤ß¹þ¤ß¤Þ¤¹¡£
filename¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
PyObject* Py_CompileString( | char *str, char *filename,
int start) |
-
Ìá¤êÃÍ:
¿·¤¿¤Ê»²¾È.
strÆâ¤ÎPython¥½¡¼¥¹¥³¡¼¥É¤ò¥Ñ¡¼¥¹¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¡¢
ºî¤é¤ì¤¿¥³¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤·¤Þ¤¹¡£³«»Ï¥È¡¼¥¯¥ó¤Ï
start¤Ë¤è¤Ã¤ÆÍ¿¤¨¤é¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥³¥ó¥Ñ¥¤¥ë²Äǽ¤Ê¥³¡¼¥É¤ò
À©¸Â¤¹¤ë¤¿¤á¤Ë»È¤¦¤³¤È¤¬¤Ç¤¡¢Py_eval_input¡¢
Py_file_input¤â¤·¤¯¤ÏPy_single_input¤Ç¤¢¤ë¤Ù¤¤Ç¤¹¡£
filename¤Ç»ØÄꤵ¤ì¤ë¥Õ¥¡¥¤¥ë̾¤Ï¥³¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¤ò¹½ÃÛ¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¡¢
¥È¥ì¡¼¥¹¥Ð¥Ã¥¯¤¢¤ë¤¤¤ÏSyntaxErrorÎã³°¥á¥Ã¥»¡¼¥¸¤Ë½Ð¤Æ¤¯¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
¥³¡¼¥É¤¬¥Ñ¡¼¥¹¤Ç¤¤Ê¤«¤Ã¤¿¤ê¥³¥ó¥Ñ¥¤¥ë¤Ç¤¤Ê¤«¤Ã¤¿¤ê¤·¤¿¾ì¹ç¤Ë¡¢
¤³¤ì¤ÏNULL ¤òÊÖ¤·¤Þ¤¹¡£
- int Py_eval_input
-
ñÆÈ¤Î¼°¤ËÂФ¹¤ëPythonʸˡ¤Î³«»Ïµ¹æ¤Ç¡¢
Py_CompileString()Ȱì½ï¤Ë»È¤¤¤Þ¤¹¡£
- int Py_file_input
-
¥Õ¥¡¥¤¥ë¤¢¤ë¤¤¤Ï¾¤Î¥½¡¼¥¹¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿Ê¸¤ÎʤӤËÂФ¹¤ëPythonʸˡ¤Î
³«»Ïµ¹æ¤Ç¡¢Py_CompileString()È
°ì½ï¤Ë»È¤¤¤Þ¤¹¡£¤³¤ì¤ÏǤ°Õ¤ÎŤµ¤ÎPython¥½¡¼¥¹¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤¤Ë
»È¤¦µ¹æ¤Ç¤¹¡£
- int Py_single_input
-
ñ°ì¤Îʸ¤ËÂФ¹¤ëPythonʸˡ¤Î³«»Ïµ¹æ¤Ç¡¢
Py_CompileString()Ȱì½ï¤Ë»È¤¤¤Þ¤¹¡£
¤³¤ì¤ÏÂÐÏü°¤Î¥¤¥ó¥¿¥×¥ê¥¿¥ë¡¼¥×¤Î¤¿¤á¤Îµ¹æ¤Ç¤¹¡£
 |
 |
 |
Python/C API ¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë |
 |
 |
 |
Release 2.3.3, documentation updated on December 19, 2003.
¤´°Õ¸«¤ä¤´»ØÅ¦¤ò¤ª´ó¤»¤Ë¤Ê¤ê¤¿¤¤Êý¤Ï¡¢ ¤³¤Î¥É¥¥å¥á¥ó¥È¤Ë¤Ä¤¤¤Æ... ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£