<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های saralotfi</title>
        <link>https://virgool.io/feed/@saralotfi</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-04-15 10:20:00</pubDate>
        <image>
            <url>https://static.virgool.io/images/default-avatar.jpg</url>
            <title>saralotfi</title>
            <link>https://virgool.io/@saralotfi</link>
        </image>

                    <item>
                <title>refactor کردن کد چیست</title>
                <link>https://virgool.io/codenevis/refactor-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%AF-%DA%86%DB%8C%D8%B3%D8%AA-ulrkd4bixvcr</link>
                <description>به زبان ساده، ریفکتور کردن کد به معنای بازنویسی یا بازسازی کد است تا کد تمیزتر، خواناتر و قابل‌درک‌تر شود، بدون اینکه عملکرد آن تغییری کند.به عبارت دیگر، در ریفکتورینگ ما به جای تغییر کاری که کد انجام می‌دهد، سعی می‌کنیم نحوه‌ی نوشتن آن را بهبود دهیم. این کار شامل مرتب کردن کد، حذف کدهای اضافی، بهینه‌سازی نام‌گذاری متغیرها و توابع و همچنین تقسیم کد به بخش‌های کوچکتر و قابل‌استفاده مجدد است.مزایای این کار شامل افزایش خوانایی، کاهش احتمال بروز خطا، و راحت‌تر کردن نگهداری و توسعه‌ی کد در آینده است.چرا ریفکتورینگ مهم است؟در طول زمان، کدهای نرم‌افزار ممکن است پیچیده و نامرتب شوند، به‌خصوص وقتی که ویژگی‌های جدید به برنامه اضافه شده و یا مشکلات رفع می‌شوند. این می‌تواند باعث شود که کد به مرور سخت‌تر قابل فهم و نگهداری شود. ریفکتورینگ کمک می‌کند تا این پیچیدگی کاهش یابد و ساختار کلی کد بهبود یابد.اهداف ریفکتور کردن کدریفکتورینگ کد چند هدف اصلی دارد:خوانایی (Readability): هدف این است که کد را ساده‌تر و روان‌تر کنیم تا هر کسی که روی پروژه کار می‌کند، آن را راحت‌تر بفهمد. کدی که به خوبی نام‌گذاری و ساختاربندی شده، خواناتر است و درک و کار با آن آسان‌تر است.حفظ‌پذیری (Maintainability): کد تمیز و منظم به برنامه‌نویسان این امکان را می‌دهد که تغییرات یا اصلاحات جدید را به راحتی اعمال کنند. این موضوع در پروژه‌های بزرگ و چند نفره اهمیت زیادی دارد.کاهش پیچیدگی (Reducing Complexity): با تقسیم کد به بخش‌های کوچکتر، حذف موارد تکراری و ساده‌سازی منطق‌ها، کد پیچیدگی کمتری پیدا می‌کند و خطاهای احتمالی نیز کاهش می‌یابند.افزایش کارایی (Performance): هرچند ریفکتورینگ معمولاً به بهبود عملکرد نمی‌پردازد، گاهی بهینه‌سازی‌ها در این فرآیند منجر به کاهش منابع موردنیاز و بهبود سرعت اجرا می‌شوند.ریفکتورینگ شامل چه تغییراتی است؟در ریفکتورینگ، تغییرات زیادی ممکن است اتفاق بیافتد. برخی از رایج‌ترین موارد به شرح زیر است:بهبود نام‌گذاری: نام‌های بهتر برای متغیرها، توابع و کلاس‌ها انتخاب می‌شود تا معنی آنها واضح‌تر شود.تقسیم توابع بزرگ: یک تابع بزرگ و پیچیده ممکن است به چند تابع کوچکتر تقسیم شود، که هر کدام وظیفه‌ای مشخص و ساده را انجام می‌دهند.حذف کدهای اضافی یا تکراری: کدهایی که چندین بار تکرار شده‌اند در قالب تابع یا کلاس‌هایی استخراج می‌شوند تا از تکرار کد جلوگیری شود.جایگزینی شرط‌های پیچیده با ساختارهای ساده‌تر: شرایط پیچیده و طولانی می‌توانند با ساده‌سازی منطقی و استفاده از توابع جایگزین شوند.استفاده از الگوهای طراحی (Design Patterns): الگوهای طراحی ساختارهای استانداردی هستند که به حل مسائل رایج در کدنویسی کمک می‌کنند. به‌کارگیری این الگوها می‌تواند کد را مرتب‌تر و حرفه‌ای‌تر کند.چه زمانی باید ریفکتور کنیم؟ریفکتورینگ بهتر است به صورت منظم انجام شود. هر زمان که تغییر یا ویژگی جدیدی به کد اضافه می‌کنید یا کدی را رفع مشکل می‌کنید، کمی زمان برای بهبود ساختار و خوانایی آن صرف کنید. به این کار اصطلاحاً &quot;ریفکتورینگ مستمر&quot; می‌گویند.مثال ساده از ریفکتورینگفرض کنید کدی دارید که مساحت یک مستطیل را محاسبه می‌کند، ولی به دلیل نام‌گذاری‌ها و ساختار نامناسب، فهم آن سخت است.کد اولیه:a = 10
b = 20
area = a * b
print(&amp;quotThe area is&amp;quot, area)این کد را می‌توان به صورت زیر ریفکتور کرد:def calculate_rectangle_area(width, height):
    return width * height

width = 10
height = 20
area = calculate_rectangle_area(width, height)
print(&amp;quotThe area is&amp;quot, area)در این نسخه، کد خواناتر و مفهوم‌تر شده و اگر نیاز به استفاده‌ی مجدد از این تابع باشد، به راحتی می‌توان آن را فراخوانی کرد.ریفکتور کردن به معنای بهبود ساختار کد بدون تغییر در عملکرد آن است. این کار باعث می‌شود کد نگهداری و فهم آسان‌تری داشته باشد و برنامه‌نویسان دیگر نیز بتوانند بهتر با آن کار کنند.</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Thu, 31 Oct 2024 18:37:54 +0330</pubDate>
            </item>
                    <item>
                <title>برنچ ها در گیت چه هستند؟ و کاربرد ها</title>
                <link>https://virgool.io/@saralotfi/%D8%A8%D8%B1%D9%86%DA%86-%D9%87%D8%A7-%D8%AF%D8%B1-%DA%AF%DB%8C%D8%AA-%DA%86%D9%87-%D9%87%D8%B3%D8%AA%D9%86%D8%AF-%D9%88-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-%D9%87%D8%A7-m9cafuds7eie</link>
                <description>در گیت، &quot;برنچ&quot; (branch) یک شاخه از کد اصلی است که به شما اجازه می‌دهد تا تغییراتی را به صورت جداگانه از شاخه اصلی (که معمولا به آن شاخه main یا master می‌گویند) اعمال کنید. این کار باعث می‌شود که بتوانید بدون تأثیر بر کد اصلی، ویژگی‌های جدید، رفع اشکالات، یا تغییرات دیگر را روی یک نسخه جداگانه تست و توسعه دهید.کاربردهای برنچ:توسعه ویژگی‌های جدید: وقتی می‌خواهید یک قابلیت جدید را به پروژه اضافه کنید، می‌توانید یک برنچ جدید بسازید و تغییرات را روی آن اعمال کنید.رفع باگ‌ها: برای رفع اشکال‌ها و خطاهای موجود، می‌توانید یک برنچ جدا بسازید، مشکل را برطرف کنید، و سپس تغییرات را به شاخه اصلی اضافه کنید.آزمایش و تست کردن: با استفاده از برنچ‌ها می‌توانید تغییرات خود را آزمایش کنید تا مطمئن شوید که کد بدون مشکل کار می‌کند.در گیت، برنچ‌ها کمک می‌کنند تا بتوانید بدون تغییر کد اصلی (معمولا mainیا master) به توسعه، رفع باگ‌ها یا آزمایش ویژگی‌های جدید بپردازید. بیایید مراحل ایجاد، جابه‌جایی و ادغام برنچ‌ها را به سادگی بررسی کنیم:1. ایجاد برنچ جدیدبرای ایجاد یک برنچ جدید:git branch &lt;branch-name&gt;به جای &lt;branch-name&gt;, نام برنچ مورد نظر خود را بنویسید. این دستور فقط برنچ جدیدی می‌سازد، ولی به آن برنچ منتقل نمی‌شود.2. جابه‌جایی به برنچ جدیدپس از ایجاد برنچ، برای رفتن به آن از دستور زیر استفاده کنید:git checkout &lt;branch-name&gt;به این معنی که هر تغییری از اینجا به بعد، فقط روی این برنچ اعمال می‌شود و کد اصلی تحت تاثیر قرار نمی‌گیرد.یا اگر می‌خواهید برنچ را بسازید و همزمان به آن بروید:git checkout -b &lt;branch-name&gt;3. اعمال تغییرات و ذخیره آنهاحال که در برنچ جدید هستید، می‌توانید کد خود را تغییر دهید. برای ثبت تغییرات، مراحل زیر را طی کنید:مرحله‌بندی (Staging): .git addاین دستور تمامی تغییرات فایل‌ها را برای ذخیره‌سازی آماده می‌کند.ایجاد کامیت (Commit):git commit -m &quot;توضیح مختصر از تغییرات&quot;این دستور تغییرات را به صورت دائم در تاریخچه برنچ ثبت می‌کند.4. ادغام برنچ با شاخه اصلی (Merge)وقتی تغییرات شما کامل شد و آماده اضافه شدن به شاخه اصلی هستند، مراحل زیر را انجام دهید:رفتن به برنچ اصلی:git checkout mainاین دستور تغییرات برنچ را به شاخه main اضافه می‌کند.ادغام تغییرات:git merge &lt;branch-name&gt;5. حذف برنچ (در صورت اتمام کار)پس از ادغام، اگر دیگر نیازی به برنچ ندارید، می‌توانید آن را حذف کنید:git branch -d &lt;branch-name&gt;این روش به شما کمک می‌کند پروژه را بهینه‌تر و مرتب‌تر مدیریت کنید، به خصوص اگر چندین نفر روی آن کار می‌کنند</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Thu, 31 Oct 2024 09:33:37 +0330</pubDate>
            </item>
                    <item>
                <title>شباهت و تفاوت های کلاس در python و C++</title>
                <link>https://virgool.io/@saralotfi/%D8%B4%D8%A8%D8%A7%D9%87%D8%AA-%D9%88-%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%87%D8%A7%DB%8C-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AF%D8%B1-python-%D9%88-c-wesjjts6vlkh</link>
                <description>شباهت‌ها و تفاوت‌های کلاس‌ها در پایتون و سی‌پلاس‌پلاس:1. تعریف کلاس:   - در پایتون: تعریف کلاس با استفاده از کلیدواژه class انجام می‌شود.   - در سی‌پلاس‌پلاس: تعریف کلاس با استفاده از کلیدواژه class و نوع داده (مانند struct یا class) انجام می‌شود.2. متد‌ها:   - در پایتون: متدها به صورت self به عنوان اولین پارامتر خود را دریافت می‌کنند.   - در سی‌پلاس‌پلاس: متدها به صورت explicit به عنوان یک عضو از کلاس تعریف می‌شوند و نیازی به self ندارند.3. وراثت:   - در پایتون: وراثت چندگانه پشتیبانی می‌شود.   - در سی‌پلاس‌پلاس: وراثت چندگانه پشتیبانی می‌شود.4. کلاس‌های انتزاعی:__   - در پایتون: از طریق ارث بری چندگانه و تعریف کلاس‌های abstract امکان‌پذیر است.   - در سی‌پلاس‌پلاس: از طریق ارث بری چندگانه و تعریف کلاس‌های abstract امکان‌پذیر است.5. متغیرها:   - در پایتون: نوع متغیرها به صورت پویا تعیین می‌شود.   - در سی‌پلاس‌پلاس: نوع متغیرها به صورت static و constant تعیین می‌شود. (Constructors and Destructors):پایتون: سازنده با متد __init__ تعریف می‌شود و مخرب با متد __del__ (که به ندرت استفاده می‌شود).C++: سازنده و مخرب به طور صریح تعریف می‌شوندانواع تابع های قابل تعریف:پایتون:توابع نمونه (Instance Methods):این توابع به نمونه‌ای خاص از کلاس تعلق دارند و اولین پارامتر آن‌ها معمولاً self است که به شیء فعلی اشاره دارد.توابع کلاس (Class Methods):این توابع به کلاس تعلق دارند و اولین پارامتر آن‌ها  clsاست که به خود کلاس اشاره دارد. با استفاده از دکوریتور@classmethod تعریف می‌شوند.توابع ایستا (Static Methods):این توابع به کلاس یا نمونه خاصی تعلق ندارند و نیازی به self یا cls ندارند. با استفاده از دکوریتور @staticmethod تعریف می‌شوند.توابع خصوصی (Private Methods):این توابع فقط داخل همان کلاس قابل دسترسی هستند و با دو زیرخط (__) شروع می‌شوند.c++:توابع عضو (Member Functions):این توابع به نمونه‌ای خاص از کلاس تعلق دارند و به اعضای کلاس دسترسی دارندتوابع عضو ثابت (Const Member Functions):این توابع اعضای کلاس را تغییر نمی‌دهند و با کلمه کلیدی const مشخص می‌شوند.توابع عضو استاتیک (Static Member Functions):این توابع به نمونه خاصی تعلق ندارند و با کلمه کلیدی static مشخص می‌شوند.توابع مجازی (Virtual Functions):این توابع می‌توانند در کلاس‌های فرزند بازنویسی شوند و با کلمه کلیدی virtual مشخص می‌شوند.توابع خصوصی (Private Member Functions):این توابع فقط داخل همان کلاس قابل دسترسی هستند و در بخش private تعریف می‌شوند.در این توابع نوع های مشترک نیز بین پایتون و c++هست که ما میتوانیم از مشترکین به این ها توجه کنیم:توابع نمونه (Instance Methods) در پایتون و توابع عضو (Member Functions) در C++توابع کلاس (Class Methods) در پایتون و توابع عضو استاتیک (Static Member Functions) در C++توابع ایستا (Static Methods) در پایتون و توابع عضو استاتیک (Static Member Functions) در C++{بنابراین، توابع عضو استاتیک در C++ هم شباهت به توابع کلاس در پایتون دارند (زیرا می‌توانند به داده‌ها و متدهای سطح کلاس دسترسی داشته باشند) و هم به توابع ایستا در پایتون (زیرا به نمونه خاصی از کلاس تعلق ندارند)}توابع خصوصی (Private Methods) در پایتون و توابع خصوصی (Private Member Functions) در C++پایتون و C++ هر دو از کلاس‌ها و شیءگرایی پشتیبانی می‌کنند، اما نحوه پیاده‌سازی و استفاده از این مفاهیم در این دو زبان تفاوت‌های قابل توجهی دارد. پایتون با سینتکس ساده‌تر و سطح بالاتری که دارد، استفاده از کلاس‌ها را آسان‌تر می‌کند.</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Sun, 21 Jul 2024 09:20:47 +0330</pubDate>
            </item>
                    <item>
                <title>انواع تابع کلاس در پایتون</title>
                <link>https://virgool.io/codenevis/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%AA%D8%A7%D8%A8%D8%B9-%DA%A9%D9%84%D8%A7%D8%B3-%D8%AF%D8%B1-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-xxfdzavfcyzi</link>
                <description>در پایتون کلاس ها انواع تابع دارند و هرکدام کاربرد خاص خودش رو داره و اونهارو باهم مرور میکنیم:متدهای نمونه (Instance Methods):این نوع متدها بر روی نمونه‌های یک کلاس اعمال می‌شوند و معمولاً به خود نمونه به عنوان اولین آرگومان self دسترسی دارند. فرض کنید یک کلاس Bank account داریم که دارای ویژگی‌هایی مانند (موجودی) است. اگر بخواهیم یک متد برای واریز پول داشته باشیم، این متد باید به موجودی همان حساب خاص دسترسی داشته باشد.پس ازین متد در اینجا استفاده میکنیممتدهای کلاس (Class Methods):این نوع متدها بر روی خود کلاس اعمال می‌شوند و به جای self از cls به عنوان اولین آرگومان استفاده می‌کنند. برای تعریف این متدها از دکوریتور @classmethod استفاده می‌شود.فرض کنید می‌خواهیم تعداد کل حساب‌های بانکی که ایجاد شده‌اند را نگه داریم و یک متد برای دریافت این تعداد داشته باشیم.متدهای ایستا (Static Methods):این نوع متدها به هیچ نمونه یا کلاس خاصی مرتبط نیستند و نیازی به self یا cls ندارند. برای تعریف این متدها از دکوریتور @staticmethod استفاده می‌شود.فرض کنید می‌خواهیم یک متد برای تبدیل ارز داشته باشیم که به ویژگی‌های خاصی از کلاس یا نمونه‌ها نیاز ندارد.متدهای خاص (Special Methods):این متدها به متدهای جادویی (magic methods) یا dunder methods (دو آندرلاین) نیز شناخته می‌شوند و برای تعریف رفتارهای خاص مثل مقداردهی اولیه، نمایش، و عملیات‌های ریاضی استفاده می‌شوند. مثلاً __str__,__init__,__add____init__: این متد برای مقداردهی اولیه به ویژگی‌های مالک و توازن استفاده می‌شود.__str__: این متد برای ارائه نمایش متنی دوستانه از شیء استفاده می‌شود، مثلاً وقتی از پرینت حساب استفاده می‌کنید.__repr__: این متد نیز برای نمایش متنی رسمی‌تر از شیء استفاده می‌شود که معمولاً برای توسعه‌دهندگان مفید است.__add__: این متد برای جمع دو حساب بانکی استفاده می‌شود، به طوری که مالکین و موجودی‌های آنها با هم جمع می‌شوند.هر یک از این انواع متدها کاربرد و موارد استفاده خاص خود را دارند</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Sat, 13 Jul 2024 14:20:28 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت میان داینامیک و استاتیک در کلاس ها</title>
                <link>https://virgool.io/codenevis/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%85%DB%8C%D8%A7%D9%86-%D8%AF%D8%A7%DB%8C%D9%86%D8%A7%D9%85%DB%8C%DA%A9-%D9%88-%D8%A7%D8%B3%D8%AA%D8%A7%D8%AA%DB%8C%DA%A9-%D8%AF%D8%B1-%DA%A9%D9%84%D8%A7%D8%B3-%D9%87%D8%A7-vuwbsxbnjnpz</link>
                <description>اگر بخواهیم یک تعریف کلی ازین دو بگیم :استاتیک (Static):تعریف: کلاس‌ها، متدها یا ویژگی‌های استاتیک در زمان کامپایل تعریف می‌شوند و در طول اجرا تغییر نمی‌کنند.استفاده: معمولاً برای متغیرها یا متدهایی که به یک کلاس مربوط هستند و نیازی به ایجاد نمونه از آن کلاس ندارند، استفاده می‌شود.وقتی صحبت از چیزهای استاتیک می‌شه، به مواردی اشاره داریم که در زمان نوشتن کد تعریف می‌شن و توی زمان اجرا تغییر نمی‌کنند. مثلاً یک متغیر یا یک متد استاتیک، به معنایش اینه که اون چیزی که نوشتیم، همون‌طور که هست، همون‌طور که استفاده می‌شه.داینامیک (Dynamic):تعریف: کلاس‌ها، متدها یا ویژگی‌های داینامیک در زمان اجرا  تعریف می‌شوند و می‌توانند در طول اجرا تغییر کنند یا به آنها اضافه شوند.استفاده: برای مواردی که نیاز است که ساختار داده یا عملکرد برنامه در طول اجرا تغییر کند، مورد استفاده قرار می‌گیرد.اما وقتی می‌گیم چیزی داینامیکه، منظورمون اینه که می‌تونه توی زمان اجرا تغییر کنه یا اضافه بشه. مثلاً می‌تونیم یک شی رو به یک کلاس اضافه کنیم یا خصوصیاتش رو تغییر بدیم و اینها همه در حین اجرای برنامه اتفاق می‌افتن.به طور خلاصه، استفاده از استاتیک منجر به پایداری بیشتر کد و بهبود عملکرد می‌شود، در حالی که استفاده از داینامیک امکاناتی مانند انعطاف پذیری بیشتر و تغییر سریع‌تر را فراهم می‌کند، اما با هزینه‌هایی مانند پیچیدگی بیشتر و کندی عملکرد را دارد.از استاتیک معمولاً برای کارهایی استفاده می‌شه که نیاز به ثبات و اطمینان بیشتری دارند، مثل تعریف یک متغیر یا متد که همیشه یک فرم خاص رو دارند. اما از داینامیک برای کارهایی استفاده می‌شه که نیاز به انعطاف بیشتری دارند و ممکنه در طول اجرا نیاز به تغییرات داشته باشند، مثل ایجاد یک شی جدید یا تغییر خصوصیاتش.مثل چرخ های خودرو که همیشه 4تا هست در طول برنامه(استاتیک) اما رنگ هر خودرویی متفات میتونه باشه و فرق کنه در طول اجرا(داینامیک)</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Sat, 13 Jul 2024 13:50:33 +0330</pubDate>
            </item>
                    <item>
                <title>Snake Case VS Camel Case VS Pascal Case VS Kebab Case</title>
                <link>https://virgool.io/@saralotfi/snake-case-vs-camel-case-vs-pascal-case-vs-kebab-case-dqnujlwui7xf</link>
                <description>به عنوان یک مهندس کامپیوتر بهتر است با نقل قول های زیر اشنا باشیم.میخواهیم تفاوت بین پر طرفدار ترین نوع caseهارو توضیح بدهیم:چرا در برنامه نویسی از caseها استفاده میکنیم؟فرض کنید می خواهید یک متغیر در برنامه خود ایجاد کنید و نام متغیر بیش از یک کلمه باشد.برای اینکه برنامه شما خراب نشود، نمی توانید هنگام ایجاد متغیر بین کلمات مختلف فاصله بگذارید.بیشتر زبان های برنامه نویسی هر کلمه را به عنوان یک چیز کاملاً مجزا و یک واحد تفسیر می کنند.به طور خاص، قراردادهای نامگذاری خاصی در همه زبان های برنامه نویسی موجود است که به نام های زیر نیز شناخته می شونSnake Case Camel Case Pascal Case Kebab Caseهنگامی که صحبت از استفاده از هر سبکی میشود ، هیچ پاسخ قطعی در مورد اینکه کدام یک بهترین است وجود ندارد. بستگی دارد.هنگام انتخاب سبک مورد نظر بهترین روش های زبان برنامه نویسی مورد استفاده در پروژه خود را در نظر داشته باشید.و مهم نیست که کدام مورد را انتخاب می کنید، در پروژه خود ثابت قدم باشید.بهترین تمرین این است که یک سبک مورد را انتخاب کنید و به آن پایبند باشید. به این ترتیب، کد شما برای خود و سایر توسعه دهندگانی که ممکن است در یک تیم با آنها کار می کنید، خوانا، آسان برای درک و نگهداری باقی بماند.بیایید هر مورد را با جزئیات بیشتر در بخش های بعدی ببینیم:Snake caseهر کلمه را با یک کاراکتر زیر خط ( _) جدا می کندهنگام استفاده ، همه حروف باید کوچک باشند.معمولاً هنگام برنامه نویسی در پایتون با آن بیشتر مواجه خواهید شد و نه در برنامه نویسی د جاوا، جاوا اسکریپت یا تایپ اسکریپت.هنگام کار با پایگاه داده نیز با آن روبرو خواهید شد، زیرا برای ایجاد نام جدول و ستون استفاده می شود.همچنین یک نسخه تمام کلاهک از ان وجود دارد که در آن همه حروف در حروف بزرگ هستند.نسخه با حروف بزرگ برای اعلان ثابت ها در اکثر زبان های برنامه نویسی استفاده می شود. ثابت یک آیتم داده ای است که مقدار آن در طول عمر یک برنامه تغییر نمی کند.مثالnumber_of_donuts = 34
fave_phrase = &amp;quotHello World&amp;quotKebab Caseتفاوت بین Snake case و  Kebab Case در این است کهKebab Case هر کلمه را -به جای زیرخط با یک کاراکتر خط تیره جدا می کند.بنابراین، همه کلمات کوچک هستند و هر کلمه با یک خط تیره از هم جدا می شودو Kebab Case یکی دیگر از خواناترین روش های ترکیب چند کلمه در یک کلمه است.بیشتر در آدرس های اینترنتی با ان مواجه میشوید.URL (مخفف Uniform Resource Locator) یک آدرس منحصر به فرد برای دسترسی به یک منبع در وب است.مثالNUMBER_OF_DONUTS = 34
FAVE_PHRASE = &amp;quotHello World&amp;quotCamel Caseهنگام استفاده از حروف ان با کوچک کردن کلمه اول شروع می کنید. سپس، حرف اول هر کلمه ای که در ادامه می آید را بزرگ می نویسید.بنابراین، یک حرف بزرگ در ابتدای کلمه دوم و در هر کلمه بعدی که به دنبال آن می آید ظاهر می شوددر جاوا، جاوا اسکریپت و تایپ اسکریپت برای ایجاد نام متغیرها، تابع ها و متدها با camel case مواجه خواهید شد.مثالnumber-of-donuts = 34
fave-phrase = &amp;quotHello World&amp;quotPascal CasePascal Case شبیهCamel Case  است.تنها تفاوت بین این دو این است که حروف پاسکال نیاز دارد که حرف اول کلمه اول نیز بزرگ شود.بنابراین، هنگام استفاده از ان، هر کلمه با یک حرف بزرگ شروع می‌شود (برخلافCamel Case که اولین کلمه با حروف کوچک است)مثال:NumberOfDonuts = 34
FavePhrase = &amp;quotHello World&amp;quot</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Wed, 10 Jul 2024 15:09:53 +0330</pubDate>
            </item>
                    <item>
                <title>نحوه اتصال vscode به github</title>
                <link>https://virgool.io/@saralotfi/%D9%86%D8%AD%D9%88%D9%87-%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-vscode-%D8%A8%D9%87-github-lwhi23cqruh2</link>
                <description>در مرحله اول  بعد از نصب git و vscode ,vscodeرا باز کرده روی ادمک سمت چپ تصویر کلیک میکنیمsing to sync setting رو میزنیمو بعد در بالا برای ما دو گزینه می اورد که ما روی sing in with git hub کلیک میکنیمبعد از اینکه این رو کلیک کردیم ارجاع میشه به صفحه github  و وارد اکانت خود میشویم و بعد در vscodeمتصل میشیم به git hubخب حالا کد خودمون رو مینویسیم و بعد در این قسمت که عکسشو میزارمدر این قسمت ما یک ریپازیتوری جدید میسازیم و کار هایی که میخواهیم در گیت انجام بدهیم رو اینجا انجام میدیمبه طور مثال ما بعد از هر تغیر یک کامیت میزنیمو پوش میکنیمیا کامیت میزنیم و سینک میکنیم </description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Wed, 10 Jul 2024 14:27:11 +0330</pubDate>
            </item>
                    <item>
                <title>اجرای خط به خط پایتون در vs code</title>
                <link>https://virgool.io/codenevis/%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%AE%D8%B7-%D8%A8%D9%87-%D8%AE%D8%B7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%AF%D8%B1-vs-code-svreazn0cf3p</link>
                <description>چندین راه حل مختلف برای اینکار وجود دارد که ما از 3 تا از اونها که راحت تر هست استفاده میکنیم1)Debugging برای Debugging کردن مراحل زیر رو طی میکنیمباز کردن فایل پایتون در vscodeقرار دادن Break point:روی خطی که میخواهیم دیباگ از اونجا شروع بشه کلیک میکنیم و نقطه ای قرمز در بغل ان ظاهر میشه روی اون کلیک میکنیم.شروع دیباگ: روی ایکون Run Debug کلیک میکنیم و python file رو انتخاب میکنیمکنترل های دیباگپس از شروع دیباگ، کد در نقطه توقف (Breakpoint) متوقف می‌شود. اکنون می‌توانید از کنترل‌های دیباگ استفاده کنید:Continue (F5): اجرای برنامه تا رسیدن به نقطه توقف بعدی یا پایان برنامه.این گزینه برنامه رو از سر میگیره و به اجرای نرمال ان بدون مکث میپردازه مگه اینکه نقطه توقف دیگه ای سر راهمون باشه.Step Over (F10): اجرای خط فعلی و توقف در خط بعدی.یک گام منفرد رو ایجاد میکنه بدین ترتیب خطی که هایلایت شده است اجرا خواهد شد  و سپس متوقف میشود. Step Into (F11): ورود به تابع یا متد در خط فعلی.عملکردی مشابه step over دارد با این فرق که رفتارش با تابع متفاوت است.Step Out (Shift+F11): خروج از تابع یا متد فعلی و بازگشت به تابع یا متد فراخوانی‌کننده.امکان خروج از تابع کنکونی رو در یک گام فراهم میکند و سپس در خط بعدی متوقف میشود Restart (Ctrl+Shift+F5): شروع مجدد دیباگ.Stop (Shift+F5): توقف دیباگ.در دیباگ کردن یک قسمت مهم دیگه ای هم داریم به نام watch .قسمت Watch به ما کمک می‌کند که متغیرهای خاص را در طول دیباگ مشاهده کنید.بعد از شروع دیباگ، در نوار کناری سمت چپ، قسمت Watch را پیدا کنید. این قسمت معمولاً در زیر قسمت Variables قرار دارد.روی علامت + در قسمت Watch کلیک کنید.نام متغیری که می‌خواهید نظارت کنید را تایپ کنید و Enter بزنیدمقدار فعلی متغیر در قسمت Watch نمایش داده می‌شود.هر وقت برنامه در یک Breakpoint متوقف شود یا خط به خط اجرا شود، مقدار متغیر به‌روزرسانی می‌شود.حالا اگه بخواهیم متغیر رو حذف کنیم روی متغیری که در Watch اضافه کرده‌اید، راست کلیک کنید و گزینه Remove Expression را انتخاب کنید.متغیر ما حذف شدبه طور مثال ما یک فایل پایتون رو Run Debug و در خط 2 Breakpoint قرار داده ایمکد در خط 2 متوقف میشود  حالا میتونیم با کنترل های دیباگ برای اجرای خط به خط از اون استفاده کنیم و به همین ترتیب میتونیم کد پایتون رو خط به خط اجرا کنیم :)2 )ابزار های انلاینمیتونیم از ابزار های انلاین مثل repl.it یا python Tutor استفاده کنیم که به ما امکان خط به خط اجرا کردن رو میدن ولی اصل ما اجرا در vscodeهست .3)اسکریپت کوچکاستفاده از اسکریپت های کوچک مثل (print) بخواهیم کل کد رو به صورت یکجا اجرا کنیم این روش بما کمک میکند که متوجه بشیم که به چه ترتیبی خط به خط خوانده میشه.مثال:print(&quot;Start of script&quot;) x = 10 print(&quot;x&quot;) print(x)y = 20print(&quot;y&quot;)print(y)z = x + y print(&quot;z &quot;)print(z) print(&quot;End of script&quot;)</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Wed, 03 Jul 2024 10:24:36 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش گام به گام نحوه قرار دادن پروژه در گیت هاب با استفاده از کامندلاین</title>
                <link>https://virgool.io/@saralotfi/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%86%D8%AD%D9%88%D9%87-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%AF%D8%B1-%DA%AF%DB%8C%D8%AA-%D9%87%D8%A7%D8%A8-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%A7%D9%85%D9%86%D8%AF%D9%84%D8%A7%DB%8C%D9%86-nrxqod1fpdas</link>
                <description>خب من بعد از کلی تلاش امروز برای اولین بار اولین پروژه خودمو توی گیت هاب گزاشتمو گفتم اموزشش رو اینجا هم بزارم :)اولین قدم ما نصب گیت از سایت رسمی اون است.و بعد زدن این کد در ترمینال گیت بعد از نصب کردنgit config --global user.name &amp;quotYour Name&amp;quotgit config --global user.email &amp;quotyour.email@example.com&amp;quotدر &quot;&quot; اول اسم خودمون و در بعدی ادرس ایمیل رو وارد میکنیماگه از قبل تنظیم کردیم لازم نیس دوباره بزنیم و یکبار تنظیم اون کافیه.حالا بعد از انجام اینکار وارد گیت هاب و صفحه خودمون میشیمو + بالای صفحه رو میزنیم و New repository رو میزنیم و اسم پروژه مون رو اسم دلخواه میزنیم و پابلیک بودن یا خصوصی بودن پروژه رو هم انتخاب میکنیم وCreate repository رو میزنیم.در مرحله  بعد cmd رو باز میکنیم و به دایرکتوری پروژه مون میریم cd مسیر/پوشه/پروژه/شماو بعد دستورgit initحالا به بعد اگه در دایرکتوری پروژه ما نخواهیم همه فایل ها قرار بگیرد و فقط فایل هایی که میخواهیم قرار بگیرد باید از gitignore استفاده کنیم.حالا چطوری استفاده کنیم و gitignore چیست؟سیستم کنترل نسخه Git از برخی فایل‌ها برای انجام تنظیمات روی مجموعه فایل‌های پروژه پشتیبانی می‌کند. یکی از این فایل‌ها فایل gitignore است که وظیفه‌ی تعیین قوانین برای عدم ذخیره‌سازی فایل‌های پروژه را بر عهده دارد.نحوه استفاده از ان:در پوشه اصلی پروژه، یک فایل متنی به نام .gitignore ایجاد کنید:فایل .gitignore را با یک ویرایشگر متن باز کنید و نام فایل‌ها و پوشه‌هایی که می‌خواهید نادیده گرفته شوند را وارد کنید.با اینکار دیگه فایل هایی که نمیخواهیم نادیده گرفته میشوند.در قدم بعدی باید فایل هامون رو به مخزن ایجاد شده اضافه کنیم با استفاده از دستور زیر در ترمینالgit add . و بعد اولین کامیت خودمون رو ذخیره میکنیمgit commit -m &amp;quotInitial commit with .gitignore&amp;quotآدرس مخزن گیت‌هاب خود را کپی کنید.این ادرس رو باید بعد از ایجاد repository در قسمت HTPS لینک مخزن اینجاست.حالا این رو در گیت هاب روی لینکی که همون ادرس مخزن گیت هاب است بخواهیم پروژه رو بفرستیم از دستور زیر استفاده میکنیمgit remote add origin httpsادرس.gitشاخه (branch) اصلی را نام‌گذاری کنیدgit branch -M mainپروژه خود را به گیت‌هاب ارسال کنید:git push -u origin mainخب پروژه ما روی گیت قرار گرفت موفقیت امیز:)</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Sat, 29 Jun 2024 23:36:22 +0330</pubDate>
            </item>
                    <item>
                <title>5 دستور اصلی در گیت</title>
                <link>https://virgool.io/@saralotfi/5-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-%D8%A7%D8%B5%D9%84%DB%8C-%D8%AF%D8%B1-%DA%AF%DB%8C%D8%AA-mvd4nnxtzymo</link>
                <description>git init:این دستور برای ایجاد یک مخزن جدید در گیت استبا اجرای این دستور یک مخزن جدید و پنهاد با نامgit.ایجاد میشود که تمام اطلاعات مربوط به مخزن گیت را ذخیره میکند.بخواهیم در ادامه مثال قبلی (نوشتن داستان)این هارو هم به صورت ساده بگوییم:می‌خوای یک پروژه جدید رو شروع کنی، پس یک پوشه باز می‌کنی تا همه صفحات کتاب و تغییراتت رو اونجا نگه داریبعد از این دستور ما یک مخزن جدید داریم.git clone:این دستور برا یکپی کردن یک مخزن و گزاشتن در جای دیگر استفاده میشودو کل فایل ها را دانلود میکند برای اجرای این دستور اول این اسم رو میزنیم و بعدش مسیر دایرکتوری که میخواهیم در انجا قرار دهیم مثال:git clone https://github.com/user/repository.gitبعد از اجرای این دستور یک مخزن جدید به نامrepository بوجود می اید که کپی کامل مخزن در انجا قرار میگیرد.دوستت یک نسخه از کتاب خودش رو در کتابخانه گذاشته و تو می‌خوای یک کپی از اون کتاب رو برداری تا بتونی روش کار کنی.git add:این دستور فایل‌ها یا تغییرات جدید را به «منطقه استیجینگ» (staging area) اضافه می‌کند. منطقه استیجینگ محلی است که در آن تغییرات قبل از اینکه به مخزن افزوده شوند، نگهداری می‌شوند.یک فصل جدید به کتابت اضافه کردی و می‌خوای به دیگران بگی که این تغییر جدید رو ذخیره کنن.git commit:این دستور تغییرات استیج شده را به مخزن محلی اضافه می‌کند این منطقه به شما امکان می‌دهد تا تغییرات مختلفی را انتخاب و آماده کنید تا در یک commit واحد ذخیره شوند. هر commit یک نقطه ذخیره‌سازی (snapshot) از مخزن شماست.مثالgit commit -m &quot;توضیح تغییرات&quot;داخل دابل کوتیشین یک پیام توضیحی راجب تغیرات است و باید مختصر و مفید باشدتمام تغییراتی که تو کتابت دادی رو جمع بندی می‌کنی و در یک نسخه خاص ذخیره می‌کنی تا بعداً بتونی به راحتی بهشون دسترسی داشته باشی.git push:این دستور تغییرات محلی را به مخزن راه دور (remote repository) می‌فرستد. معمولاً برای اشتراک‌گذاری تغییرات با دیگران از این دستور استفاده می‌شود.مثال:git push origin mainدر این مثال، origin نام مخزن راه دور و main نام شاخه‌ای است که تغییرات به آن فرستاده می‌شود.بعد از اینکه تغییرات جدیدت رو ذخیره کردی، اونا رو در کتابخانه عمومی می‌ذاری تا بقیه هم بتونن ببینن و روشون کار کنن.به طور خلاصه:git init: ایجاد یک مخزن جدید.git clone: کپی کردن یک مخزن موجود.git add: افزودن تغییرات به منطقه استیجینگ.git commit: ثبت تغییرات استیج شده به مخزن محلی.git push: ارسال تغییرات به مخزن راه دور.</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Wed, 26 Jun 2024 00:11:53 +0330</pubDate>
            </item>
                    <item>
                <title>گیت چیست؟</title>
                <link>https://virgool.io/@saralotfi/%DA%AF%DB%8C%D8%AA-%DA%86%DB%8C%D8%B3%D8%AA-nt1ulw88mzie</link>
                <description>گیت مخفف کلمه GNU Interactive Tools است.&quot;تصور کن که داری یک پروژه‌ای رو انجام می‌دی، مثلا یک کتاب می‌نویسی. گیت به تو کمک می‌کنه تا بتونی تغییرات مختلفی که در نوشته‌هات انجام می‌دی رو ثبت و ذخیره کنی. اینجوری اگه یه روزی اشتباه کردی یا خواستی به نسخه قبلی نوشته‌هات برگردی، می‌تونی به راحتی این کار رو انجام بدی. همچنین اگه با چند نفر دیگه روی این کتاب کار کنی، می‌تونی ببینی که هرکسی چه تغییراتی داده و همه تغییرات رو با هم ترکیب کنی.در واقع، گیت یک ابزار است که به ما کمک می‌کند تا همیشه بتوانیم نسخه‌های مختلف از کارمان را داشته باشیم و هر وقت نیاز بود به نسخه‌ای قبلی برگردیم یا تغییرات جدید را اعمال کنیم.یکی از مهم ترین ابزار ها برای توسعه نرم افزاری گیت است.این پلتفرم پیشرفته اغلب برای پیشگیری تغیرات در فایل ها مورد استفاده قرار میگیرد, با استفاده از گیت قادیم ورژن های مختلف از یک پروهژه را چه به صورت محلی و چه به صورت سرور دوردست ذخیره بکنیم پس امکان نظارت دقیقا بر روی کد ها و همچنین تطبیق و ترکیب کد ها را فراهم میکند.گیت پایه بسیاری از سرویس ها مانند githubو gitlabاست  .سرور در اینجا مثل یک کتابخانه عمومی است. هرکسی می‌تواند نسخه‌ای از کتاب خودش را در این کتابخانه قرار دهد یا نسخه‌ای از کتاب‌های دیگران را بگیرد. اینجوری اگر چند نفر بخواهند روی یک کتاب کار کنند، می‌توانند به راحتی نسخه‌های جدید را در کتابخانه قرار دهند و بقیه هم به آن دسترسی داشته باشندگیت یک سیستم کنترل نسخه توزیع‌شده متن‌باز است:سیستم کنترل نسخه:یعنی امکان دستسرسی به تغیراتی قبلی را میدهد و حتی میتوانیم ان هارا باهم مقایسه کنیمتوزیع شده:یعنی ما افلاین هم میتوانیم با ان کار کنیم و زمانی که انلاین شدیم ان تغیرات اعمال شوندمتن باز:یعنی کد در اختیار عموم قرار میگیرد و هرکسی میتواند ان را تغیرو بهبود دهد.این سیستم از دستورnot Diffrenceوsnapshots یعنی برخلاف بقیه سیستم ها که به صورت لیستی از تغیرات مبنی بر فایل دستورات خود را ذخیره میکنند گیت  دستورات خود را از تصویر های لحظه ای از کل مخزن در زمان های مختلف  ذخیره میکندگیت مانند یک سیستم تولید محتوا عمل میکند و به تیم های توسعه اجازه میدهد تا به صورت مشترک روی یک فایل کار انجام دهندو اجازه میدهد انها کار نهایی خود را به صورت مشترک ببینند.علاوه بر این ها گیت از امنیت بسیار بالایی برخوردار هست و همین باعث میشود تا ما بدانیم کد هایمان حفاظت شده هستندریپازیتوری در این مثال مثل یک پوشه است که همه صفحات کتاب، تغییرات مختلف، و یادداشت‌هایت را در آن نگه می‌داری. هر وقت که چیزی در کتاب تغییر می‌دهی یا صفحه جدیدی اضافه می‌کنی، این تغییرات در همان پوشه ذخیره می‌شوند. اگر با دیگران روی این کتاب کار می‌کنی، آنها هم می‌توانند نسخه‌ای از این پوشه داشته باشند و تغییرات خودشان را به آن اضافه کننددر گیت دو نوع ریپازیتوری وجود دارد:ریپازیتوری لوکالریپازیتوری ریموتلوکال زمانی است که فایل را درون خود قرار میدهد و به راحتی در دسترس بدون واسط قرار میدهدو ریپازیتوری ریموت زمانی است که داخل سرور قرار دارد.  یا شاخه چیست؟Branch برنچ یک شاخه مستقل از تاریخچه تغیرات پروژه است و به ما اجازه میدهد به طور مستقل روی شاخه های دیگر کد به طور همزمان کار کنیم بدون اینکه تاثیری روی شاخه دیگه بگذارد.فرض کن داری کتابی می‌نویسی و می‌خوای یک فصل جدید بهش اضافه کنی یا یک بخش از کتاب رو به طور کلی بازنویسی کنی. اما نمی‌خوای که این تغییرات بلافاصله روی نسخه اصلی کتابت تأثیر بذاره. پس یک کپی از کتاب می‌گیری و تغییراتت رو روی این کپی انجام می‌دی. این کپی جدید در واقع همون برنچ یا شاخه است.زمانی که یک ریپازیروتی جدید در گیت میسازیم به طور خودکار یک شاخه جدید به نام masterایجاد میشود که به ان شاخه اصلی میگویند و هر کاری که انجام دهیم روی این شاخه انجام میشود برنچ‌های feature: برای توسعه ویژگی‌های جدید از این برنچ‌ها استفاده می‌شود.برنچ‌های hotfix: برای رفع باگ‌ها و مشکلات فوری از این برنچ‌ها استفاده می‌شود.برنچ‌ها در گیت به شما این امکان را می‌دهند که توسعه‌ی نرم‌افزار را به صورت مدیریت شده و موازی پیش ببرید و از تداخل تغییرات و ایجاد مشکلات ناخواسته جلوگیری کنید.5 دستور اصلی گیتgit initgit clonegit addgit commitgit pushدر  پست بعدی این 5 دستور را توضیح خواهم داد</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Tue, 25 Jun 2024 17:44:16 +0330</pubDate>
            </item>
                    <item>
                <title>وراثت در کلاس ها چیست</title>
                <link>https://virgool.io/@saralotfi/%D9%88%D8%B1%D8%A7%D8%AB%D8%AA-%D8%AF%D8%B1-%DA%A9%D9%84%D8%A7%D8%B3-%D9%87%D8%A7-%DA%86%DB%8C%D8%B3%D8%AA-baxylj4dpiln</link>
                <description>ارث بردن از کلاس ها مانند ارث بردن فرزند از والدین خود است. استفاده از کد های کلاس قبلی در کلاس جدید بدون دوباره نوشتن انها ویعنی امکان خلق کردن یک کلاس جدید با به ارث بردن کارایی های کلاس قدیمی است.و مانند فرزندی که از پدر خود به ارث میبرد نوه های او هم از اون به ارث میبرد مثلا: پدر بزرگ من موهایش زودتر از بقیه سفید میشود پدر من هم همینطور من نیز همینطور به لین مثال یک به ارث بری میگویند.این کار در نوشتن کدمان به این علت بهتر است که کدمان را به دنیای واقعی نزدیک تر میکند. class piza:                   class tomato(piza):کلاس دومی از اولی ارث بری میکند.وراثت چند نوع مختلف دارد«وراثت یگانه» «وراثت چندگانه» «وراثت چند سطحی» «وراثت سلسله مراتبی» «وراثت ترکیبی»                                                                                                                     وراثت یگانهبه زیر کلاس هاس یک کلاس میگند که از کلاس اول به ارث میبرد و فایده ان جلوگیری از تکرار دوباره کد ها است و به صورت دیگر این کلاس ها ارتباط مستقیمی با زیر کلاس های خود دارند و قابلیت اولیه والد خود را حفظ کنند و خودرا بتوانند انعطاف بدهند .class Parent:     def func(self):          print(&quot;this is function&quot;)class Child(Parent):     def func1(self):          print(&quot; this is function1 &quot;)n= Child()n.func1()n.func2()وراثت چندگانهدر همچین وراثت هایی دو کلاس والد یا بیشتر داریم که فرزند از هر چند تا والد ارث میبرد مانند:class Parent:   def func1(self):        print(&quot;this is function 1&quot;)class Parent2:   def func2(self):        print(&quot;this is function 2&quot;)class Child(Parent , Parent2):    def func3(self):        print(&quot;this is function 3&quot;) n = Child()n.func1()n.func2()n.func3()وراثت چند سطحیاین نوع وراثت مانند ارث بری فرزند از پدر و پدربزرگ خود است.یک کلاس تمام خصوصیات خود را به کلاس بعدی و کلاس بعدی خصوصیات خود و ارث خود را به کلاس بعد میدهد.class Parent:      def func1(self):          print(&quot;this is function 1&quot;)class Child(Parent):      def func2(self):          print(&quot;this is function 2&quot;)class Child2(Child):      def func3(&quot;this is function 3&quot;)n= Child2()n.func1()n.func2()n.func3()وراثت سلسه مراتبییک کلاس میتواند به چندین کلاس دیگر ارث بدهد و کلاس ها بهم مربوط نشوند و مستقیما از کلاس والد به ارث میبرند.class Parent:      def func1(self):          print(&quot;this is function 1&quot;)class Child(Parent):      def func2(self):          print(&quot;this is function 2&quot;)class Child2(Parent):      def func3(self):          print(&quot;this is function 3&quot;) n = Child()m = Child2()n.func1()n.func2()m.func3()وراثت ترکیبیوراثت ترکیبی، نوع خاصی از وراثت است که به ما اجازه می‌دهد که کلاس‌ها را با ارث‌بری از چندین کلاس والد ایجاد کند. برعکس وراثت چندگانه، حداقل یکی از والدین در وراثت ترکیبی از نوع کلاس پایه نیست بلکه خودش مستقیم از یک کلاس دیگر ارث برده است وراثت ترکیبی به ما این امکان را می‌دهد که ویژگی‌های مختلف را از طریق چندین کلاس والد در هم ادغام کنند تا بتوانند کلاس‌هایی با سفارشی‌سازی بالا، طراحی کنند.class Parent:     def func1(self):         print(&quot;this is function one&quot;) class Child(Parent):     def func2(self):         print(&quot;this is function 2&quot;) class Child1(Parent):     def func3(self):         print(&quot; this is function 3&quot;): class Child3(Parent , Child1):     def func4(self):         print(&quot; this is function 4&quot;) n = Child3()n.func1()استفاده از ارث بری در پایتون به صورت مقدماتی کامل شد.</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Thu, 23 May 2024 01:21:06 +0330</pubDate>
            </item>
                    <item>
                <title>کلاس ها چیست؟</title>
                <link>https://virgool.io/@saralotfi/%DA%A9%D9%84%D8%A7%D8%B3-%D9%87%D8%A7-%DA%86%DB%8C%D8%B3%D8%AA-nghgcv7nknbe</link>
                <description>برای فهمیدن مفهوم کلاس ها اول باید مفهوم شئ هارا درک کنیماشیائ چه هستند؟در python همه چیز از اعداد تا متغیر ها و ... همه هرکدام شئ محسوب میشوند به عنوان مثال، اگر در محیط برنامه‌نویسی شما یک برنامه بنویسید که اشیاء &quot;ماشین&quot; را مدل کند، هر ماشین می‌تواند ویژگی‌هایی مانند سرعت، رنگ، مدل، وضعیت فعلی (روشن یا خاموش) و عملکردهایی مانند روشن کردن، خاموش کردن و تغییر سرعت را داشته باشد. این ویژگی‌ها و عملکردها می‌توانند به عنوان خصوصیات و روش‌هایی که هر ماشین در برنامه شما دارد، تعریف شوند.به طور کلی، اشیاء در برنامه‌نویسی به شما کمک می‌کنند تا مدل‌های واقعی را با استفاده از ویژگی‌ها و رفتارهای آن‌ها ایجاد کنید و با آن‌ها تعامل داشته باشید.یک شئ شامل داده (متغیر ها که خصوصیات نامیده میشوند),و کد (توابع یا همان متد ها)برای مثال اشیا مانند  ساندویچ ها انواع مختلفی دارند ,بندری,همبرگر و ... و همگی ویژگی های مشترکی از جمله نان و ... دارند.کلاس چیست(موضوع اصلی)   شکل اصلی نوشتن یک کلاس ابتدا کلمه کلیدی classرا نوشته و بعد اسم کلاس خود را میگذاریم و بعد با : نوشتن کلاس را شروع میکنیممثل بقیه دستورات در پایتون فرورفتگی خط بعدی بعد از : مهم است (ترجیحا 3 space)در بدنه کلاس هم نام متغیر را مانند تغییر متغیر ها در پایتون مینویسیمحالا اگر در یکی از متد ها خواستیم متغیر اضافه کنیم از selfکمک میگیریممتد چیست؟مانند همان تابع در پایتون است و از def استفاده میکنیم و در صورت نیاز پارامتر ورودی برای ان مشخص میکنیمبرای اینکه در متد ها به ویژگی شئ  دسترسی داشته باشیم ازselfاستفاده میکنیم ومانند همان شئ رفتار میکند و ما در متد ها میتوانیم با استفاده از self متغیر جدید تولید کنیم  وقتی بخواهیم یک متد در پایتون ایجاد کنیم باید از یک سازنده استفاده کنیم که خودش یک متد است اگر برای یک کلاس متد سازنده تعریف نکنیم مشکلی ندارد اما برای ساخت اولیه کلاس استفاده کردن از متد سازنده اولیه__init__بهتر است در این متد برای استفاده از متغیر هایی است که میخواهیم بعدا در بدنه کلاس  اضافه کنیمبرای فراخواندن کلاس در تابع اصلییک متغیر مینویسیم و برابر با نام کلاس میگزاریم به همین سادگی یک کلاس را فراخاندیمimport mathclass Calculator:                                                یک کلاس را ساختیم    def __init__(self):        pass                                                            یک تابع خالی نوشتیم     def add(self, a, b):        return a + b     def subtract(self, a, b):        return a - b     def multiply(self, a, b):        return a * b     def divide(self, a, b):        if b != 0:            return a / b        else:            return &quot;Error: Division by zero!&quot;     def power(self, a, b):        return a ** b     def modulus(self, a, b):        return a % b     def cosine(self, a):        return math.cos(a)     def sine(self, a):        return math.sin(a)     def radical(self, a):        return math.sqrt(a)calc = Calculator()                                        کلاس را فراخوندیمwhile True:    a = float(input(&quot;Enter the first number: &quot;))    operation = input(&quot;Enter the operation (+, -, *, /, **, %, cos, sin, radical): &quot;)    if operation not in [&#x27;+&#x27;, &#x27;-&#x27;, &#x27;*&#x27;, &#x27;/&#x27;, &#x27;**&#x27;, &#x27;%&#x27;, &#x27;cos&#x27;, &#x27;sin&#x27;, &#x27;radical&#x27;]:        print(&quot;Invalid operation!&quot;)        continue    if operation in [&#x27;cos&#x27;, &#x27;sin&#x27;, &#x27;radical&#x27;]:        result = getattr(calc, operation)(a)    else:        b = float(input(&quot;Enter the second number: &quot;))        result = getattr(calc, operation)(a, b)    print(&quot;Result:&quot;, result)    choice = input(&quot;Do you want to continue? (yes/no): &quot;)    if choice != &quot;yes&quot;:        break</description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Wed, 15 May 2024 20:33:33 +0330</pubDate>
            </item>
                    <item>
                <title>تابع در برنامه نویسی چیست؟</title>
                <link>https://virgool.io/@saralotfi/%D8%AA%D8%A7%D8%A8%D8%B9-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%DA%86%DB%8C%D8%B3%D8%AA-irohtmx9252a</link>
                <description>توابع را برای خلاصه کردن و کوتاه کردن تابع اصلی و جلوگیری از گیج شدن کسی که برنامه رو میخواند و برای انجام ندادن اضافه کاری چون قسمت هایی از کد ممکن است چندبار تکرار شود.استفاده از تابع: برای نوشت یک تابع  با استفاده از def و بعد از def اسم تابع رو میزاریم (هر اسمی که خودمون دوسداریم به تابع بدیم)و سپس روبروی ان یک پرانتز باز و بسته() قرار میدهیم و میتوانیم ارگومان هایمان را داخل پرانتز قرار دهیم و دو نقطه (:) بعد پرانتر میزاریم آرگومان های اجباری(positional arguments) به آرگومان هایی گفته میشود که در زمان فراخوانی تابع، به همان ترتیبی که مشخص شده اند باید ارسال شوند. در این حالت، تعداد آرگومان هایی که به فراخوانی تابع ارسال شده اند باید با آرگومان های مشخص شده در تابع برابر باشند.  و در خط بعد به تعدای که همیشه از spaceاستفاده میکنیم و بعد دستورات خود را وارد میکنیم.در دستورات بعد هر دستور از return بجای print استفاده میکنیم چون اگه از printاستفاده کنیم بدون صدا کردن تابع اون رو چاپ میکند وreturn دستور تابع را متوقف میکند .وقتی بدنه یا دستور خالی است از passاستفاده میکنیم برای اینکه ایراد نگیره از ما.زمانی که تعداد ارگومان ها را نداریم اینگونه استفاده میکنیم:def myfunc(*score):    print(str(score[1])myfunc(14,15,16)برای استفاده کردن تابع در تابع اصلی ایم تابع را صدا میزنیمfunc()برای استفاده از توابع  کتابخانه ها از import استفاده میکنیم. مثال توابع با استفاده از ماشین حساب:import mathdef mycalculater(a, b, c):    if b==&quot;+&quot;:        return a+c    elif b==&quot;-&quot;:        return a-c    elif b==&quot;*&quot;:        return a*c    elif b==&quot;/&quot;:        return a/c    elif b==&quot;**&quot;:        return a**c    elif b==&quot;%&quot;:        return a%c    elif b==&quot;cos&quot;:         return math.cos(a)    elif b==&quot;sin&quot;:       return math.sin(a)    elif b==&quot;radical&quot;:        return a**0.5    else:        return &quot;this is false&quot;     while True:   a=float(input(&quot;adad:&quot;))   b=str(input(&quot;alamat:&quot;))   c=int(input(&quot;adad2:&quot;))   javab=(mycalculater(a,b,c))   print(&quot;javab=&quot;,javab)   choice = input(&quot;Do you want to continue? (yes/no): &quot;)   if choice != &quot;yes&quot;:        breakدر اینجا ابتدا تابع ریاضی  رو صدا کردیم که بتوانیم در sin و cosها از ان استفاده کنیم . به همین سادگی ما با استفاده از توابع یک ماشین حساب ساختیم. </description>
                <category>saralotfi</category>
                <author>saralotfi</author>
                <pubDate>Sun, 05 May 2024 12:17:28 +0330</pubDate>
            </item>
            </channel>
</rss>