دليل بايثون للمبتدئين: تعلّم أساسيات Python من الصفر بأسلوب عملي

دقائق القراءة: 11

مدخل عملي إلى لغة Python

أصبحت لغة Python واحدة من أكثر لغات البرمجة انتشاراً في العالم، ليس فقط لسهولتها، بل لقدرتها الكبيرة على العمل في مجالات متنوعة مثل تطوير الويب، تحليل البيانات، أتمتة المهام، الذكاء الاصطناعي، التعليم، وحتى برمجة الأجهزة المدمجة. لهذا السبب يختارها كثير من المبتدئين كلغتهم الأولى، كما يعتمد عليها المحترفون في مشاريع إنتاجية حقيقية.

الفكرة الأساسية في هذا الدليل هي تعلّم الجزء الأكثر استخداماً من اللغة خلال وقت قصير، مع التركيز على المفاهيم الجوهرية التي يحتاجها المبتدئ فعلاً. لن نحاول تغطية كل شيء، بل سنبني أساساً تقنياً متيناً يساعدك على قراءة الشيفرات، كتابة برامجك الأولى، وفهم طريقة تفكير Python.

غلاف دليل بايثون للمبتدئين لتعلّم لغة Python بأسلوب مبسط وعملي

تتميّز Python بصياغة واضحة وقريبة من اللغة البشرية مقارنةً بلغات أخرى أكثر تعقيداً. وهي لغة مفسّرة interpreted وديناميكية الأنواع dynamically typed، ما يعني أنك لا تحتاج إلى تعريف نوع المتغير مسبقاً في أغلب الحالات. هذا يسرّع التطوير، لكنه يتطلب انتباهاً أكبر أثناء التشغيل لاكتشاف الأخطاء المنطقية أو النوعية.

كما تدعم Python عدة أنماط برمجية، منها البرمجة الإجرائية، والبرمجة كائنية التوجه، والبرمجة الوظيفية. هذه المرونة تجعلها مناسبة للمشاريع الصغيرة والتطبيقات الكبيرة على حد سواء.

رسم بياني يوضح نمو شعبية لغة Python في محركات البحث والاستخدام التقني

لماذا تعد Python خياراً مثالياً للمبتدئين؟

  • صياغتها بسيطة وسهلة القراءة.
  • مجتمعها كبير ويضم كماً هائلاً من الشروحات والمكتبات.
  • تصلح للتعلم الأكاديمي والتطبيق المهني معاً.
  • يمكن استخدامها في مشاريع متنوعة دون الحاجة لتعلّم لغة جديدة لكل مجال.
  • توفر مكتبة قياسية ضخمة تساعدك على بناء حلول سريعة وعملية.

كيفية تثبيت Python

لبدء استخدام اللغة، توجّه إلى الموقع الرسمي python.org ثم افتح قسم Downloads واختر نظام التشغيل المناسب لك، سواء كان Windows أو macOS أو Linux. بعد ذلك نزّل الحزمة الرسمية واتبع تعليمات التثبيت.

صفحة تنزيل Python من الموقع الرسمي لاختيار نظام التشغيل وتثبيت اللغة

من المهم التأكد من أن التثبيت أضاف الأوامر إلى المسار PATH حتى تتمكن من تشغيل اللغة من الطرفية بسهولة.

طرق تشغيل برامج Python

1) التشغيل التفاعلي عبر REPL

إذا فتحت الطرفية وكتبت python أو في بعض الأنظمة python3، ستدخل إلى بيئة تفاعلية تُعرف باسم REPL، وهي اختصار لـ Read-Evaluate-Print Loop. هنا يمكنك كتابة أي سطر برمجي وتنفيذه مباشرة.

واجهة Python التفاعلية REPL داخل الطرفية لتجربة أوامر بايثون مباشرة

مثال سريع:

name = "Flavio
tprint(name)

ولإنهاء الجلسة التفاعلية استخدم quit().

تجربة تعريف متغير وطباعة قيمته داخل Python REPL

2) استخدام تطبيق IDLE

