שלום לכולם,
כשאנחנו משתמשים בפונקציות בנויות מראש ( מקס() או לן() ) פייתון יודע להפעיל אותן
ז"א שהקוד שלהן (המימוש שלהן) חייב להיות קיים איפשהו על המחשב שלי (בהנחה שיש לי פייתון על המחשב, אני משתמש ב IDLE).
איפה אני יכול למצוא את הקוד שלהן? ולראות את המימוש שלהן?
באותו הקשר אבל קצת שונה: האם אפשר לראות את המימוש של המלה השמורה ?
תודה מראש
איל
Yam
29 באפריל, 2020, 9:37am
#2
המימוש של פונקציות ה־builtin כתוב ב־C (שפת תכנות אחרת), ולא בפייתון.
מכיוון שפייתון היא קוד פתוח, תוכל לראות את המימוש של הפונקציות במקום שבו מנוהל הקוד של פייתון . ספציפית עבור max/min זה כאן:
{
PyObject *d;
d = PyEval_GetLocals();
Py_XINCREF(d);
return d;
}
static PyObject *
min_max(PyObject *args, PyObject *kwds, int op)
{
PyObject *v, *it, *item, *val, *maxitem, *maxval, *keyfunc=NULL;
PyObject *emptytuple, *defaultval = NULL;
static char *kwlist[] = {"key", "default", NULL};
const char *name = op == Py_LT ? "min" : "max";
const int positional = PyTuple_Size(args) > 1;
int ret;
if (positional) {
v = args;
לייק 1
זה בעצם אומר שכל קוד שאנחנו כותבים בpython מתקמפל ל C ואז מתקמפל לשפת מהדר ?
Yam
29 באפריל, 2020, 10:02am
#4
לא ^^" זה נושא קצת מורכב וקצרה היריעה. אבל תוכן לקרוא על זה עוד (בקצרה) כאן .
לייק 1
תודה אעבור על זה. זה באמת מעניין אותי להבין איך הכל עובד
תודה ים!
אבל…
למה בעצם כתבו את הפונקציות בשפת C ולא בפייתון?
Yam
29 באפריל, 2020, 11:43am
#7
כי אלו דברים שמשתמשים בהם הרבה, ומימוש ב־C ירוץ מהר יותר ממימוש ב־Python (בגלל סיבות שקצרה היריעה וכו’).