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

برای اینکار باید از ماژول functools استفاده کرد.

مثال :

from functools import partial
  
# A normal function
def f(a, b, c, x):
    return 1000*a + 100*b + 10*c + x
  
# A partial function that calls f with
# a as 3, b as 1 and c as 4.
g = partial(f, 3, 1, 4)
  
# Calling g()
print(g(5))

 

خروجی کد بالا عدد 3145 خواهد بود.

همانطور که در کد بالا دیدید در متغیر g ما از تابع partial از ماژول functools استفاده کردیم و به عنوان اولین آرگومان این تابع نام تابع خودمان یعنی ( f ) را نوشتیم سپس در آرگومان های بعدی مقادیری که می بایست به ترتیب به آرگومان های تابع f داده شود را وارد کردیم.

ما برای آرگومان های a و b و c مقدار تعیین کردیم اما برای x مقدار تعیین نکردیم . پس مقادیر آن آرگومان ها ثابت خواهد بود و مقدار آرگومان x هنوز تعیین نشده است . پس ما میتوانیم با فراخوانی متغیر g به عنوان تابع و دادن مقدار به عنوان آرگومان به آن برای آرگومان یا آرگومان های تابع f که مقداری برایشان تعیین نشده است، مقدار تعیین کنیم.

مثالی دیگر :

from functools import *
  
# A normal function
def add(a, b, c):
   return 100*a + 10*+ c
  
# A partial function with b = 1 and c = 2
add_part = partial(add, c=2, b=1)
  
# Calling partial function
print(add_part(3))
خروجی کد بالا عدد 312 خواهد بود.
در کد بالا نیز از آنجایی که ما نمی خواستیم به ترتیب به آرگومان های تابع add مقدار دهی کنیم با نوشتن نام آرگومان و تخصیص مقدار موردنظر به آن ها اینکار را انجام دادیم.
سپس با فراخوانی متغیر add_part به عنوان تابع و دادن مقدار 3 به عنوان پارامتر به آن به تنها آرگومان باقی مانده تابع add که هنوز مقداری نگرفته بود، یعنی آرگومان a ، مقدار دادیم و تابع جدید را فراخوانی کردیم.
از مزایای توابع جزئی میتوان به این اشاره کرد که با استفاده از تابع جزئی که به توابع ناکامل یا ناقص نیز مشهورند میتوان از توابع بزرگ توابع جدیدی و اختصاصی برای بعضی استفاده ها ساخت و از بازنویسی توابع جلوگیری کرد .
مزیت توابع جزئی در پایتون شبیه به مزیت bind در ++C می باشد.