يُثبَّت تطبيق IDLE عادةً مع Python تلقائياً، ويوفر واجهة رسومية بسيطة مناسبة للمبتدئين.

واجهة IDLE المرفقة مع Python لتشغيل الشيفرة وكتابتها عبر نافذة رسومية

3) كتابة برنامج داخل ملف

الطريقة الأكثر شيوعاً هي حفظ الشيفرة داخل ملف بامتداد .py ثم تشغيله عبر الطرفية.

ملف program.py يحتوي على شيفرة Python جاهزة للتشغيل

python program.py

تشغيل ملف Python من الطرفية باستخدام الأمر python program.py

هذه الطريقة تنفذ البرنامج كاملاً دفعة واحدة، وهي الأسلوب المعتاد في تشغيل البرامج الفعلية.

4) تشغيل الملف كسكربت في Linux وmacOS

يمكنك إضافة سطر البداية التالي أعلى الملف:

#!/usr/bin/python3

ثم منح الملف صلاحية التنفيذ:

chmod u+x program.py

بعد ذلك يمكن تشغيله مباشرة:

./program.py

تشغيل ملف Python كسكربت تنفيذي في لينكس أو macOS بعد تعديل الصلاحيات

5) استخدام IPython

إذا أردت تجربة تفاعلية أكثر تطوراً، يمكنك تثبيت IPython الذي يضيف تلويناً للشيفرة، إكمالاً تلقائياً، ومزايا عملية كثيرة.

pip install ipython
ipython

واجهة IPython التفاعلية المتقدمة لتجربة شيفرات Python بسهولة

6) استخدام VS Code

يعد VS Code من أفضل المحررات للمبتدئين والمحترفين، خاصة مع إضافة Python الرسمية من Microsoft.

إضافة Python الرسمية في VS Code لتشغيل الشيفرات واكتشاف الأخطاء

بعد تثبيتها ستحصل على:

  • الإكمال التلقائي للشيفرة.
  • فحص الأخطاء أثناء الكتابة.
  • تنسيق آلي للشيفرة.
  • تكامل مع أدوات مثل pylint.

تشغيل REPL داخل VS Code باستخدام أوامر Python المدمجةتشغيل ملف Python الحالي داخل طرفية VS Codeتشغيل ملف Python في نافذة تفاعلية داخل VS Codeلوحة أوامر VS Code مع أوامر Python المتاحة للمطور

7) البرمجة عبر المتصفح باستخدام repl.it

إذا كنت لا ترغب في التثبيت المحلي، يمكنك استخدام منصة repl.it لكتابة البرامج وتشغيلها مباشرة من المتصفح.

منصة repl.it لتشغيل وكتابة تطبيقات Python عبر المتصفحاختيار بيئة Python عند إنشاء مشروع جديد في repl.itمحرر Python داخل repl.it مع ملف main.py جاهز للبرمجةزر تشغيل برنامج Python داخل منصة repl.it وعرض النتيجة

الفرق بين Python 2 وPython 3

منذ سنوات طويلة كان هناك انقسام بين Python 2 وPython 3. لكن عملياً، يجب على أي مبتدئ اليوم أن يتعلم Python 3 فقط. فقد انتهى الدعم الرسمي لـ Python 2، بينما تستمر Python 3 في التطور والتحسين.

قد تجد مشاريع قديمة ما زالت تعمل بالإصدار القديم، لكن كتابة أي شيفرة جديدة ينبغي أن تتم باستخدام Python 3.

أساسيات لغة Python

المتغيرات

يمكن إنشاء متغير بإسناد قيمة إلى اسم باستخدام عامل الإسناد =.

name = "Roger"
age = 8

أسماء المتغيرات يمكن أن تحتوي على أحرف وأرقام والشرطة السفلية _، لكن لا يجوز أن تبدأ برقم.

name1 = "ok"
my_name = "ok"
_name = "ok"

أمثلة غير صحيحة:

123name = "no"
test! = "no"

التعابير والتعليمات

