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

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

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

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

مثال سريع:
name = "Flavio
tprint(name)
ولإنهاء الجلسة التفاعلية استخدم quit().

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

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

python program.py

هذه الطريقة تنفذ البرنامج كاملاً دفعة واحدة، وهي الأسلوب المعتاد في تشغيل البرامج الفعلية.
4) تشغيل الملف كسكربت في Linux وmacOS
يمكنك إضافة سطر البداية التالي أعلى الملف:
#!/usr/bin/python3
ثم منح الملف صلاحية التنفيذ:
chmod u+x program.py
بعد ذلك يمكن تشغيله مباشرة:
./program.py

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

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

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




7) البرمجة عبر المتصفح باستخدام repl.it
إذا كنت لا ترغب في التثبيت المحلي، يمكنك استخدام منصة 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
توفر اللغة مكتبة قياسية كبيرة تضم وحدات جاهزة لأعمال كثيرة. من أبرزها:
mathrejsondatetimesqlite3osrandomstatisticsurllibhttp
مثال على استخدام 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 بسرعة
- ابدأ بكتابة برامج صغيرة يومياً.
- جرّب الشيفرات بنفسك داخل
REPLأو محرر مناسب. - ركز أولاً على الأساسيات: المتغيرات، الشروط، الحلقات، الدوال، وبنى البيانات.
- لا تحفظ كل شيء؛ افهم الفكرة وارجع للتوثيق عند الحاجة.
- استخدم مشاريع بسيطة مثل آلة حاسبة، برنامج مهام، أو سكربت أتمتة.
الخلاصة التقنية
إذا كنت تبدأ رحلتك البرمجية اليوم، فإن Python تمنحك أفضل توازن بين البساطة والقوة. فهي لغة مناسبة للتعلّم السريع، لكنها في الوقت نفسه قادرة على تشغيل تطبيقات حقيقية في مجالات متقدمة. الأهم ليس قراءة المفاهيم فقط، بل تحويلها إلى ممارسة يومية. كلما كتبت شيفرة أكثر، أصبحت مفاهيم Python أوضح وأسهل، وبدأت تنتقل من مرحلة الفهم النظري إلى بناء حلول عملية ذات قيمة.