آموزش پایتون - عملگرهای انتساب
عملگر انتساب در پایتون
نماد = (مساوی) در پایتون بهعنوان عملگر انتساب تعریف شده است. مقدار عبارت پایتون در سمت راست آن، به یک متغیر در سمت چپ آن اختصاص داده میشود. نماد = در برنامهنویسی بهطور کلی (و بهویژه در پایتون) نباید با کاربرد آن در ریاضیات اشتباه گرفته شود؛ جایی که این نماد نشان میدهد عبارتهای دو طرف آن با یکدیگر برابر هستند.
مثالی از عملگر انتساب در پایتون
عبارتهای پایتون زیر را در نظر بگیرید:
a = 10
b = 5
a = a + b
print (a)
در نگاه اول، دستکم برای کسی که تازه با برنامهنویسی آشنا شده اما ریاضیات را میداند، عبارت "a=a+b" عجیب به نظر میرسد. چگونه ممکن است a با "a+b" برابر باشد؟ بااینحال، باید دوباره تأکید کرد که در اینجا نماد = یک عملگر انتساب است و برای نشان دادن برابری سمت چپ و سمت راست به کار نمیرود.
ازآنجاکه این یک انتساب است، عبارت سمت راست مقدار 15 را محاسبه میکند و این مقدار به a اختصاص داده میشود.
در عبارت "a+=b"، دو عملگر "+" و "=" را میتوان با هم ترکیب کرد و عملگر "+=" را ساخت. این عملگر، عملگر جمع و انتساب نامیده میشود. این عملگر در یک دستور، دو عملوند "a" و "b" را با هم جمع میکند و نتیجه را به عملوند سمت چپ، یعنی "a"، اختصاص میدهد.
عملگرهای انتساب ترکیبی در پایتون
پایتون علاوه بر عملگر انتساب ساده، چند عملگر انتساب دیگر نیز برای کاربردهای پیشرفتهتر ارائه میدهد. این عملگرها، عملگرهای انتساب تجمعی یا ترکیبی نامیده میشوند. در این فصل، استفاده از عملگرهای انتساب ترکیبی تعریفشده در پایتون را یاد خواهیم گرفت.
پایتون برای همه عملگرهای حسابی و مقایسهای، عملگرهای انتساب ترکیبی دارد.
عملگرهای انتساب ترکیبی پایتون، عملیات جمع و انتساب را در یک دستور ترکیب میکنند. ازآنجاکه پایتون از عملیات حسابی ترکیبی پشتیبانی میکند، دو عملوند میتوانند از انواع متفاوتی باشند. بااینحال، اگر نوع عملوند سمت راست گستردهتر باشد، نوع عملوند سمت چپ نیز به نوع آن تغییر میکند.
مثال
عملگر += یک عملگر ترکیبی است. این عملگر، عملگر جمع تجمعی نیز نامیده میشود؛ زیرا مقدار "b" را به "a" اضافه میکند و نتیجه را دوباره به متغیر a اختصاص میدهد.
عملگرهای انتساب ترکیبی در پایتون عبارتاند از:
- عملگر جمع ترکیبی
- عملگر تفریق ترکیبی
- عملگر ضرب ترکیبی
- عملگر تقسیم ترکیبی
- عملگر باقیمانده ترکیبی
- عملگر توان ترکیبی
- عملگر تقسیم صحیح ترکیبی
عملگر جمع ترکیبی (+=)
مثالهای زیر به درک نحوه عملکرد عملگر "+=" کمک میکنند:
a=10
b=5
print ("Augmented addition of int and int")
a+=b # equivalent to a=a+b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented addition of int and float")
a+=b # equivalent to a=a+b
print ("a=",a, "type(a):", type(a))
a=10.50
b=5+6j
print ("Augmented addition of float and complex")
a+=b #equivalent to a=a+b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented addition of int and int
a= 15 type(a): <class 'int'>
Augmented addition of int and float
a= 15.5 type(a): <class 'float'>
Augmented addition of float and complex
a= (15.5+6j) type(a): <class 'complex'>
عملگر تفریق ترکیبی (-=)
برای انجام عملیات تفریق و انتساب در یک دستور، از نماد -= استفاده کنید. عبارت "a-=b" عملیات انتساب "a=a-b" را انجام میدهد. عملوندها میتوانند از هر نوع عددی باشند. پایتون تبدیل نوع ضمنی را روی شیءای انجام میدهد که اندازه کوچکتری دارد.
a=10
b=5
print ("Augmented subtraction of int and int")
a-=b #equivalent to a=a-b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented subtraction of int and float")
a-=b #equivalent to a=a-b
print ("a=",a, "type(a):", type(a))
a=10.50
b=5+6j
print ("Augmented subtraction of float and complex")
a-=b #equivalent to a=a-b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented subtraction of int and int
a= 5 type(a): <class 'int'>
Augmented subtraction of int and float
a= 4.5 type(a): <class 'float'>
Augmented subtraction of float and complex
a= (5.5-6j) type(a): <class 'complex'>
عملگر ضرب ترکیبی (*=)
عملگر "*=" بر اساس همین اصل کار میکند. عبارت "a*=b" عملیات ضرب و انتساب را انجام میدهد و معادل "a=a*b" است. در ضرب ترکیبی دو عدد مختلط، قانون ضرب که در فصل قبل بررسی شد، قابل استفاده است.
a=10
b=5
print ("Augmented multiplication of int and int")
a*=b #equivalent to a=a*b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented multiplication of int and float")
a*=b #equivalent to a=a*b
print ("a=",a, "type(a):", type(a))
a=6+4j
b=3+2j
print ("Augmented multiplication of complex and complex")
a*=b #equivalent to a=a*b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented multiplication of int and int
a= 50 type(a): <class 'int'>
Augmented multiplication of int and float
a= 55.0 type(a): <class 'float'>
Augmented multiplication of complex and complex
a= (10+24j) type(a): <class 'complex'>
عملگر تقسیم ترکیبی (/=)
ترکیب نمادهای "/=" بهعنوان عملگر تقسیم و انتساب عمل میکند؛ بنابراین، "a/=b" معادل "a=a/b" است. نتیجه تقسیم عملوندهای صحیح یا اعشاری از نوع اعشاری است. تقسیم دو عدد مختلط، یک عدد مختلط برمیگرداند. در ادامه، مثالهایی از عملگر تقسیم ترکیبی ارائه شدهاند.
a=10
b=5
print ("Augmented division of int and int")
a/=b #equivalent to a=a/b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented division of int and float")
a/=b #equivalent to a=a/b
print ("a=",a, "type(a):", type(a))
a=6+4j
b=3+2j
print ("Augmented division of complex and complex")
a/=b #equivalent to a=a/b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented division of int and int
a= 2.0 type(a): <class 'float'>
Augmented division of int and float
a= 1.8181818181818181 type(a): <class 'float'>
Augmented division of complex and complex
a= (2+0j) type(a): <class 'complex'>
عملگر باقیمانده ترکیبی (%=)
برای انجام عملیات محاسبه باقیمانده و انتساب در یک دستور، از عملگر %= استفاده کنید. همانند عملگر باقیمانده، نسخه ترکیبی آن نیز برای اعداد مختلط پشتیبانی نمیشود.
a=10
b=5
print ("Augmented modulus operator with int and int")
a%=b #equivalent to a=a%b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented modulus operator with int and float")
a%=b #equivalent to a=a%b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented modulus operator with int and int
a= 0 type(a): <class 'int'>
Augmented modulus operator with int and float
a= 4.5 type(a): <class 'float'>
عملگر توان ترکیبی (**=)
عملگر "**=" مقدار "a" را به توان "b" میرساند و نتیجه را دوباره به "a" اختصاص میدهد. در ادامه، چند مثال ارائه شده است:
a=10
b=5
print ("Augmented exponent operator with int and int")
a**=b #equivalent to a=a**b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented exponent operator with int and float")
a**=b #equivalent to a=a**b
print ("a=",a, "type(a):", type(a))
a=6+4j
b=3+2j
print ("Augmented exponent operator with complex and complex")
a**=b #equivalent to a=a**b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented exponent operator with int and int
a= 100000 type(a): <class 'int'>
Augmented exponent operator with int and float
a= 316227.7660168379 type(a): <class 'float'>
Augmented exponent operator with complex and complex
a= (97.52306038414744-62.22529992036203j) type(a): <class 'complex'>
عملگر تقسیم صحیح ترکیبی (//=)
برای انجام تقسیم صحیح و انتساب در یک دستور، از عملگر "//=" استفاده کنید. عبارت "a//=b" معادل "a=a//b" است. این عملگر را نمیتوان با اعداد مختلط به کار برد.
a=10
b=5
print ("Augmented floor division operator with int and int")
a//=b #equivalent to a=a//b
print ("a=",a, "type(a):", type(a))
a=10
b=5.5
print ("Augmented floor division operator with int and float")
a//=b #equivalent to a=a//b
print ("a=",a, "type(a):", type(a))
خروجی زیر تولید میشود:
Augmented floor division operator with int and int
a= 2 type(a): <class 'int'>
Augmented floor division operator with int and float
a= 1.0 type(a): <class 'float'>
پیشرفت مطالعه: وضعیت خواندهشدن این درس فقط در همین مرورگر ذخیره میشود؛ بدون نیاز به حساب کاربری.