التعبير expression هو أي جزء من الشيفرة يعيد قيمة، مثل:

1 + 1
"Roger"

أما التعليمة statement فهي أمر ينفذ إجراءً معيناً:

name = "Roger"
print(name)

التعليقات

كل ما يأتي بعد الرمز # يعد تعليقاً ولا ينفذه المفسّر:

# this is a comment
name = "Roger"  # inline comment

المسافات البادئة

المسافات البادئة indentation في Python جزء أساسي من الصياغة، وليست مجرد تنسيق بصري. لذلك لا يمكن إضافة فراغات عشوائية أمام الأسطر.

name = "Flavio"
print(name)

تستخدم المسافات البادئة لتحديد الكتل البرمجية داخل if وfor وwhile والدوال والأصناف.

أنواع البيانات في Python

من أهم الأنواع المضمنة:

  • str للنصوص.
  • int للأعداد الصحيحة.
  • float للأعداد العشرية.
  • bool للقيم المنطقية.
  • list للقوائم.
  • tuple للصفوف الثابتة.
  • dict للقواميس.
  • set للمجموعات.

يمكن معرفة نوع المتغير باستخدام type() أو التحقق باستخدام isinstance().

name = "Roger"
print(type(name) == str)
print(isinstance(name, str))

كما يمكن إجراء تحويل نوعي casting باستخدام البُناة مثل int() وstr() وfloat().

age = int("20")
fraction = float("0.5")
text = str(8)

المعاملات في Python

معامل الإسناد

age = 8
another = age

كما يتوفر المعامل := المعروف باسم walrus operator في الإصدارات الحديثة.

المعاملات الحسابية

1 + 1
2 - 1
2 * 2
4 / 2
4 % 3
4 ** 2
4 // 2

كما توجد معاملات مركبة مثل += و-= و*=.

معاملات المقارنة

a = 1
b = 2
print(a == b)
print(a != b)
print(a <= b)

المعاملات المنطقية

أشهرها and وor وnot.

condition1 = True
condition2 = False
print(not condition1)
print(condition1 and condition2)
print(condition1 or condition2)

معاملات البتات

توجد معاملات مثل & و| و^ و~ و<< و>>، لكنها تستخدم في حالات متخصصة.

المعاملان is وin

يستخدم is لفحص الهوية بين الكائنات، بينما يستخدم in لاختبار وجود عنصر داخل تسلسل أو مجموعة.

المعامل الثلاثي الشرطي

يوفر أسلوباً مختصراً لكتابة شرط يعيد قيمة:

def is_adult(age):
    return True if age > 18 else False

الصيغة العامة:

<result_if_true> if <condition> else <result_if_false>

السلاسل النصية في Python

يمكن تعريف النصوص باستخدام علامات اقتباس مفردة أو مزدوجة:

name = "Roger"
name2 = 'Roger'

الدمج يتم عبر المعامل +:

phrase = "Roger" + " is a good dog"

ومن أشهر دوال النصوص:

  • lower()
  • upper()
  • title()
  • replace()
  • split()
  • strip()
  • join()
  • find()
  • startswith()
  • endswith()

طول النص يحسب باستخدام len():

name = "Roger"
print(len(name))

ويمكن التحقق من وجود جزء نصي باستخدام in:

print("ger" in name)

كما تدعم Python الهروب escaping بإضافة الرمز \ قبل بعض المحارف الخاصة:

name = "Ro\"ger"

والوصول للأحرف يتم عبر الفهارس أو الشرائح slicing:

name = "Roger"
print(name[0])
print(name[-1])
print(name[0:2])

القيم المنطقية

نوع bool يضم القيمتين True وFalse فقط. وهو أساس عمل التفرعات الشرطية والحلقات.

done = True
if done:
    print("ok")

كما أن الدالتين any() وall() مفيدتان عند التعامل مع عدة شروط.

print(any([True, False]))
print(all([True, False]))

الأرقام في Python

الأنواع العددية الأساسية هي int وfloat وcomplex.

age = 8
fraction = 0.1
complex_number = 2 + 3j

يمكن استخدام دوال مثل abs() وround():

print(abs(-4))
print(round(0.12))
print(round(0.12, 1))

وتوفّر المكتبات القياسية مثل math وcmath وdecimal وfractions دعماً إضافياً للعمليات الرياضية.

الثوابت وEnum

لا تفرض Python الثوابت بشكل صارم، لكن من الشائع كتابة الأسماء الثابتة بأحرف كبيرة:

WIDTH = 1024

ولتعريف قيم ثابتة مقروءة يمكن استخدام Enum:

from enum import Enum

class State(Enum):
    INACTIVE = 0
    ACTIVE = 1

إدخال المستخدم

لعرض النصوص نستخدم print()، ولقراءة المدخلات نستخدم input().

print("What is your age?")
age = input()
print("Your age is " + age)

الجمل الشرطية في Python

تستخدم الجملة if لاتخاذ قرارات حسب نتيجة شرط ما.

condition = True
if condition:
    print("The condition was true")
else:
    print("The condition was false")

ويمكن إضافة تفرعات متعددة باستخدام elif.

name = "Roger"
if name == "Roger":
    print("Hello Roger")
elif name == "Syd":
    print("Hello Syd")
else:
    print("Unknown")

القوائم list

القائمة بنية مرنة تسمح بتخزين عدة قيم داخل متغير واحد.

items = ["Roger", 1, "Syd", True]

يمكن الوصول للعناصر بالفهرس، والبحث باستخدام in، وإضافة عناصر بواسطة append() أو extend().

items.append("Test")
items.extend(["A", "B"])
print(items[0])

وللترتيب استخدم sort() أو الدالة sorted().

items = ["b", "A", "c"]
print(sorted(items, key=str.lower))

الصفوف الثابتة tuple

تعمل tuple بطريقة شبيهة بالقوائم لكنها غير قابلة للتعديل بعد إنشائها.

names = ("Roger", "Syd")
print(names[0])
print(len(names))

القواميس dict

القاموس يخزن البيانات على هيئة أزواج مفتاح/قيمة.

dog = {
    "name": "Roger",
    "age": 8
}

الوصول إلى القيم يتم عبر المفاتيح:

print(dog["name"])
print(dog.get("age"))

ومن الدوال المهمة:

  • get()
  • keys()
  • values()
  • items()
  • pop()
  • copy()

المجموعات set

المجموعة تخزن قيماً غير مرتبة وغير مكررة. وهي مفيدة في عمليات التقاطع والاتحاد والفرق.

set1 = {"Roger", "Syd"}
set2 = {"Roger"}
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)

الدوال في Python

الدالة تجمع مجموعة تعليمات قابلة لإعادة الاستخدام.

def hello():
    print("Hello!")

hello()

كما يمكن تمرير معاملات:

def hello(name="my friend"):
    print("Hello " + name + "!")

ويمكن للدالة إرجاع قيمة باستخدام return:

def add(a, b):
    return a + b

الكائنات في Python

كل شيء تقريباً في Python هو كائن object. لكل كائن خصائص ودوال خاصة به.

age = 8
print(age.real)
print(age.bit_length())

ويمكن فحص هوية الكائن في الذاكرة عبر id().

items = [1, 2]
print(id(items))
items.append(3)
print(id(items))

الحلقات التكرارية

حلقة while

count = 0
while count < 3:
    print(count)
    count += 1

حلقة for

items = [1, 2, 3, 4]
for item in items:
    print(item)

وللتكرار بعدد مرات محدد:

for item in range(4):
    print(item)

ومع enumerate() يمكن الحصول على الفهرس والعنصر معاً:

for index, item in enumerate(items):
    print(index, item)

break وcontinue

for item in [1, 2, 3, 4]:
    if item == 2:
        continue
    print(item)
for item in [1, 2, 3, 4]:
    if item == 2:
        break
    print(item)

الأصناف class والبرمجة كائنية التوجه

يمكنك تعريف أصناف مخصصة لإنشاء كائنات تمثل مفاهيم منطقية داخل البرنامج.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print("WOF!")

roger = Dog("Roger", 8)
print(roger.name)
roger.bark()

كما تدعم Python الوراثة inheritance:

class Animal:
    def walk(self):
        print("Walking...")

class Dog(Animal):
    def bark(self):
        print("WOF!")

الوحدات modules

كل ملف Python يعد وحدة قابلة للاستيراد. هذا يساعد على تنظيم الشيفرة وإعادة استخدامها.

# dog.py

def bark():
    print("WOF!")
import dog
dog.bark()

أو:

from dog import bark
bark()

المكتبة القياسية في Python

توفر اللغة مكتبة قياسية كبيرة تضم وحدات جاهزة لأعمال كثيرة. من أبرزها:

  • math
  • re
  • json
  • datetime
  • sqlite3
  • os
  • random
  • statistics
  • urllib
  • http

مثال على استخدام math:

import math
print(math.sqrt(4))

دليل التنسيق PEP 8

اتباع دليل PEP 8 يجعل شيفرتك أكثر احترافية وقابلية للقراءة. من أهم التوصيات:

  • استخدم 4 مسافات لكل مستوى إزاحة.
  • لا تستخدم tabs عند الإمكان.
  • اكتب أسماء الدوال والمتغيرات بصيغة snake_case.
  • اكتب أسماء الأصناف بصيغة CamelCase.
  • اجعل أسماء الثوابت بحروف كبيرة.
  • استخدم أسماء واضحة ومعبرة.
  • أضف فراغات حول المعاملات.
  • اكتب تعليقات مفيدة لا بديهية.

تصحيح الأخطاء debugging

من أفضل المهارات التي يجب أن يكتسبها المبتدئ هي تتبع الأخطاء. في Python يمكنك استخدام breakpoint() للدخول إلى المصحح pdb.

breakpoint()

بعد التوقف يمكنك استخدام أوامر مثل n وs وc وq للتنقل في التنفيذ.

نطاق المتغيرات scope

إذا عرّفت متغيراً خارج الدوال فهو متغير عام global، وإذا عرّفته داخل دالة فهو محلي local.

age = 8

def test():
    print(age)

test()
def test():
    age = 8
    print(age)

تمرير الوسائط من سطر الأوامر

يمكن قراءة الوسائط من خلال sys.argv أو عبر المكتبة الأكثر تنظيماً argparse.

import sys
print(sys.argv)
import argparse

parser = argparse.ArgumentParser(description="This program prints a color HEX value")
parser.add_argument("-c", "--color", metavar="color", required=True, help="the color to search for")
args = parser.parse_args()
print(args.color)

دوال lambda

هي دوال صغيرة مجهولة الاسم تتكون من تعبير واحد فقط.

multiply = lambda a, b: a * b
print(multiply(2, 2))

الاستدعاء الذاتي recursion

يمكن للدالة أن تستدعي نفسها، وهو أسلوب مناسب لبعض المسائل مثل حساب المضروب.

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)

الدوال المتداخلة وclosures

يمكن تعريف دالة داخل دالة أخرى، كما يمكن إرجاع الدالة الداخلية مع احتفاظها بمتغيرات النطاق الخارجي.

def counter():
    count = 0

    def increment():
        nonlocal count
        count += 1
        return count

    return increment

inc = counter()
print(inc())
print(inc())

المزخرفات decorators

تسمح بتعديل سلوك الدوال أو تعزيزها دون تغيير منطقها الداخلي مباشرة.

def logtime(func):
    def wrapper():
        val = func()
        return val
    return wrapper
@logtime
def hello():
    print("hello!")

التوثيق الداخلي docstrings

يوفر التوثيق داخل الدوال والأصناف والملفات وصفاً واضحاً يسهل على المطورين فهم الغرض من الشيفرة.

def increment(n):
    """Increment a number"""
    return n + 1

كما يمكن استعراض هذا التوثيق عبر help().

الاستبطان introspection

توفر Python أدوات لفحص الكائنات والدوال مثل type() وdir() وid() وhelp().

print(type(1))
print(type("test"))
print(dir([]))

الأنواع التوضيحية annotations

مع أن Python ديناميكية الأنواع، يمكنك إضافة أنواع توضيحية لزيادة الوضوح ودعم أدوات الفحص مثل mypy.

def increment(n: int) -> int:
    return n + 1

count: int = 0

معالجة الاستثناءات exceptions

تسمح معالجة الاستثناءات بالتعامل مع الأخطاء بطريقة آمنة ومنظمة.

try:
    result = 2 / 0
except ZeroDivisionError:
    print("Cannot divide by zero!")
finally:
    result = 1
    print(result)

كما يمكنك رفع استثناءات مخصصة:

class DogNotFoundException(Exception):
    pass

الجملة with

تختصر هذه الجملة العمل مع الموارد التي تحتاج إلى إغلاق تلقائي، مثل الملفات.

filename = "/Users/flavio/test.txt"
with open(filename, "r") as file:
    content = file.read()
    print(content)

تثبيت الحزم الخارجية باستخدام pip

إلى جانب المكتبة القياسية، يوجد مستودع ضخم للحزم هو PyPI، ويمكنك التثبيت من خلال pip.

pip install requests

أوامر شائعة:

  • تثبيت حزمة: pip install <package>
  • ترقية حزمة: pip install -U <package>
  • تثبيت إصدار محدد: pip install <package>==<version>
  • حذف حزمة: pip uninstall <package>
  • عرض معلوماتها: pip show <package>

الفهم المختصر للقوائم list comprehensions

توفر هذه الصياغة طريقة مختصرة وأنيقة لإنشاء القوائم.

numbers = [1, 2, 3, 4, 5]
numbers_power_2 = [n ** 2 for n in numbers]

تعدد الأشكال polymorphism

يتيح هذا المفهوم استخدام الواجهة نفسها مع أنواع مختلفة من الكائنات.

class Dog:
    def eat(self):
        print("Eating dog food")

class Cat:
    def eat(self):
        print("Eating cat food")

التحميل الزائد للمعاملات operator overloading

يمكنك تعريف كيفية تصرف الأصناف مع المعاملات مثل > و+ و== عبر دوال خاصة مثل __gt__() و__eq__().

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __gt__(self, other):
        return self.age > other.age

البيئات الافتراضية virtual environments

عند العمل على أكثر من مشروع، من الأفضل عزل الحزم الخاصة بكل مشروع داخل بيئة افتراضية.

python -m venv .venv
source .venv/bin/activate

بعد التفعيل، أي عملية تثبيت عبر pip ستخص هذا المشروع فقط، وهو أمر مهم لتجنب تعارض الإصدارات.

نصائح عملية لتعلّم Python بسرعة

  1. ابدأ بكتابة برامج صغيرة يومياً.
  2. جرّب الشيفرات بنفسك داخل REPL أو محرر مناسب.
  3. ركز أولاً على الأساسيات: المتغيرات، الشروط، الحلقات، الدوال، وبنى البيانات.
  4. لا تحفظ كل شيء؛ افهم الفكرة وارجع للتوثيق عند الحاجة.
  5. استخدم مشاريع بسيطة مثل آلة حاسبة، برنامج مهام، أو سكربت أتمتة.

الخلاصة التقنية

إذا كنت تبدأ رحلتك البرمجية اليوم، فإن Python تمنحك أفضل توازن بين البساطة والقوة. فهي لغة مناسبة للتعلّم السريع، لكنها في الوقت نفسه قادرة على تشغيل تطبيقات حقيقية في مجالات متقدمة. الأهم ليس قراءة المفاهيم فقط، بل تحويلها إلى ممارسة يومية. كلما كتبت شيفرة أكثر، أصبحت مفاهيم Python أوضح وأسهل، وبدأت تنتقل من مرحلة الفهم النظري إلى بناء حلول عملية ذات قيمة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *