✔️ یک مثال خوب و مشخص از ارثبری در Python:
توضیحات :
1️⃣ ابتدا کلاس Vehicle را تعریف میکنیم که ویژگیها و روشهای مربوط به یک وسیله نقلیه رو داراست.
این کلاس شامل ویژگیهای make، model و year هست که نشان دهنده سازنده، مدل و سال وسیله نقلیه میباشند. همچنین این کلاس دارای روشهای start و stop هست که به ترتیب نمایانگر شروع و پایان عملکرد وسیله نقلیه است.
2️⃣ سپس کلاس Car رو تعریف میکنیم که از کلاس Vehicle ارثبری میکنه.
برای ارثبری از کلاس پدر، کافیه نام کلاس پدر رو بعد از نام کلاس فرزند در حالت اولیه تعریف کنیم.
با ارثبری از کلاس پدر، کلاس Car همه ویژگیها و روشهای کلاس Vehicle رو به ارث میبرد.
3️⃣ در کلاس Car، یک روش جدید به نام drive اضافه میکنیم که نمایانگر عمل رانندگی ماشین هست.
همچنین روش stop رو بازتعریف (override) میکنیم تا خروجی متناسب با ماشین خاصی که از کلاس Car ایجاد شده است رو نمایش بدیم.
با بازتعریف روش stop، نسخه پدر این روش در کلاس Vehicle برای اشیا Car دیگر معتبر نیست و جایگزین شده است.
4️⃣ هرچقدر که در کلاس Car روشهایی با نامهای تکراری با کلاس پدر داشته باشیم، روشهای کلاس پدر با استفاده از بازتعریف (override) جایگزین میشن و روشهای موردنیاز برای ماشین خاصی که از کلاس Car ایجاد شده هست رو میتونیم بر اساس نیاز تغییر بدیم.
5️⃣ نهایتاً، با ایجاد شیء vehicle از کلاس Vehicle و شیء car از کلاس Car، میتونیم به نمونهها و ویژگیها و روشها در هر دو مرحله دسترسی داشته و استفاده کنیم.
🔸 بطور خلاصه، ارثبری به ما کمک میکنه تا ویژگیها و رفتاری که در کلاس پدر تعریف شده هست رو به کلاسهای فرزند انتقال بدیم و بازتعریف روشها رو برای سفارشی کردن رفتار فرزندان انجام دهیم.
@Teachify | برنامه نویسی
class Vehicle:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
def start(self):
return "The vehicle is starting."
def stop(self):
return "The vehicle is stopping."
class Car(Vehicle):
def __init__(self, make, model, year, color):
super().__init__(make, model, year)
self.color = color
def drive(self):
return "The car is driving."
def stop(self):
return "The car is stopping."
vehicle = Vehicle("Toyota", "Camry", 2021)
car = Car("Ford", "Mustang", 2022, "Red")
print(vehicle.make, vehicle.model, vehicle.year) # Output: "Toyota Camry 2021"
print(vehicle.start()) # Output: "The vehicle is starting."
print(vehicle.stop()) # Output: "The vehicle is stopping."
print(car.make, car.model, car.year, car.color) # Output: "Ford Mustang 2022 Red"
print(car.start()) # Output: "The vehicle is starting." (inherited from Vehicle class)
print(car.drive()) # Output: "The car is driving."
print(car.stop()) # Output: "The car is stopping." (overrides the stop method in Vehicle class)
توضیحات :
1️⃣ ابتدا کلاس Vehicle را تعریف میکنیم که ویژگیها و روشهای مربوط به یک وسیله نقلیه رو داراست.
این کلاس شامل ویژگیهای make، model و year هست که نشان دهنده سازنده، مدل و سال وسیله نقلیه میباشند. همچنین این کلاس دارای روشهای start و stop هست که به ترتیب نمایانگر شروع و پایان عملکرد وسیله نقلیه است.
2️⃣ سپس کلاس Car رو تعریف میکنیم که از کلاس Vehicle ارثبری میکنه.
برای ارثبری از کلاس پدر، کافیه نام کلاس پدر رو بعد از نام کلاس فرزند در حالت اولیه تعریف کنیم.
با ارثبری از کلاس پدر، کلاس Car همه ویژگیها و روشهای کلاس Vehicle رو به ارث میبرد.
3️⃣ در کلاس Car، یک روش جدید به نام drive اضافه میکنیم که نمایانگر عمل رانندگی ماشین هست.
همچنین روش stop رو بازتعریف (override) میکنیم تا خروجی متناسب با ماشین خاصی که از کلاس Car ایجاد شده است رو نمایش بدیم.
با بازتعریف روش stop، نسخه پدر این روش در کلاس Vehicle برای اشیا Car دیگر معتبر نیست و جایگزین شده است.
4️⃣ هرچقدر که در کلاس Car روشهایی با نامهای تکراری با کلاس پدر داشته باشیم، روشهای کلاس پدر با استفاده از بازتعریف (override) جایگزین میشن و روشهای موردنیاز برای ماشین خاصی که از کلاس Car ایجاد شده هست رو میتونیم بر اساس نیاز تغییر بدیم.
5️⃣ نهایتاً، با ایجاد شیء vehicle از کلاس Vehicle و شیء car از کلاس Car، میتونیم به نمونهها و ویژگیها و روشها در هر دو مرحله دسترسی داشته و استفاده کنیم.
🔸 بطور خلاصه، ارثبری به ما کمک میکنه تا ویژگیها و رفتاری که در کلاس پدر تعریف شده هست رو به کلاسهای فرزند انتقال بدیم و بازتعریف روشها رو برای سفارشی کردن رفتار فرزندان انجام دهیم.
@Teachify | برنامه نویسی
❤7👍3
✔️ اصول و قواعد برنامهنویسی
1. YAGNI (You Aren't Gonna Need It):
این اصل بیان میکند که نباید ویژگیها یا قابلیتهای اضافی به نرمافزار اضافه شوند مگر این که واقعاً نیاز به آنها باشد. بنابراین، توسعهدهندگان باید از اضافه کردن قابلیتها یا کدهایی که احتمالاً استفاده نخواهند شد خودداری کنند.
2. DRY (Don't Repeat Yourself):
این اصل میگوید که هر قطعه کد باید فقط یک بار وجود داشته باشد، به این معنی که اگر نیاز به تغییر آن وجود داشته باشد، باید فقط یک مکان برای اعمال تغییر وجود داشته باشد. این کمک میکند که کدها قابلیت نگهداری و تغییر راحتتری داشته باشند.
3. KISS (Keep It Simple, Stupid):
این اصل به توسعهدهندگان یادآوری میکند که حتی اگر یک مسئله به نظر پیچیده بیاید، باید راهحل را به سادگی و در حداقل پیچیدگی ارائه دهند. هدف این است که کد قابل فهم و قابل نگهداری باشد.
4. SoC (Separation of Concerns):
این اصل به تفکیک مسائل مختلف نرمافزار اشاره دارد، به طوری که هر بخش از نرمافزار مسئولیت خاص خود را داشته باشد و به مسائل دیگر دخالت نکند. این کمک میکند که کد مرتب و قابل مدیریتتری داشته باشد.
5. POLA (Principle Of Least Astonishment):
این اصل میگوید که رفتار یک نرمافزار باید به کاربران کمترین میزان شگفتزدهای را ایجاد کند، به این معنی که رفتار نرمافزار باید قابل پیشبینی و متناسب با انتظارات کاربران باشد.
6. DIP (Dependency Inversion Principle):
این اصل میگوید که برنامهها باید به گونهای طراحی شوند که وابستگی به جزئیات اجزای سیستم کمینه شود و به جای آن، بر روی اصول وابستگی به واسطه (مانند رابطها) تاکید شود.
7. LoD (Law Of Demeter):
این اصل به توسعهدهندگان یادآوری میکند که هر ماژول فقط باید با اجزای خود یا اجزایی که مستقیماً به آنها وابستهاند تعامل داشته باشد. این کمک میکند که تغییرات در یک قسمت از کد اثر کمتری بر سایر بخشها داشته باشد.
8. TDD (Test-Driven Development):
این اصل به توسعهدهندگان توصیه میکند که قبل از نوشتن کد، تستهای واحدی برای آن نوشته شود و سپس کد بهگونهای تولید شود که این تستها را پاسخ دهد. این کمک میکند که کد پایدارتر و کمتر حاوی باگ باشد.
9. SOLID Principles:
این مجموعه اصول شامل پنج اصل است که شامل Single Responsibility Principle، Open/Closed Principle، Liskov Substitution Principle، Interface Segregation Principle، و Dependency Inversion Principle میشود. این اصول به توسعهدهندگان کمک میکند تا کدهای خود را سازماندهی و تکامل پذیرتر کنند.
10. CI/CD (Continuous Integration/Continuous Deployment):
این اصل به مفهوم یک فرایند خودکار برای ادغام تغییرات جدید در کد و ارسال آنها به محیط تولید میپردازد. این فرایند به توسعهدهندگان کمک میکند تا تغییرات را به سرعت و با اطمینان به محیط تولید ارسال کنند و باعث افزایش توسعه و ارتقاء پروژه میشود.
@Teachify | برنامه نویسی
1. YAGNI (You Aren't Gonna Need It):
این اصل بیان میکند که نباید ویژگیها یا قابلیتهای اضافی به نرمافزار اضافه شوند مگر این که واقعاً نیاز به آنها باشد. بنابراین، توسعهدهندگان باید از اضافه کردن قابلیتها یا کدهایی که احتمالاً استفاده نخواهند شد خودداری کنند.
2. DRY (Don't Repeat Yourself):
این اصل میگوید که هر قطعه کد باید فقط یک بار وجود داشته باشد، به این معنی که اگر نیاز به تغییر آن وجود داشته باشد، باید فقط یک مکان برای اعمال تغییر وجود داشته باشد. این کمک میکند که کدها قابلیت نگهداری و تغییر راحتتری داشته باشند.
3. KISS (Keep It Simple, Stupid):
این اصل به توسعهدهندگان یادآوری میکند که حتی اگر یک مسئله به نظر پیچیده بیاید، باید راهحل را به سادگی و در حداقل پیچیدگی ارائه دهند. هدف این است که کد قابل فهم و قابل نگهداری باشد.
4. SoC (Separation of Concerns):
این اصل به تفکیک مسائل مختلف نرمافزار اشاره دارد، به طوری که هر بخش از نرمافزار مسئولیت خاص خود را داشته باشد و به مسائل دیگر دخالت نکند. این کمک میکند که کد مرتب و قابل مدیریتتری داشته باشد.
5. POLA (Principle Of Least Astonishment):
این اصل میگوید که رفتار یک نرمافزار باید به کاربران کمترین میزان شگفتزدهای را ایجاد کند، به این معنی که رفتار نرمافزار باید قابل پیشبینی و متناسب با انتظارات کاربران باشد.
6. DIP (Dependency Inversion Principle):
این اصل میگوید که برنامهها باید به گونهای طراحی شوند که وابستگی به جزئیات اجزای سیستم کمینه شود و به جای آن، بر روی اصول وابستگی به واسطه (مانند رابطها) تاکید شود.
7. LoD (Law Of Demeter):
این اصل به توسعهدهندگان یادآوری میکند که هر ماژول فقط باید با اجزای خود یا اجزایی که مستقیماً به آنها وابستهاند تعامل داشته باشد. این کمک میکند که تغییرات در یک قسمت از کد اثر کمتری بر سایر بخشها داشته باشد.
8. TDD (Test-Driven Development):
این اصل به توسعهدهندگان توصیه میکند که قبل از نوشتن کد، تستهای واحدی برای آن نوشته شود و سپس کد بهگونهای تولید شود که این تستها را پاسخ دهد. این کمک میکند که کد پایدارتر و کمتر حاوی باگ باشد.
9. SOLID Principles:
این مجموعه اصول شامل پنج اصل است که شامل Single Responsibility Principle، Open/Closed Principle، Liskov Substitution Principle، Interface Segregation Principle، و Dependency Inversion Principle میشود. این اصول به توسعهدهندگان کمک میکند تا کدهای خود را سازماندهی و تکامل پذیرتر کنند.
10. CI/CD (Continuous Integration/Continuous Deployment):
این اصل به مفهوم یک فرایند خودکار برای ادغام تغییرات جدید در کد و ارسال آنها به محیط تولید میپردازد. این فرایند به توسعهدهندگان کمک میکند تا تغییرات را به سرعت و با اطمینان به محیط تولید ارسال کنند و باعث افزایش توسعه و ارتقاء پروژه میشود.
@Teachify | برنامه نویسی
❤🔥12👍4🕊2🐳1🤓1👨💻1🗿1
✔️ توابع داخلی یا همان Built-in پایتون
لازمه حتما حداقل یک بار باهاشون کار کرده باشید، چون ممکنه توی مصاحبه های کاری ازتون سوال بپرسن. بعضی از این توابع ورودی اینا میگیرن که دونستنش خالی از لطف نیست.
🌐 https://docs.python.org/3/library/functions.html
@Teachify | برنامه نویسی
لازمه حتما حداقل یک بار باهاشون کار کرده باشید، چون ممکنه توی مصاحبه های کاری ازتون سوال بپرسن. بعضی از این توابع ورودی اینا میگیرن که دونستنش خالی از لطف نیست.
🌐 https://docs.python.org/3/library/functions.html
@Teachify | برنامه نویسی
👍2
✔️ درک لیست یا List Comprehension در پایتون
درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است.
نحو کلی:
اجزاء:
بخش
بخش
بخش
بخش
مثال:
فرض کنید لیست
1. ایجاد لیست جدید با نام میوه ها به حروف بزرگ:
بخش fruit.upper() : محاسبه برای تبدیل هر نام میوه به حروف بزرگ
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست
بخش fruits : لیست قابل پیمایش
نتیجه:
2. ایجاد لیست جدید با نام میوه هایی که طول آنها بیشتر از 5 حرف است:
بخش len(fruit) > 5 : شرطی برای انتخاب نام میوه هایی که طول آنها بیشتر از 5 حرف است
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست
بخش fruits : لیست قابل پیمایش
نتیجه:
@Teachify | برنامه نویسی
درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است.
نحو کلی:
[<expression> for <item> in <iterable> if <condition>]
اجزاء:
بخش
<expression>: محاسباتی که برای هر عنصر در لیست جدید انجام می شود.بخش
<item>: متغیر موقتی که هر بار یک عنصر از لیست را نشان میدهد.بخش
<iterable>: لیست یا هر نوع داده قابل پیمایش که می خواهید از آن لیست جدید را ایجاد کنید.بخش
<condition>: شرطی که عناصر لیست جدید را مشخص میکند.مثال:
فرض کنید لیست
fruits شامل نام میوه ها به صورت زیر باشد:fruits = ["apple", "banana", "orange", "grape", "mango"]
1. ایجاد لیست جدید با نام میوه ها به حروف بزرگ:
uppercase_fruits = [fruit.upper() for fruit in fruits]
بخش fruit.upper() : محاسبه برای تبدیل هر نام میوه به حروف بزرگ
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست
fruits دریافت می کندبخش fruits : لیست قابل پیمایش
نتیجه:
uppercase_fruits = ["APPLE", "BANANA", "ORANGE", "GRAPE", "MANGO"]
2. ایجاد لیست جدید با نام میوه هایی که طول آنها بیشتر از 5 حرف است:
long_fruits = [fruit for fruit in fruits if len(fruit) > 5]
بخش len(fruit) > 5 : شرطی برای انتخاب نام میوه هایی که طول آنها بیشتر از 5 حرف است
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست
fruits دریافت می کندبخش fruits : لیست قابل پیمایش
نتیجه:
long_fruits = ["banana", "orange", "mango"]
@Teachify | برنامه نویسی
👍6
برنامه نویسی | Teachify
✔️ درک لیست یا List Comprehension در پایتون درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است. نحو کلی: [<expression> for <item> in <iterable> if <condition>] اجزاء: بخش <expression>: محاسباتی…
✔️ یک نمونه مثال ترکیبی و کامل از List Comprehension:
@Teachify | برنامه نویسی
def limit(arr, min=None, max=None):
min_check = lambda val : True if min is None else (val>=min)
max_check = lambda val : True if max is None else (val<=max)
return [val for val in arr if min_check(val) and max_check(val)]
print(limit([1,2,3,4,5], min=3)) # [3, 4, 5]
print(limit([1,2,3,4,5], max=3)) # [1, 2, 3]
@Teachify | برنامه نویسی
👍5
چطوری به این خروجی برسیم؟
میخواییم وقتی یک لیست به ما دادن، تعداد بیشترین تکرارها رو از داخلش در بیاریم که در مثال زیر عدد 1 نسبت به بقیه بیشتر تکرار شده
Top : [1, 2, 1, 1, 3, 4, 2] > [1]
@Teachify | برنامه نویسی
میخواییم وقتی یک لیست به ما دادن، تعداد بیشترین تکرارها رو از داخلش در بیاریم که در مثال زیر عدد 1 نسبت به بقیه بیشتر تکرار شده
Top : [1, 2, 1, 1, 3, 4, 2] > [1]
def top(arr):
values = {}
result = []
f_val = 0
for i in arr:
if i in values:
values[i] += 1
else:
values[i] = 1
print(values) # {1: 3, 2: 2, 3: 1, 4: 1}
f_val = max(values.values()) # 3
for i in values.keys():
if values[i] == f_val:
result.append(i)
else:
continue
return result
print(top([1, 2, 1, 1, 3, 4, 2])) # [1]
@Teachify | برنامه نویسی
👍3❤1
✔️ الگوریتم چک کردن اینکه ایا 2 تا استرینگ با هم هم شکل هستند یا نه؟
Example 1:
Input: s = "egg", t = "add"
Output: true
Example 2:
Input: s = "foo", t = "bar"
Output: false
Example 3:
Input: s = "paper", t = "title"
Output: true
@Teachify | برنامه نویسی
Example 1:
Input: s = "egg", t = "add"
Output: true
Example 2:
Input: s = "foo", t = "bar"
Output: false
Example 3:
Input: s = "paper", t = "title"
Output: true
def is_isomorphic(s, t):
if len(s) != len(t):
return False
dict = {}
set_value = set()
for i in range(len(s)):
if s[i] not in dict:
if t[i] in set_value:
return False
dict[s[i]] = t[i]
set_value.add(t[i])
else:
if dict[s[i]] != t[i]:
return False
return True
@Teachify | برنامه نویسی
👍6
✔️ استفاده از علامت / و * در توابع پایتون
علامت های اسلش و ستاره مشخص کننده نوع آرگومانی است که میتوانید به توابع خود ارسال کنید. پارامترهایی که بعد از علامت ستاره قرار میگیرند باید به شکل کلید-واژه (keyword-argument) ارسال شوند. همچنین پارامترهایی که قبل از علامت اسلش قرار میگیرند باید براساس موقعیت (positional-argument) ارسال شوند.
به عنوان مثال، به تابع زیر دقت کنید:
از آنجایی که پارامتر ln بعد از ستاره قرار گرفته، پس مجبور هستیم این آرگومان را به شکل کلید-واژه ارسال کنیم، در غیر اینصورت با خطا مواجه خواهیم شد. نحوه ارسال پارامترهایی که قبل از ستاره هستند اهمیتی ندارد و میتوان به هر شکلی آنها را ارسال کرد.
در مثال بعدی، از اسلش استفاده میکنیم:
در زمان استفاده از علامت اسلش در پارامترهای توابع پایتونی، تمام پارامترهایی که قبل از علامت اسلش قرار میگیرند، باید براسال موقعیت ارسال شوند و نمیتوانند به کلید-واژه ارسال شوند. نحوه ارسال پارامترهایی که بعد از علامت اسلش قرار میگیرند، اهمیتی ندارد.
@Teachify | برنامه نویسی
علامت های اسلش و ستاره مشخص کننده نوع آرگومانی است که میتوانید به توابع خود ارسال کنید. پارامترهایی که بعد از علامت ستاره قرار میگیرند باید به شکل کلید-واژه (keyword-argument) ارسال شوند. همچنین پارامترهایی که قبل از علامت اسلش قرار میگیرند باید براساس موقعیت (positional-argument) ارسال شوند.
به عنوان مثال، به تابع زیر دقت کنید:
def show(fn, *, ln):
print(f"your name is {fn} {ln}...")
>>> show('sepehr', ln='vafaei')
your name is sepehr vafaei...از آنجایی که پارامتر ln بعد از ستاره قرار گرفته، پس مجبور هستیم این آرگومان را به شکل کلید-واژه ارسال کنیم، در غیر اینصورت با خطا مواجه خواهیم شد. نحوه ارسال پارامترهایی که قبل از ستاره هستند اهمیتی ندارد و میتوان به هر شکلی آنها را ارسال کرد.
در مثال بعدی، از اسلش استفاده میکنیم:
def show(fn, /, ln):
print(f"your name is {fn} {ln}...")
>>> show('sepehr', ln='vafaei')
your name is sepehr vafaei...در زمان استفاده از علامت اسلش در پارامترهای توابع پایتونی، تمام پارامترهایی که قبل از علامت اسلش قرار میگیرند، باید براسال موقعیت ارسال شوند و نمیتوانند به کلید-واژه ارسال شوند. نحوه ارسال پارامترهایی که بعد از علامت اسلش قرار میگیرند، اهمیتی ندارد.
@Teachify | برنامه نویسی
👍9
Forwarded from هشتگ تبلیغ تخصصی
Media is too big
VIEW IN TELEGRAM
❌ امن ترین دارایی در جنگ طلا هست ...
❓ می دونستی بدون سرمایه هم می تونی یه طلا فروشی آنلاین داشته باشی؟
🔰 وبینار رایگان: چگونه بدون سرمایه، گالری آنلاین طلا بزنیم ؟ + چک لیست عملی
ثبت نام سریع از لینک👇
http://url.aramehacademy.com/webinar
⏰ سه شنبه 28 فروردین ساعت 20
⚠️ظرفیت محدود
❓ می دونستی بدون سرمایه هم می تونی یه طلا فروشی آنلاین داشته باشی؟
🔰 وبینار رایگان: چگونه بدون سرمایه، گالری آنلاین طلا بزنیم ؟ + چک لیست عملی
ثبت نام سریع از لینک👇
http://url.aramehacademy.com/webinar
⏰ سه شنبه 28 فروردین ساعت 20
⚠️ظرفیت محدود
😁2
✔️ متد split و join در پایتون
فانکشن split برای تکه تکه کردن یک string بر اساس یک کاراکتر خاص استفاده میشه. در کد پایین میبینید که با استفاده از یک string خالی یا همون فاصله جمله sayhello رو تکه تکه کردیم. نتیجه به شکل یک لیست برگشت داده میشه:
فانکشن join دقیقا برعکس split کار میکنه یعنی یه آبجکت iterable گرفته و آیتم های اونو به م میچسبونه. در کد زیر یک لیست به متد join داده شده و بر اساس یک string خالی این آیتم ها را به هم میچسباند.
@Teachify | برنامه نویسی
فانکشن split برای تکه تکه کردن یک string بر اساس یک کاراکتر خاص استفاده میشه. در کد پایین میبینید که با استفاده از یک string خالی یا همون فاصله جمله sayhello رو تکه تکه کردیم. نتیجه به شکل یک لیست برگشت داده میشه:
sayhello = 'Hello teachify members'
sp = sayhello.split(' ')
print(sp)
# ['Hello', 'teachify', 'members']
فانکشن join دقیقا برعکس split کار میکنه یعنی یه آبجکت iterable گرفته و آیتم های اونو به م میچسبونه. در کد زیر یک لیست به متد join داده شده و بر اساس یک string خالی این آیتم ها را به هم میچسباند.
my_list = ['Hello', 'teachify', 'members']
j = ' '.join(my_list)
print(j)
# Hello teachify members
@Teachify | برنامه نویسی
👍3👌1
✔️ یکم قوانین کلین کد پایتون بخونیم ... PEP 8
1. اسم متغییر ها و تابع ها باید از حروف کوچیک باشد.
@Teachify | برنامه نویسی
1. اسم متغییر ها و تابع ها باید از حروف کوچیک باشد.
# Correct:2. اگر متغییری دارید که قرار است هیچوقت مقدارش را تغییر ندهید، از حروف بزرگ استفاده کنید. ( بهش میگیم constant )
user_email = ...
def find_me(): ...
def go_home(): ...
# Wrong:
UserEmail = ...
def findMe(): ...
def GoHome(): ...
# Correct:3. اسم کلاس هارو با به صورت CapWord بنویسید(اول کلمات حرف بزرگ):
NO_CHANGE = 5
# Wrong:
NoChange = 5
no_change = 5
# Correct:4. سعی نکنید همه چیز را در یک خط جا دهید.
class MyClassName: ...
# Wrong:
class my_class_name: ...
# Correct:5. وقتی میخواید خالی بودن لیستی چیزی رو چک کنین، از len استفاده نکنید.
if foo == 'blah':
do_blah_thing()
do_one()
do_two()
# Wrong:
if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()
# Correct:
if not seq:
if seq:
# Wrong:
if len(seq):
if not len(seq):
@Teachify | برنامه نویسی
👍9