توابع داخلی پایتون
توابع داخلی پایتون مجموعهای از ابزارهای پیشساخته هستند که توسعهدهندگان میتوانند بدون نیاز به وارد کردن کتابخانههای اضافی از آنها استفاده کنند. این توابع برای مدیریت ساختارهای داده، تبدیل نوع دادهها، انجام محاسبات، کار با اشیاء و اجرای کد داینامیک کاربرد دارند. اهمیت آنها در توسعه بکاند به دلیل افزایش خوانایی کد، کاهش زمان توسعه و بهینهسازی عملکرد است. این توابع معمولاً زمانی به کار میروند که نیاز به جمعبندی، فیلتر کردن، مرتبسازی یا ارزیابی دادهها باشد. مفاهیم کلیدی شامل نحو صحیح، استفاده بهینه از الگوریتمها، مدیریت ساختارهای داده و رعایت اصول OOP است. استفاده درست از این توابع باعث جلوگیری از مشکلات رایج مانند نشت حافظه، مدیریت ضعیف خطا و الگوریتمهای ناکارآمد میشود. با مطالعه این راهنما، کاربر خواهد آموخت چگونه با بهرهگیری از توابع داخلی پایتون سیستمهای بکاند امن، پرکاربرد و با عملکرد بالا ایجاد کند.
مثال عملی: پردازش سفارشهای یک فروشگاه آنلاین. فرض کنید میخواهیم مجموع فروش، بیشترین و کمترین سفارش، فیلتر مشتریان ویژه و بررسی وجود سفارش بزرگ را انجام دهیم. برای این منظور از توابع sum
، max
، min
، filter
، sorted
و any
استفاده میکنیم. تابع sum
مجموع را محاسبه میکند، max
و min
مقادیر بیشینه و کمینه را مشخص میکنند، filter
سفارشهای ویژه را جدا میکند، sorted
بر اساس مقدار سفارشها مرتب میکند و any
بررسی میکند آیا سفارش بزرگ وجود دارد یا خیر. این مثال نشان میدهد چگونه توابع داخلی میتوانند با لیستها و دیکشنریها بهطور مؤثر کار کنند و نیاز به حلقههای پیچیده را کاهش دهند. در کاربردهای واقعی بکاند، این توابع تحلیل دادهها، گزارشگیری و پردازش بلادرنگ را ساده و بهینه میکنند و باعث میشوند توسعهدهندگان سیستمهای کارا و امن بسازند.
Example
python# مثال: تحلیل سفارشهای فروشگاه
orders = \[
{"user": "Ali", "amount": 120},
{"user": "Sara", "amount": 80},
{"user": "Reza", "amount": 200},
{"user": "Neda", "amount": 50}
]
# مجموع فروش
total_sales = sum(order\["amount"] for order in orders)
# بیشترین و کمترین سفارش
highest_order = max(orders, key=lambda o: o\["amount"])
lowest_order = min(orders, key=lambda o: o\["amount"])
# فیلتر سفارشهای ویژه
vip_orders = list(filter(lambda o: o\["amount"] >= 100, orders))
# مرتبسازی سفارشها بر اساس مقدار
sorted_orders = sorted(orders, key=lambda o: o\["amount"], reverse=True)
# بررسی وجود سفارش بزرگ
has_big_order = any(o\["amount"] > 150 for o in orders)
print("مجموع فروش:", total_sales)
print("بیشترین سفارش:", highest_order)
print("کمترین سفارش:", lowest_order)
print("سفارشهای ویژه:", vip_orders)
print("سفارشهای مرتبشده:", sorted_orders)
print("سفارش بزرگ وجود دارد:", has_big_order)
📊 Comprehensive Reference
تابع | توضیح | نحو | مثال | توضیحات |
---|---|---|---|---|
abs | مقدار مطلق عدد | abs(x) | abs(-5) → 5 | int, float, complex |
all | همه عناصر True هستند یا نه | all(iterable) | all(\[1, True, 3]) → True | لیست خالی → True |
any | حداقل یک عنصر True است | any(iterable) | any(\[0, False, 5]) → True | لیست خالی → False |
ascii | نمایش ASCII | ascii(obj) | ascii("فارسی") → "'\u0641\u0627\u0631\u0633\u06cc'" | برای دیباگ |
bin | نمایش باینری | bin(x) | bin(5) → '0b101' | فقط int |
bool | تبدیل به Boolean | bool(x) | bool("") → False | مطابق استاندارد True/FALSE پایتون |
bytearray | بایتهای قابل تغییر | bytearray(\[65,66]) | bytearray(b'AB') | داده باینری |
bytes | بایتهای غیرقابل تغییر | bytes("abc","utf-8") | b"abc" | فایل و شبکه |
callable | قابل فراخوانی است یا نه | callable(obj) | callable(len) → True | obj با متد call |
chr | کاراکتر Unicode از عدد | chr(i) | chr(65) → 'A' | معکوس ord |
classmethod | متد کلاس | @classmethod | class C: @classmethod def f(cls): pass | برای OOP |
compile | کامپایل کد منبع | compile(source,filename,mode) | exec(compile("print(5)","","exec")) | برای eval/exec |
complex | ساخت عدد مختلط | complex(real, imag) | complex(2,3) → (2+3j) | یا از رشته |
delattr | حذف صفت | delattr(obj,name) | delattr(o,"x") | معادل del o.x |
dict | ساخت دیکشنری | dict(a=1,b=2) | {"a":1,"b":2} | ساختار داده |
dir | لیست صفتها | dir(obj) | dir(\[]) | برای introspection |
divmod | مانده و خارج قسمت | divmod(a,b) | divmod(7,3) → (2,1) | معادل a//b, a%b |
enumerate | ایتراتور اندیسدار | enumerate(iterable) | list(enumerate(\["a","b"])) | برای حلقه |
eval | ارزیابی رشته | eval(expr) | eval("3+5") → 8 | مخاطرات امنیتی |
exec | اجرای کد | exec(obj) | exec("x=5") | کد داینامیک |
filter | فیلتر کردن دنباله | filter(func,iterable) | list(filter(lambda x:x>0,\[-1,2])) | ایتراتور بازمیگرداند |
float | تبدیل به float | float(x) | float("3.14") → 3.14 | از رشته یا عدد |
format | فرمتدهی | format(value, format_spec) | format(255,"x") → 'ff' | جایگزین str.format |
frozenset | مجموعه غیرقابل تغییر | frozenset(iterable) | frozenset(\[1,2,3]) | میتواند کلید dict باشد |
getattr | خواندن صفت | getattr(obj,name\[,default]) | getattr(str,"upper") | جلوگیری از AttributeError |
globals | فضای نام سراسری | globals() | globals()\["name"] | دیباگ |
hasattr | وجود صفت | hasattr(obj,name) | hasattr(\[], "append") → True | introspection |
hash | مقدار هش | hash(obj) | hash("abc") | برای اشیاء غیر هش پذیر خطا |
help | کمک تعاملی | help(obj) | help(len) | فقط تعاملی |
hex | نمایش هگز | hex(x) | hex(255) → '0xff' | دیباگ |
id | شناسه یکتا | id(obj) | id(123) | آدرس حافظه |
input | ورودی کاربر | input(prompt) | input("نام:") | فقط تعاملی |
int | تبدیل به int | int(x) | int("10") → 10 | گزینه پایه |
isinstance | نوع شی | isinstance(obj,cls) | isinstance(5,int) → True | چند کلاس ممکن |
issubclass | چک ارثبری | issubclass(C,D) | issubclass(bool,int) | True/False |
iter | ایتراتور | iter(obj) | iter(\[1,2,3]) | برای حلقه |
len | طول | len(obj) | len(\[1,2,3]) → 3 | تمام توالیها |
list | ساخت لیست | list(iterable) | list("abc") → \["a","b","c"] | تبدیل نوع |
locals | فضای نام محلی | locals() | locals()\["x"] | دیباگ |
map | اعمال تابع | map(func,iterable) | list(map(str,\[1,2])) | ایتراتور بازمیگرداند |
max | بیشینه | max(iterable) | max(\[1,3,2]) → 3 | با key function |
memoryview | نمایش حافظه | memoryview(obj) | memoryview(b"abc")\[0] | برای دادههای بزرگ |
min | کمینه | min(iterable) | min(\[1,3,2]) → 1 | با key function |
next | عنصر بعدی | next(iterator\[,default]) | next(iter(\[1,2])) | گزینه پیشفرض |
object | شی پایه | object() | o=object() | پایه همه کلاسها |
oct | نمایش اکتال | oct(x) | oct(8) → '0o10' | دیباگ |
open | باز کردن فایل | open(file,mode) | open("a.txt","w") | باید close شود |
ord | کد یونیکد | ord(c) | ord("A") → 65 | معکوس chr |
pow | توان | pow(x,y\[,mod]) | pow(2,3) → 8 | mod اختیاری |
خروجی | print(obj) | print("سلام") | چند آرگومان | |
property | ساخت property | property(fget,fset) | class C: x=property(...) | encapsulation |
range | ایتراتور int | range(start,stop,step) | list(range(3)) → \[0,1,2] | برای حلقه |
repr | نمایش رشتهای | repr(obj) | repr(\[1,2]) | دیباگ |
reversed | ایتراتور معکوس | reversed(seq) | list(reversed(\[1,2])) → \[2,1] | ایتراتور بازمیگرداند |
round | گرد کردن | round(x\[,n]) | round(3.14159,2) → 3.14 | n اختیاری |
set | مجموعه | set(iterable) | set(\[1,2,2]) → {1,2} | حذف تکراری |
setattr | تنظیم صفت | setattr(obj,name,value) | setattr(o,"x",5) | معادل o.x=5 |
slice | شی slice | slice(start,stop,step) | \[1,2,3]\[slice(1,3)] | برای توالیها |
sorted | لیست مرتبشده | sorted(iterable) | sorted(\[3,1,2]) → \[1,2,3] | با key function |
staticmethod | متد استاتیک | @staticmethod | class C: @staticmethod def f(): pass | مبتنی بر کلاس |
str | تبدیل به رشته | str(obj) | str(123) → '123' | تبدیل نوع |
sum | جمع | sum(iterable\[,start]) | sum(\[1,2,3]) → 6 | فقط اعداد |
super | فراخوانی متد والد | super() | super().method() | OOP |
tuple | ساخت تاپل | tuple(iterable) | tuple("ab") → ("a","b") | غیرقابل تغییر |
type | نوع یا کلاس | type(obj) | type(5) → int | قابل تعریف پویا |
vars | بازگرداندن صفتها | vars(obj) | vars(str) | introspection |
zip | چند ایترابل | zip(*iterables) | list(zip(\[1,2],\[3,4])) | ایتراتور بازمیگرداند |
import | ایمپورت داینامیک | import("os") | import("math").sqrt(4) | کم استفاده |
🧠 دانش خود را بیازمایید
دانش خود را آزمایش کنید
درک خود از توابع داخلی پایتون را تست کنید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود