Change temp names created by listcomps from [%d] to _[%d], so the one-liner
[k for k in dir() if k[0] != "_"]
can be used to get the non-private names (used to contain "[1]").
diff --git a/Python/compile.c b/Python/compile.c
index 916c4a6..c562def 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1309,7 +1309,7 @@
{
/* listmaker: test list_for */
char tmpname[12];
- sprintf(tmpname, "[%d]", ++c->c_tmpname);
+ sprintf(tmpname, "_[%d]", ++c->c_tmpname);
com_addoparg(c, BUILD_LIST, 0);
com_addbyte(c, DUP_TOP); /* leave the result on the stack */
com_push(c, 2);
@@ -4689,7 +4689,7 @@
{
char tmpname[12];
- sprintf(tmpname, "[%d]", ++st->st_tmpname);
+ sprintf(tmpname, "_[%d]", ++st->st_tmpname);
symtable_add_def(st, tmpname, DEF_LOCAL);
symtable_assign(st, CHILD(n, 1), 0);
symtable_node(st, CHILD(n, 3));