سوالات حرفه‌ای مصاحبه پایتون

امیرحسین بیگدلو 4 ماه قبل

 

این لیست شامل سوالات اصلی مصاحبه پایتون تا سوالات پیشرفته مصاحبه پایتون برای توسعه دهندگان 1 ساله ، 2 ساله ، 3 ساله ، 4 ساله و 5+ سال با تجربه است.

 

این سوالات پایتون توسط توسعه دهندگان متخصص پایتون تهیه شده و در مصاحبه های مختلف پایتون پرسیده شده است. امیدواریم این لیست به شما در ترکوندن مصاحبه شغلی بعدی پایتون کمک کند. با آرزوی موفقیت برای آینده و یادگیری شاد شما.

 

 


 

۱. مفسر پایتون چیست؟

مفسر تا حدودی مانند shell یونیکس عمل می کند: وقتی با ورودی استاندارد متصل به دستگاه tty فراخوانی می شود، دستورات را به صورت تعاملی می خواند و اجرا می کند. وقتی با آرگومان نام فایل یا با یک فایل به عنوان ورودی استاندارد فراخوانی می شود ، یک اسکریپت از آن فایل را می خواند و اجرا می کند.

 

 

۲. پایتون دارای چند حالت است؟

پایتون به طور کلی دو حالت دارد:  ۱. script  و  ۲. interactive

 

 

۳. حالت script چیست؟

حالت عادی حالت اسکریپت است که کد در فایل های .py نوشته شده و در مترجم پایتون اجرا می شوند.

 

 

۴. حالت interactive چیست؟

حالت تعاملی یک پوسته خط فرمان است که برای هر عبارت بازخورد فوری می دهد، در حالی که دستورات قبلی را در حافظه فعال اجرا می کند.

 

 

۵. اسکریپت (script) چیست؟

اسکریپت ها قابل استفاده مجدد هستند. اساساً ، یک اسکریپت یک فایل متنی است که شامل کدهایی است که شامل یک برنامه پایتون است. پس از ایجاد اسکریپت، می توانید آن را بارها و بارها بدون نیاز به تایپ مجدد در هر بار اجرا کنید. اسکریپت ها قابل ویرایش هستند.

 

 

۶. آناکوندا چیست؟

Anaconda یک توزیع رایگان منبع باز زبان های برنامه نویسی Python و R برای پردازش داده در مقیاس بزرگ، تجزیه و تحلیل پیش بینی و محاسبات علمی است که هدف آن ساده سازی مدیریت و استقرار بسته است.

برای آموزش ویدیویی آناکوندا اینجا کلیک کنید.

 

 

۷. REPL در پایتون چیست؟

یک Read–Eval–Print-Loop (REPL)، که به عنوان یک پوسته سطح بالا یا زبان تعاملی نیز شناخته می شود ، یک محیط برنامه نویسی رایانه ای ساده و تعاملی است که ورودی های تک کاربر (یعنی عبارات تک) را می گیرد، آنها را ارزیابی می کند و نتیجه را به کاربر برمیگرداند؛ برنامه ای که در محیط REPL نوشته شده است به صورت تکه تکه اجرا می شود.

 

 

۸. پایتون یک زبان مفسری است یا کامپایل شده؟

پایتون یک زبان مفسری است. کد منبع py ابتدا به عنوان .pyc به بایت کد ترجمه می شود. این کد بایت می تواند به Cpython اجرا شود.

 

 

۹. دیکشنری پایتون را توضیح دهید؟

دیکشنری یک آرایه تودرتو است. هر دیکشنری با یک مقدار مرتبط شده است. مقادیر یک دیکشنری می تواند هر نوع داده پایتون باشد. بنابراین دیکشنری‌ها جفت کلید-مقدار بی نظم هستند.

 

 

۱۰. PyTables چیست؟

