Rodegast
В таком случае покажи мне PEP в котором это написано.
Вот с исходников питона:
[guest@localhost main]$ grep -r 'def main('
Tools/pynche/Main.py:def main():
Tools/unittestgui/unittestgui.py:def main(initialTestName=""):
Tools/demo/mcast.py:def main():
Tools/demo/redemo.py:def main():
Tools/demo/sortvisu.py:def main():
Tools/demo/rpythond.py:def main():
Tools/demo/life.py:def main(stdscr):
Tools/demo/hanoi.py:def main():
Tools/demo/rpython.py:def main():
Tools/demo/queens.py:def main():
Tools/scripts/md5sum.py:def main(args = sys.argv[1:], out=sys.stdout):
Tools/scripts/win_add2path.py:def main():
Tools/scripts/byteyears.py:def main():
Tools/scripts/rgrep.py:def main():
Tools/scripts/fixheader.py:def main():
Tools/scripts/cleanfuture.py:def main():
Tools/scripts/untabify.py:def main():
Tools/scripts/import_diagnostics.py:def main(args):
Tools/scripts/fixcid.py:def main():
Tools/scripts/checkpyc.py:def main():
Tools/scripts/mkreal.py:def main():
Tools/scripts/mailerdaemon.py:def main():
Tools/scripts/fixnotice.py:def main():
Tools/scripts/pdeps.py:def main():
Tools/scripts/fixdiv.py:def main():
Tools/scripts/dutree.py:def main():
Tools/scripts/find-uname.py:def main(args):
Tools/scripts/svneol.py:def main():
Tools/scripts/reindent-rst.py:def main(argv=sys.argv):
Tools/scripts/lll.py:def main():
Tools/scripts/finddiv.py:def main():
Tools/scripts/ndiff.py:def main(args):
Tools/scripts/pathfix.py:def main():
Tools/scripts/google.py:def main():
Tools/scripts/run_tests.py:def main(regrtest_args):
Tools/scripts/which.py:def main():
Tools/scripts/objgraph.py:def main():
Tools/scripts/nm2def.py:def main():
Tools/scripts/findlinksto.py:def main():
Tools/scripts/pickle2db.py:def main(args):
Tools/scripts/suff.py:def main():
Tools/scripts/lfcr.py:def main():
Tools/scripts/gprof2html.py:def main():
Tools/scripts/patchcheck.py:def main():
Tools/scripts/byext.py:def main():
Tools/scripts/ifdef.py:def main():
Tools/scripts/treesync.py:def main():
Tools/scripts/checkpip.py:def main():
Tools/scripts/fixps.py:def main():
Tools/scripts/h2py.py:def main():
Tools/scripts/crlf.py:def main():
Tools/scripts/diff.py:def main():
Tools/scripts/ptags.py:def main():
Tools/scripts/db2pickle.py:def main(args):
Tools/scripts/linktree.py:def main():
Tools/scripts/reindent.py:def main():
Tools/scripts/eptags.py:def main():
Tools/scripts/generate_opcode_h.py:def main(opcode_py, outfile='Include/opcode.h'):
Tools/scripts/copytime.py:def main():
Tools/i18n/pygettext.py:def main():
Tools/i18n/msgfmt.py:def main():
Tools/ccbench/ccbench.py:def main():
Tools/freeze/freeze.py:def main():
Tools/importbench/importbench.py:def main(import_, options):
Tools/iobench/iobench.py:def main():
Tools/ssl/test_multiple_versions.py:def main(*args):
Tools/stringbench/stringbench.py:def main():
Tools/clinic/clinic.py:def main(argv):
Tools/pybench/pybench.py: def main(self):
Tools/pybench/CommandLine.py: def main(self):
Tools/parser/unparse.py:def main(args):
Tools/msi/make_zip.py:def main():
Tools/msi/generate_md5.py:def main():
Tools/msi/csv_to_wxs.py:def main(file_source, install_target):
Двоичный файл Doc/build/doctrees/howto/logging.doctree совпадает
Двоичный файл Doc/build/doctrees/howto/curses.doctree совпадает
Двоичный файл Doc/build/doctrees/howto/logging-cookbook.doctree совпадает
Двоичный файл Doc/build/doctrees/faq/programming.doctree совпадает
Двоичный файл Doc/build/doctrees/library/concurrent.futures.doctree совпадает
Двоичный файл Doc/build/doctrees/library/venv.doctree совпадает
Двоичный файл Doc/build/doctrees/library/email-examples.doctree совпадает
Двоичный файл Doc/build/doctrees/library/pickle.doctree совпадает
Двоичный файл Doc/build/doctrees/library/difflib.doctree совпадает
Двоичный файл Doc/build/doctrees/library/optparse.doctree совпадает
Двоичный файл Doc/build/doctrees/library/getopt.doctree совпадает
Doc/build/html/_sources/howto/curses.txt: def main(stdscr):
Doc/build/html/_sources/howto/curses.txt: def main(stdscr):
Doc/build/html/_sources/howto/logging-cookbook.txt: def main():
Doc/build/html/_sources/howto/logging-cookbook.txt: def main():
Doc/build/html/_sources/howto/logging-cookbook.txt: def main():
Doc/build/html/_sources/howto/logging-cookbook.txt: def main():
Doc/build/html/_sources/howto/logging-cookbook.txt: def main():
Doc/build/html/_sources/howto/logging.txt: def main():
Doc/build/html/_sources/faq/programming.txt: def main():
Doc/build/html/_sources/library/getopt.txt: def main():
Doc/build/html/_sources/library/concurrent.futures.txt: def main():
Doc/build/html/_sources/library/venv.txt: def main(args=None):
Doc/build/html/_sources/library/difflib.txt: def main():
Doc/build/html/_sources/library/optparse.txt: def main():
Doc/build/html/library/venv.html:def main(args=None):
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/logging-cookbook.rst: def main():
Doc/howto/curses.rst: def main(stdscr):
Doc/howto/curses.rst: def main(stdscr):
Doc/howto/logging.rst: def main():
Doc/tools/rstlint.py:def main(argv):
Doc/includes/email-dir.py:def main():
Doc/includes/email-unpack.py:def main():
Doc/includes/dbpickle.py:def main():
Doc/faq/programming.rst: def main():
Doc/library/concurrent.futures.rst: def main():
Doc/library/optparse.rst: def main():
Doc/library/getopt.rst: def main():
Doc/library/venv.rst: def main(args=None):
Двоичный файл .git/objects/pack/pack-804212d4f89e753b4ef0bc07fdd2f19f6490ec29.pack совпадает
setup.py:def main():
Mac/Tools/plistlib_generate_testdata.py:def main():
Mac/Extras.install.py:def main():
Mac/BuildScript/build-installer.py:def main():
Lib/idlelib/PyShell.py:def main():
Lib/idlelib/run.py:def main(del_exitfunc=False):
Lib/timeit.py:def main(args=None, *, _wrap_timer=None):
Lib/profile.py:def main():
Lib/base64.py:def main():
Lib/quopri.py:def main():
Lib/tarfile.py:def main():
Lib/py_compile.py:def main(args=None):
Lib/venv/__init__.py:def main(args=None):
Lib/compileall.py:def main():
Lib/pdb.py:def main():
Lib/keyword.py:def main():
Lib/zipfile.py:def main(args = None):
Lib/json/tool.py:def main():
Lib/tokenize.py:def main():
Lib/lib2to3/pgen2/driver.py:def main(*args):
Lib/lib2to3/main.py:def main(fixer_pkg, args=None):
Lib/lib2to3/tests/pytree_idempotency.py:def main():
Lib/tabnanny.py:def main():
Lib/site.py:def main():
Lib/test/pystone.py:def main(loops=LOOPS):
Lib/test/test_cprofile.py:def main():
Lib/test/test_profile.py:def main():
Lib/test/reperf.py:def main():
Lib/test/test_coroutines.py: async def main():
Lib/test/test_coroutines.py: async def main():
Lib/test/test_coroutines.py: async def main():
Lib/test/libregrtest/main.py: def main(self, tests=None, **kwargs):
Lib/test/libregrtest/main.py:def main(tests=None, **kwargs):
Lib/test/test_ast.py:def main():
Lib/test/test_threading.py: def main():
Lib/test/curses_tests.py:def main(stdscr):
Lib/test/sortperf.py:def main():
Lib/test/test_asyncio/test_events.py: def main():
Lib/turtledemo/round_dance.py:def main():
Lib/turtledemo/clock.py:def main():
Lib/turtledemo/sorting_animate.py:def main():
Lib/turtledemo/chaos.py:def main():
Lib/turtledemo/nim.py:def main():
Lib/turtledemo/wikipedia.py:def main():
Lib/turtledemo/planet_and_moon.py:def main():
Lib/turtledemo/bytedesign.py:def main():
Lib/turtledemo/penrose.py:def main():
Lib/turtledemo/peace.py:def main():
Lib/turtledemo/lindenmayer.py:def main():
Lib/turtledemo/paint.py:def main():
Lib/turtledemo/forest.py:def main():
Lib/turtledemo/minimal_hanoi.py:def main():
Lib/turtledemo/__main__.py:def main():
Lib/turtledemo/colormixer.py:def main():
Lib/turtledemo/tree.py:def main():
Lib/turtledemo/fractalcurves.py:def main():
Lib/turtledemo/two_canvases.py:def main():
Lib/turtledemo/yinyang.py:def main():
Lib/zipapp.py:def main(args=None):
Lib/cProfile.py:def main():
Lib/multiprocessing/semaphore_tracker.py:def main(fd):
Lib/multiprocessing/forkserver.py:def main(listener_fd, alive_r, preload, main_path=None, sys_path=None):
Lib/trace.py:def main():
Lib/calendar.py:def main(args):
Lib/distutils/tests/test_install.py: self.write_file('hello.py', "def main(): print('o hai')")
Lib/webbrowser.py:def main():
PCbuild/prepare_ssl.py:def main():
Parser/asdl_c.py:def main(srcfile, dump_module=False):
[guest@localhost main]$
Вот с последнего файла - Parser/asdl_c.py:
def main(srcfile, dump_module=False):
argv0 = sys.argv[0]
components = argv0.split(os.sep)
argv0 = os.sep.join(components[-2:])
auto_gen_msg = common_msg % argv0
mod = asdl.parse(srcfile)
if dump_module:
print('Parsed Module:')
print(mod)
if not asdl.check(mod):
sys.exit(1)
if INC_DIR:
p = "%s/%s-ast.h" % (INC_DIR, mod.name)
f = open(p, "w")
f.write(auto_gen_msg)
f.write('#include "asdl.h"\n\n')
c = ChainOfVisitors(TypeDefVisitor(f),
StructVisitor(f),
PrototypeVisitor(f),
)
c.visit(mod)
f.write("PyObject* PyAST_mod2obj(mod_ty t);\n")
f.write("mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);\n")
f.write("int PyAST_Check(PyObject* obj);\n")
f.close()
if SRC_DIR:
p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")
f = open(p, "w")
f.write(auto_gen_msg)
f.write('#include <stddef.h>\n')
f.write('\n')
f.write('#include "Python.h"\n')
f.write('#include "%s-ast.h"\n' % mod.name)
f.write('\n')
f.write("static PyTypeObject AST_type;\n")
v = ChainOfVisitors(
PyTypesDeclareVisitor(f),
PyTypesVisitor(f),
Obj2ModPrototypeVisitor(f),
FunctionVisitor(f),
ObjVisitor(f),
Obj2ModVisitor(f),
ASTModuleVisitor(f),
PartingShots(f),
)
v.visit(mod)
f.close()
if __name__ == "__main__":
import getopt
INC_DIR = ''
SRC_DIR = ''
dump_module = False
opts, args = getopt.getopt(sys.argv[1:], "dh:c:")
for o, v in opts:
if o == '-h':
INC_DIR = v
if o == '-c':
SRC_DIR = v
if o == '-d':
dump_module = True
if INC_DIR and SRC_DIR:
print('Must specify exactly one output file')
sys.exit(1)
elif len(args) != 1:
print('Must specify single input file')
sys.exit(1)
main(args[0], dump_module)
Rodegast
subprocess
Модуль subprocess порождает отдельный процесс.