Boolean ها و اپراتورهای پایتون

Boolean ها و اپراتور های پایتون

نوع داده ی boolean در پایتون

بسیاری از اوقات در زبان های برنامه نویسی در شرایطی قرار می گیریم که خروجی یک دستور true (صحیح) یا false (غلط) می باشد. ما می توانیم تقریبا تمام دستورات در پایتون را به همین شکل ارزیابی کرده و آن ها را به true یا false برسانیم. به طور مثال زمانی که دو مقدار را مقایسه کنید، پایتون آن ها را ارزیابی کرده و مقدار true یا false را برمی گرداند:

print(10 > 9)
print(10 == 9)
print(10 < 9)

خروجی:

True
False
False

 همچنین هنگامی که شرطی را در یک دستور if قرار می دهید، پایتون یک مقدار Boolean (یعنی true یا false) را برمی گرداند. مثال:

a = 200
b = 33

if b > a:
  print("b is greater than a")
else:
  print("b is not greater than a")

خروجی:

b is not greater than a

در مثال بالا برای شرط مورد نظر مقدار false برگردانده می شود (33 بزرگتر از 200 نیست) بنابراین قسمت else اجرا می شود.

البته بعضی اوقات تشخیص اینکه فلان مقدار برابر با true یا false است برای برنامه نویسان مبتدی کار سختی است. اگر شما هم از این دسته افراد هستید، برای راحت تر شدن کارتان از تابع ()bool استفاده کنید؛ این تابع هر مقداری را ارزیابی کرده و به جای آن true یا false برمی گرداند. مثال:

print(bool("Hello"))
print(bool(15))

خروجی:

True
True

همچنین مثالی دیگر:

x = "Hello"
y = 15

print(bool(x))
print(bool(y))

خروجی:

True
True

هشدار: تقریبا تمامی دستورات و مقادیر برابر با true هستند:

  • هر رشته ای برابر با true است به جز رشته های خالی
  • هر عددی برابر true است به جز عدد صفر
  • هر list یا tuple یا set یا dictionary برابر true است مگر آن هایی که خالی باشند.
  • خطا ها نیز false محسوب می شوند
  • مقدار None نیز false محسوب می شود. خود مقدار False نیز طبیعتا false می باشد.

مثالی از مقادیر true:

print(bool("abc"))
print(bool(123))
print(bool(["apple", "cherry", "banana"]))

خروجی:

True
True
True

مثالی از مقادیر false:

print(bool(False))
print(bool(None))
print(bool(0))
print(bool(""))
print(bool(()))
print(bool([]))
print(bool({}))

خروجی:

False
False
False
False
False
False
False

نکته: اگر اشیائی داشته باشید که از کلاسی با تابع __len__ ساخته شده باشند که آن تابع مقدار صفر یا false برگرداند، شیء ما نیز false خواهد بود:

class myclass():
  def __len__(self):
    return 0

myobj = myclass()
print(bool(myobj))

مشخصا خروجی false است.

توجه داشته باشید که توابع نیز می توانند مقادیر Boolean برگردانند (محدود به شرط ها نیست). به طور مثال تابع ()isinstance تعیین می کند که مقدار شما از نوع داده ای خاص است یا خیر؛ در صورتی که از آن نوع داده بود true و در غیر این صورت false را برمی گرداند:

x = 200
print(isinstance(x, int))

در اینجا پرسیده ایم که آیا عدد x از نوع int (عدد صحیح) است یا خیر. خروجی قطعا true می باشد.

اپراتورهای پایتون

اپراتورها در پایتون به ما این امکان را می دهند که روی متغیرها و مقادیر متفاوت عملیات های مختلفی را اجرا کنیم. زبان پایتون اپراتورها را به دسته های زیر تقسیم می کند:

  • Arithmetic operators (حسابی)
  • Assignment operators (انتساب)
  • Comparison operators (مقایسه ای)
  • Logical operators (منطقی)
  • Identity operators (هویتی)
  • Membership operators (عضوی)
  • Bitwise operators (بیت-محور)

اپراتورهای حسابی

اپراتور نام

مثال

+ جمع x + y
- تفریق x - y
* ضرب x * y
/ تقسیم x / y
% باقی مانده x % y
** توان x ** y
// Floor division x // y

نکته: floor division در جدول بالا x را بر y تقسیم کرده سپس مقدار را به پایین ترین عدد بدون اعشار گرد می کند:

x = 15
y = 2
print(x // y)

خروجی مقدار 7 خواهد بود.

دیگر موارد جدول نیز بسیار ساده بوده و از عملیات های پایه ی ریاضی محسوب می شوند.

اپراتورهای انتساب

اپراتورهای انتساب زمانی کارایی دارند که بخواهیم مقداری را به متغیری نسبت دهیم، به زبان ساده تر متغیر را مقداردهی کنیم:

اپراتور مثال معادل
= x = 5 x = 5
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3
//= x //= 3 x = x // 3
**= x **= 3 x = x ** 3
&= x &= 3 x = x & 3
|= x |= 3 x = x | 3
^= x ^= 3 x = x ^ 3
>>= x >>= 3 x = x >> 3
<<= x <<= 3

x = x << 3

نکته: ما از اپراتورهایی مانند |= تقریبا هیچگاه استفاده نمی کنیم، چرا که مربوط به کار با bit ها می باشند و مخصوص پروژه های خیلی خاص و بسیار پیشرفته است. مثال ساده:

x = 5
x += 3
print(x)

خروجی عدد 8 می باشد.

اپراتورهای مقایسه ای

همانطور که از نام این اپراتورها مشخص است، مخصوص مقایسه بین دو مقدار هستند:

اپراتور نام مثال
== مساوی است با x == y
!= مساوی نیست با x != y
> بزرگتر است از x > y
< کوچکتر است از x < y
>= بزرگتر یا مساوی با x >= y
<= کوچکتر یا مساوی با x <= y

مثالی ساده:

x = 5
y = 3
print(x >= y)

خروجی قطعا true می باشد.

اپراتورهای منطقی

اپراتورهای منطقی برای ترکیب کردن دستورات شرطی استفاده می شوند:

اپراتور توضیحات مثال
and اگر هر دو دستور صحیح باشند مقدار true برمیگرداند

x < 5 and  x < 10

or اگر یکی از دو دستور صحیح باشد مقدار true برمیگرداند x < 5 or x < 4
not نتایج را برعکس میکند؛ اگر نتیجه true باشد مقدار false را برمیگرداند.

not(x < 5 and x < 10)

مثالی ساده:

x = 5
print(x > 3 and x < 10)

خروجی عبارت True خواهد بود چرا که هر دو شرط صحیح است.

اپراتورهای هویتی

این نوع اپراتورها برای مقایسه ی اشیاء استفاده می شوند؛ البته نه برای اینکه آیا برابر هستند یا خیر بلکه از این جهت مقایسه می شوند که آیا یکی هستند و مکان یکسانی را در حافظه اشغال می کنند یا خیر:

اپراتور توضیحات مثال
Is اگر هر دو متغیر یکی باشند true را برمیگرداند. x is y
Is not اگر هر دو متغیر یکی نباشند مقدار true را برمیگرداند. x is not y

مثالی ساده:

x = ["apple", "banana"]
y = ["apple", "banana"]
z = x

print(x is z)

خروجی true است چرا که z همان x است.

print(x is y(

خروجی false است چرا که x و y دو شیء متفاوت هستند (حتی اگر محتوایشان یکی باشد، به صورت جداگانه تعریف شده و در حافظه ی برنامه جایگاه جداگانه ای دارند).

print(x == y)

خروجی true است. در این قسمت می خواستم تفاوت بین == و is را بدانید؛ بر اساس == متغیرهای x و y یکی هستند چرا که محتویاتشان یکی است (کاری به جایگاه آن ها در حافظه ندارد).

اپراتورهای عضوی

این اپراتورها بررسی می کنند که آیا sequence (سری یا توالی) خاصی در یک شیء موجود است یا خیر:

اپراتور توضیحات مثال
in اگر توالی خاصی با مقدار خاصی درون شیء باشد، مقدار true برگردانده می شود. x in y
Not in اگر توالی خاصی با مقدار خاصی درون شیء نباشد، مقدار true برگردانده می شود. x not in y

مثالی ساده:

x = ["apple", "banana"]

print("banana" in x)

خروجی true است چرا که این رشته در شیء موجود است.

اپراتورهای bitwise

اپراتورهای bitwise برای مقایسه ی اعداد باینری (دودویی) استفاده می شود:

اپراتور نام توضیحات
& AND اگر هر دو بیت 1 باشند، تک تک بیت ها را به 1 تبدیل میکند.
| OR اگر یکی از دو بیت 1 باشند، تک تک بیت ها را به 1 تبدیل میکند.
^ XOR اگر فقط یکی از دو بیت 1 باشند، تک تک بیت ها را به 1 تبدیل میکند.
~ NOT تمام بیت ها را برعکس میکند.
<< Zero fill left shift از سمت راست صفر اضافه میکند تا بیت هایی که در سمت چپ هستند، خارج شوند.
>> Signed right shift از بیت های سمت چپ کپی گرفته و آن ها را از همان سمت چپ وارد میکند تا بیت های سمت راست خارج شوند (حذف شوند).

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

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری از مقدماتی تا پیشرفته با پایتون توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.