PyTables یک بسته برای مدیریت مجموعه داده های سلسله مراتبی است و برای مقابله کارآمد و آسان با حجم بسیار زیاد داده ها طراحی شده است. می توانید PyTables را بارگیری کرده و به صورت رایگان از آن استفاده کنید.

 

 

۱۱. خروجی کد زیر چیست؟

100/(1+0.1)^2

 

این کد ارور خواهد داد که علامت ^ پشتیانی نمیشود.

Traceback (most recent call last):
File “<psyhell#1>, line 1, in <module>
100/(1+0.1)^2
TypeError: unsupported operand type(s) for ^: ‘float’ and ‘int’

 

 

 

۱۲. لامبدا(lambda) چیست؟

عملگر lambda یا فانکشن lambda راهی برای ایجاد توابع کوچک ناشناس است، یعنی توابع بدون نام. این توابع، توابع دور ریختن هستند، یعنی فقط در جایی که ایجاد شده اند مورد نیاز هستند. توابع لامبدا عمدتا در ترکیب با توابع filter() ، map() و reduce() استفاده می شود.

برای آموزش ویدیویی لامبدا اینجا کلیک کنید و همچین برای آموزش فانکشن‌های map, filter, reduce ایجا کلیک کنید.

 

 

۱۳. به چند روش میتوان در پایتون کد زد؟

چهار حالت اصلی وجود دارد: imperative, functional, object-oriented, procedural.

 

 

‍۱۴. تفاوت list و tuple چیست؟

list تغییرپذیر است و tuple تغییر ناپذیر است. تفاوت اصلی بین تغییرپذیر و تغییر ناپذیر در استفاده از حافظه هنگام تلاش برای افزودن یک مورد است. هنگام ایجاد یک متغیر، مقداری حافظه ثابت به متغیر اختصاص داده می شود. اگر یک لیست باشد، حافظه بیشتری نسبت به آنچه استفاده می شود اختصاص داده می شود.

 

 

۱۵. در پایتون cast یعنی چه؟

cast زمانی است که یک مقدار متغیر را از یک نوع به نوع دیگر تبدیل می کنید. این کار در پایتون با توابع مانند int () یا float () یا str () انجام می شود. یک الگوی بسیار رایج این است که شما یک عدد را که در حال حاضر به عنوان یک رشته است به یک عدد مناسب تبدیل می کنید.

 

 

۱۶. میتوانید بگویید که چرا کد زیر ارور میدهد؟

>>>sqrt(3)
Traceback (most recent call last):
File “<pyshell#17>”, line 1, in <module>
sqrt(3)
NameError: name ‘sqrt’ is not defined

 

در کد بالا متد sqrt از ماژول math است. اما ماژول math را import نکرده‌اید.

 

 

۱۷. ماژول در پایتون چیست؟

در پایتون ، ماژول فایلی است که شامل مجموعه ای از توابع برای انجام یک کار خاص است. به عنوان مثال ماژول "math" برخی از توابع مربوط به ریاضی مانند sqrt () را ارائه می دهد.

 

 

۱۸. فانکشن dir() چیست؟

پس از اختصاص مقادیر به چند متغیر، می توانیم از تابع dir () برای نشان دادن وجود آنها استفاده کنیم. در مثال زیر ، متغیرهای p ، av و d در بین نام های دیگر نشان داده شده است.

>>>av=100
>>>p=0.1
>>>d=5
>>>dir()
[‘p’, ‘av’, ‘d’]

 

 

۱۹. چطور میتوان یک متغیر را حذف کرد؟

هر زمان که برای هر برنامه ای کد می نویسیم ، ممکن است بخواهیم متغیرهایی را که دیگر به آنها نیازی نداریم حذف کنیم. در این حالت ، می توانیم از تابع del () برای حذف یک متغیر استفاده کنیم.

 

 

۲۰. تکرار رشته (string replication) در پایتون چیست؟

* عملگر تکرار رشته است، هر چند بار که بخواهید یک رشته واحد را از طریق عددی که ارائه می کنید تکرار می کند. مثلا کلمه python را پنج بار تکرار کنیم:

print(“Python” * 5)

Output: PythonPythonPythonPythonPython

 

 

۲۱. GIL در پایتون چیست؟

در پایتون ، GIL (قفل جهانی مترجم) یک mutex است که از دسترسی به اشیاء پایتون محافظت می کند و از اجرای چندین بایت کد به صورت همزمان توسط threadها جلوگیری می کند.

 

 

۲۲. mutext در پایتون چیست؟

در برنامه نویسی پایتون ، یک mutex (شیء حذف مشترک) یک شیء برنامه است که به گونه ای ایجاد می شود که چندین thread برنامه به نوبت بتوانند یک منبع را به اشتراک بگذارند ، مانند دسترسی به یک فایل.

 

 

۲۳. آیا پایتون از برنامه‌نویسی چند نخی(multithreading) پشتیبانی میکند؟

بله پایتون از مفهوم چند رشته ای با کمک Global Interpreter Lock (GIL) پشتیبانی می کند.

 

 

۲۴. عملگر ternary در پایتون چیست؟

در پایتون ، اپراتور ternary نسخه 2.5 را اضافه کرد. از این عبارت به عنوان شرطی استفاده می شود، شامل مقادیر درست یا غلط است. عملگر ترنری expression را ارزیابی کرده و مقادیر درست یا غلط را ذخیره می کند.

 

سینتکس:

[on_true] if [expression] else [on_false]

 

مثال:

a, b = 22, 35

# Checking the minimum number and storing in mini
mini = a if a < b else b

print(mini)

Output: 22

 

 

۲۵. مدیریت حافظه در پایتون چیست؟

مدیریت حافظه در پایتون شامل یک توده خصوصی است که شامل همه اشیاء و ساختارهای داده پایتون است. مدیریت این پشته خصوصی به صورت داخلی توسط مدیر حافظه پایتون تضمین می شود.

 

 

۲۶. انواع وراثت در پایتون را نام ببرید.

 

 

۲۷. superclass و subclass در پایتون چیست؟

در زمان استفاده از وراثت، کلاس پدر را superclass و کلاس فرزند subclass نامیده میشود.

 

 

۲۸. MRO چیست؟

در وراثت چندگانه، ترتیب جستجوی کلاس های اصلی هنگام جستجو برای یک متد، اغلب Method Resolution Order (MRO) نامیده می شود.

 

 

۲۹. دکوریتور در پایتون چیست؟

decorator یک سینتکس ساده برای صدا زدن فانکشن‌های سطح بالا است. دکوریتور یک  فانکشن گرفته و رفتار آن را گسترش میدهد بدون آنکه تغییری در فانکشن اول ایجاد شود.

برای درک عمیق از دکوریتورهای پایتون این ویدیو را تماشا کنید.

 

 

۳۰. چرا از کلاس‌های abstract استفاده میکنیم؟

کلاسهای انتزاعی کلاسهایی هستند که حاوی یک یا چند متد انتزاعی هستند. یک متد انتزاعی متدی است که ایجاد می شود، اما هیچ بدنه‌ای ندارد. از کلاسهای انتزاعی ممکن است نمونه سازی نشده باشند و برای ارائه روشهای انتزاعی به زیر کلاسها نیاز است.

برای دیدن آموزش کلاس‌های abstract این ویدیو را تماشا کنید.

 

۳۱. متد constructor یا سازنده چیست؟

سازنده یک نوع متد خاص است که پایتون هنگامی که یک شی را با استفاده از تعاریف موجود در کلاس شما نمونه می گیرد، فراخوانی می کند. پایتون برای انجام وظایفی مانند مقداردهی اولیه (تخصیص مقادیر) به متغیرهای موردی که شیء هنگام شروع به آن نیاز دارد ، متکی به سازنده است.

 

 

۳۲. model چیست؟

یک مدل تنها منبع قطعی اطلاعات در مورد داده های شما است. این شامل فیلدها و رفتارهای اساسی داده هایی است که ذخیره می کنید. به طور کلی ، هر مدل به یک جدول پایگاه داده واحد ترسیم می شود.

 

 

۳۳. yield چیست؟

yield کلمه کلیدی است برای ساختن generatorها در پایتون. yield جایگزینی برای return است.

برای آموزش generatorها این ویدیو را تماشا کنید.

 

 

۳۴. iterator در پایتون چیست؟

در پایتون، iterator یک شی است که تکرار شوندگی را پیاده سازی می کند. پروتکل iterator از دو متد تشکیل شده است. متد __iter __ () که باید شی iterator را برگرداند و متد next () که عنصر بعدی را از یک دنباله برمی گرداند.

برای درک بهتر iterator این ویدیو را ببینید.

 

 

۳۵. چطور به طور صریح حافظه memory را خالی میکنید؟

در پایتون ، شما می توانید Garbage Collector را مجبور کنید با gc.collect () حافظه غیرمرتبط آزاد کند.

import gc
gc.collect()

 

 

 

۳۶. Monkey Patching در پایتون چیست؟

وصله میمون، بازکردن مجدد کلاسها یا روشهای موجود در کلاس در زمان اجرا و تغییر رفتار است، که باید با احتیاط مورد استفاده قرار گیرد ، یا فقط در مواقع ضروری به کار ببرید.

 

 

۳۷. pickle به چه معنی است؟

Pickling  فرایندی است که طی آن سلسله مراتب شیء پایتون به جریان بایت تبدیل می شود و Unpickling - عملیات معکوس است ، که در آن یک جریان بایت به سلسله مراتب شی تبدیل می شود. Pickling (و unpickling) به طور متناوب به عنوان سریال سازی ، مارشالینگ یا مسطح شدن شناخته می شود.

برای درک بهتر از ماژول pickle این ویدیو را ببینید.

 

 

۳۸. تفاوت __str__ و __repr__ چیست؟

ساده‌اس: __str__ برای کاربران و __repr__ برای برنامه‌نویسان

برای درک بهتر تفاوت متدهای str و repr این ویدیو را ببینید.

 

۳۹. چطور دو دیکشنری را با هم ترکیب کنیم؟

با متد update:

>>> x = {‘a’:1, ‘b’: 2}
>>> y = {‘b’:10, ‘c’: 11}
>>> z = x.update(y)
>>> print(z)
None
>>> x
{‘a’: 1, ‘b’: 10, ‘c’: 11}

 

 

۴۰. list comprehension چیست؟

list comprehension روش مختصر برای ایجاد لیست ارائه می دهد. کاربردهای متداول عبارتند از ایجاد لیست های جدید که در آن هر عنصر نتیجه برخی از عملیات اعمال شده برای هر عضو از یک دنباله دیگر یا قابل تکرار است، یا ایجاد یک زیر مجموعه از آن عناصر که شرایط خاصی را برآورده می کنند.

برای آموزش list comprehension این ویدیو را تماشا کنید.

 

 

۴۱. چطور از کدم محافظت کنم؟

سوال: من در حال توسعه یک نرم افزار در پایتون هستم که بین مشتریان کارفرمایم توزیع می شود. کارفرمای من می خواهد استفاده از نرم افزار را با یک فایل مجوز با محدودیت زمانی محدود کند. اگر ما فایل های .py یا حتی .pyc را توزیع کنیم ، حذف کدی که فایل مجوز را بررسی می کند آسان خواهد بود. آیا روشی هست که کسی نتواند سورس کدم را ببیند؟

 

پاسخ:قفل کردن پایتون ، به عنوان یک زبان تفسیری با کد بایت تدوین شده، بسیار دشوار است. حتی اگر از یک بسته بسته exe مانند py2exe استفاده می کنید ، طرح اجرایی کاملاً شناخته شده است و کدهای بایت پایتون به خوبی قابل درک است.

 

معمولاً در مواردی از این قبیل ، باید معامله کنید. واقعاً حفاظت از کد چقدر مهم است؟ آیا اسرار واقعی در آنجا وجود دارد (مانند کلید رمزگذاری متقارن حواله های بانکی) ، یا شما فقط پارانوئید هستید؟ زبانی را انتخاب کنید که به شما امکان می دهد بهترین محصول را سریعتر توسعه دهید و در مورد ارزش ایده های جدید خود واقع بین باشید.

 

اگر تصمیم گرفتید که واقعاً باید مجوز را به طور ایمن اجرا کنید ، آن را به عنوان یک پسوند کوچک C بنویسید تا کد چک مجوز برای مهندس معکوس بسیار سخت باشد (اما غیر ممکن نیست!) و بخش عمده ای از کد خود را در پایتون بگذارید.

 

 

۴۲. UnboundLocalError در پایتون

کد زیر ارور UnboundLocalError میدهد. کجا را اشتباه کرده‌ایم؟

counter = 0

def increment():
    counter += 1

increment()

 

پاسخ: پایتون اعلان متغیر ندارد ، بنابراین باید خود دامنه متغیرها را مشخص کند. این کار را با یک قانون ساده انجام می دهد: اگر انتسابی به یک متغیر در داخل یک تابع وجود داشته باشد ، آن متغیر محلی در نظر گرفته می شود. پس خط counter += 1 متغیر counter را در فانکشن increment محلی میکند.

 

با تلاش برای اجرای این خط، سعی می شود مقدار متغیر پیش از تعیین مقدار را بخواند، که منجر به UnboundLocalError می شود.

 

 

۴۳. چطور تکرار را در یک لیست بشماریم؟

اگر فقط میخواهید یک مقدار را بشمارید میتوانید از متد count استفاده کنید:

>>> [1, 2, 3, 4, 1, 4, 1].count(1)
3

 

اگر می خواهید چندین مورد را شمارش کنید ، از این استفاده نکنید. برای شمارش چند مقدار در یک لیست میتوانید از Count از ماژول collections استفاده کنید.

برای دیدن آموزش Count از ماژول collections این ویدیو را تماشا کنید.

 

 

۴۴. چطور به آخر فایل، append کنیم؟

with open(“test.txt”, “a”) as myfile:
    myfile.write(“appended text”)

 

 

۴۵. عملکرد متد super را در کد زیر توضیح دهید:

class Base(object):
    def __init__(self):
        print “Base created”


class ChildA(Base):
    def __init__(self):
        Base.__init__(self)


class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()


ChildA()
ChildB()

 

پاسخ: super () به شما این امکان را می دهد که به صراحت به کلاس پایه مراجعه نکنید، که می تواند خوب باشد. اما مزیت اصلی به ارث بردن متعدد برمی گردد، جایی که همه نوع اتفاقات سرگرم کننده می تواند رخ دهد. اگر قبلاً این کار را نکرده اید ، اسناد استاندارد را در super ببینید.

 

توجه داشته باشید که نحو در Python 3.0 تغییر کرده است: شما فقط می توانید super () .__ init __ () را به جای super (ChildB، self) .__ init __ () بگویید که IMO بسیار بهتر است.

 

 

۴۶. چطور داخل دو لیست همزمان پیمایش کنیم؟

با استفاده از متد zip:

for f, b in zip(foo, bar):
    print(f, b)

 

 

۴۷. چطور یک string را به یک datetime تبدیل کنیم؟

سوال: ما یک لیست از تاریخ‌هایی داریم که به شکل string ذخیره کرده‌ایم:

Jun 1 2005 1:33PM
Aug 28 1999 12:00AM

 

حالا اگر بخوایم اینها را به آبجکت datetime تبدیل کنیم، چه روشی پیشنهاد میکنید؟

 

پاسخ: از متد datetime.strptime استفاده میکنیم:

from datetime import datetime

datetime_object = datetime.strptime(‘Jun 1 2005 1:33PM’, ‘%b %d %Y %I:%M%p’)

 

 

۴۸. چطور موارد تکراری را با حفظ ترتیب از یک لیست حذف کنیم؟

با استفاده از روش زیر:

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]

 

 

۴۹. آیا روشی وجود دارد که بتوان یک thread را متوقف کرد؟

خیر، هیچ روشی رسمی برای اینکار وجود ندارد.

 

 

۵۰. metaclass‌ها چه هستند؟

برای پاسخ آموزش metaclassها در پایتون را ببینید.

 

 

۵۱. جمله if name == main به چه معنی است؟

برای پاسخ ویدیو آشنایی با if name == main در پایتون را ببینید.

 

 

۵۲. چطور یک دستور خارجی را در پایتون اجرا کنیم؟

با استفاده از متد call از ماژول subclass:

from subprocess import call

call([“ls”, “-l”])

 

 

۵۳. علامت‌های یک ستاره و دو ستاره در پارامتر‌ها به چه معنی هستند؟

برای پاسخ ویدیو بازکردن آرگومان های یک تابع در پایتون را ببینید.

 

 

۵۴. چطور یک لیست را به سایزهای مختلف تکه کنیم؟

def chunks(l, n):
    “””Yield successive n-sized chunks from l.”””

    for i in range(0, len(l), n):
        yield l[i:i + n]


import pprint

pprint.pprint(list(chunks(range(10, 75), 10)))


# OUTPUT
[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74]]

 

 

۵۵. چطور یک list را copy یا clone کنیم؟

برای پاسخ ویدیو توضیح انواع copy(Shallow, Deep) در پایتون را ببینید.

 

 

۵۶. virtualenvs چیست؟

virtualenv همان چیزی است که توسعه دهندگان پایتون آن را محیطی جدا برای توسعه ، اجرا ، اشکال زدایی کد پایتون می نامند. از آن برای جدا کردن مترجم پایتون به همراه مجموعه ای از کتابخانه ها و تنظیمات استفاده می شود. همراه با pip ، امکان توسعه ، استقرار و اجرای چندین برنامه در یک میزبان واحد را فراهم می کند که هریک دارای نسخه مخصوصی از مترجم پایتون و مجموعه ای جداگانه از کتابخانه ها است.

 

 

۵۷. wheels و Eggs چی هستند؟ تفاوت‌ آنها چیست؟

Wheel و Egg هر دو فرمت برای ایجاد پکیج هستند که هدف آنها پشتیبانی از موارد استفاده از مصنوع نصب است که نیازی به ساخت یا گردآوری ندارد ، که می تواند در آزمایش و گردش کار هزینه بر باشد.

 

قالب Egg توسط setuptools در سال 2004 معرفی شد ، در حالی که قالب Wheel توسط PEP 427 در سال 2012 معرفی شد. Wheel در حال حاضر استاندارد پکیج‌های ساخته شده و باینری برای پایتون محسوب می شود.

 

برای آموزش ساخت پکیج در پایتون اینجا کلیک کنید.

 

 

۵۸. عبارت زیر چه کاری انجام میدهد؟

x = a or b

 

اگر bool(a) مقدار False را برگرداند، مقدار b در متغیر x قرار خواهد گرفت.

 

 

۵۹. عبارت with برای چه کاری طراحی شده است؟

برای پاسخ آموزش ماژول contextlib در پایتون و آموزش context manager در پایتون را ببینید.

 

 

۶۰. آیا میتوانید Closure را توضیح دهید؟

برای پاسخ آموزش عمیق فانکشن‌ها را ببینید.

 

 

۶۱. فانکشنی بنویسید که شبیه os.walk عمل کنید.

# function that similar to `os.walk`
def print_directory_contents(sPath):
    import os                                       
    for sChild in os.listdir(sPath):                
        sChildPath = os.path.join(sPath,sChild)
        if os.path.isdir(sChildPath):
            print_directory_contents(sChildPath)
        else:
            print(sChildPath)

 

 

۶۲. Cython چیست؟

Cython یک زبان برنامه نویسی است که قصد دارد یک مجموعه فوق العاده از زبان برنامه نویسی پایتون باشد، به گونه ای طراحی شده است که عملکردی شبیه C با کدی که بیشتر در پایتون نوشته شده است با نحو اختیاری الهام گرفته از C ، ارائه دهد.

 

 

۶۳. تفاوت staticmethod و classmethod چیست؟

برای پاسخ ویدیو توضیح class method و static method در پایتون را ببینید.

 

 

۶۴. کاراکتر underscore _ در پایتون چه معنی میدهد؟

برای پاسخ ویدیو انواع underscore در پایتون را ببینید.

 

 

۶۵. کد پایین چه نتیجه‌ای خواهد داشت؟

>>> squares = []
>>> for x in range(5):
...     squares.append(lambda: x**2)
>>> squares[2]()
>>> squares[4]()

 

پاسخ:

>>> squares[2]()
16
>>> squares[4]()
16

این امر به این دلیل اتفاق می افتد که x در لامبدا محلی نیست ، اما در محدوده بیرونی تعریف شده است ، و هنگامی که لامبدا فراخوانی می شود - نه زمانی که تعریف می شود - به آن دسترسی پیدا می کند. در انتهای حلقه ، مقدار x 4 است ، بنابراین همه توابع اکنون 4 ** 2 ، یعنی 16 را برمی گردانند.

 

 

۶۶. کد زیر چه نتیجه‌ای خواهد داشت؟

list = ['a', 'b', 'c', 'd', 'e']
print list[10:]

 

یک لیست خالی برمیگرداند.

 

 

۶۷. ‌آیا زمانی که در پایتون exit میکنید، تمام memory آزاد میشود؟

خیر.

ماژول هایی با circular references به اشیاء دیگر یا اشیایی که از global namespaces ارجاع داده می شوند ، همیشه هنگام خروج از پایتون آزاد نمی شوند. بعلاوه ، تخصیص بخشی از حافظه ذخیره شده توسط کتابخانه C غیرممکن است.

 

 

۶۸. چرا پایتون از GIL استفاده میکند؟

در CPython ، قفل سراسری مترجم یا GIL یک mutex است که از اجرای چندین بایت پایتون به طور همزمان جلوگیری می کند. این قفل عمدتا ضروری است زیرا مدیریت حافظه CPython از thread-safe نیست.

 

 

۶۹. معنی callable چیست؟

به آبجکتی که بتوان آن را صدا زد، آبجکت callable میگویند. همچنین میتوانید ویدیو آموزش متد call در پایتون را ببینید.

 

 

۷۰. آیا کد زیر مجاز است؟

def my_function():
    print my_function.what

my_function.what = "right?"
my_function() # Prints "right?"

 

بله. از آنجایی که در پایتون همه چیز از جمله فانکشن‌ها، آبجکت هستند، کد بالا کاملا مجاز است. اما اگر what را نداشتیم، ارور Attribute Error اتفاق خواهد افتاد.

 

 

۷۱. Mixin چیست؟

Mixin یک مفهوم در برنامه نویسی است که در آن کلاس عملکردهایی را ارائه می دهد ، اما به معنای استفاده از آن برای فوری نیست. هدف اصلی Mixin ارائه عملکردهایی است که به صورت مستقل هستند و بهتر است که خود mixins وراثتی با سایر mixins نداشته باشند و همچنین از حالت اجتناب کنند.

مطالب مشابه



مونگارد