پایه ها

از PyLearn.com

پرش به: ناوبری, جستجو

فهرست مندرجات

پایه‌ها

فقط چاپ کردن 'Hello World' کافی نیست، این طور نیست؟ شما می خواهید چیزهایی بیش از آن انجام دهید - شما می خواهید چند ورودی بگیرید، آن را دستکاری کنید و چیزی را به عنوان خروجی بگیرید. می می توانیم این را در Python به وسیله ثابت ها و متغییرها انجام دهیم.

ثابت‌های لفظی

یک مثال برای ثابت ها لفظی یک عدد مانند 5, 1.23, 9.25e-3 یا یک رشته مانند 'This is a string' یا "It's a string!" است. این یک لفظ نامیده می شود، زیرا لفظی است - شما ارزش آن را بطور لفظی به کار می برید. عدد 2 همیشه خودش را نشان می دهد، نه هیچ چیز دیگری - این یک ثابت است، زیرا ارزش آن را نمی توان تغییر داد. از این رو، تمام این ها به عنوان ثابت های لفظی تلقی می شوند.

اعداد

اعداد در Python چهار گونه اند - اعداد صحیح، اعداد صحیح طویل، اعداد ممیز شناور و اعداد مرکب. یک مثال برای اعداد صحیح 2 است که به تنهایی یک عدد صحیح است. اعداد صحیح طویل، تنها اعداد صحیح بزرگ تر هستند. مثال هایی برای اعداد ممیز شناور 3.23 و 52.3E-4 است. نشانه E توان های 10 را نشان می دهد. در این مورد، 52.3E-4 به معنای 52.3 * 10-4 است. مثال هایی برای اعداد مرکب، (-5+4j) و (2.3 - 4.6j) است.

رشته‌ها

یک رشته، یک توالی از حروف است. رشته ها اساسا تنها یک گروه از کلمات اند. من تقریبا می توانم تضمین کنم که شما احتمالا در همه برنامه های Python ای که می نویسید، از رشته ها استفاده خواهید کرد. بنابراین، به بخش زیر توجه کنید. چگونگی استفاده از رشته در Python اینجاست:

  • استفاده از نشان نقل قول تکی (')

شما می توانید با استفاده از نشان نقل قول تکی مانند 'Quote me on this'، رشته ها را معین کنید.

  • استفاده از نشان نقل قول دوتایی (")

رشته های درون نشان نقل قول دوتایی دقیقا مثل رشته های دورن نشان نقل قول تکی عمل می کنند. یک مثال "What's your name?" است.

  • استفاده از نشان نقل قول سه تایی ( یا """)

شما می توانید با استفاده از نشان نقل قول سه تایی رشته های چند خطی را معین کنید. شما می توانید به طور آزادانه از نشان های نقل قول تکی و دوتایی درون نشان های نقل قول سه تایی استفاده کنید. یک مثال:

This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."

  • توالی‌های گریز

فرض کنید که می خواهید رشته ای داشته باشید که دارای نشانه نقل قول تکی (') باشد، چگونه این رشته را معین خواهید کرد؟ مثلا رشته What's your name? است. شما نمی توانید 'What's your name?' را مشخص کنید، زیرا Python در مورد محل آغاز و پایان رشته اشتباه خواهد کرد. بنابراین شما باید نشان دهید که این نشان نقل قول تکی پایان رشته را نشان نمی دهد. این به وسیله کمک چیزی به نام توالی های گریز قابل انجام است. شما نشان نقل قول تکی را مانند \' مشخص می کنید - به خط مورب(backslash) توجه شود. حالا شما می توانید رشته را مانند 'What\'s your name?' مشخص کنید. یک راه دیگر برای نشان دادن این رشته مخصوص، می تواند "What's your name?" یعنی استفاده از نشان نقل قول دوتایی باشد. به همین ترتیب، شما مجبورید که از یک توالی گریز برای استفاده از خود نشان نقل قول دوتایی در یک رشته نشان نقل قول دوتایی استفاده کنید. همچنین شما باید خود خط مورب(backslash) را با استفاده از توالی گریز \\ نشان دهید. اگر شما بخواهید یک رشته دو خطی را معین کنید چه؟ همانطور که در بالا نشان داده شده است، یک راه استفاده از رشته ای با نشان نقل قول سه تایی است و یا از توالی گریز برای حرف اول خط جدید استفاده کنید - استفاده از \n برای نشان دادن شروع خط جدید. یک مثال: This is the first line\nThis is the second line. یک توالی گریز مفید دیگر برای معلوم کردن این که یک tab است، \t است. در اینجا توالی های گریز بسیار بیشتری وجود دارند، اما من تنها مفیدترین توالی های گریز را در اینجا نام برده ام. یک چیز برای تذکر دادن این است که یک خط مورب(backslash) در انتهای خط نشان می دهد که رشته در خط بعدی ادامه دارد، اما هیچ خط جدیدی اضافه نشده است. مثلا:

"This is the first sentence.\
This is the second sentence."

معادل

"This is the first sentence. This is the second sentence."

است.

  • رشته‌های خام

اگر شما لازم دارید تعدادی رشته را معین کنید که هیچ پردازش مخصوصی مانند توالی های گریز در آن استفاده نشده است، چیزی که می خواهید مشخص کردن یک رشته خام به وسیله پیشوند r یا R است. یک مثال:

r"Newlines are indicated by \n"
  • رشته‌های یونیکد

Unicode یک راه استاندارد برای نوشتن متون بین المللی است. اگر شما می خواهید متن را در زبان محلی خود مانند هندی و عربی بنویسید، آنگاه شما به یک ویرایشگر متن با قابلیت پشتیبانی از Unicode نیازمندید. به همین ترتیب، Python به شما اجازه می دهد که متن Unicode را استفاده کنید - تمام چیزهایی که لازم است انجام دهید، استفاده از پیشوند u یا U است. مثلا

u"This is a Unicode string."

به یاد داشته باشید که وقتی با فایل های متنی سروکار دارید از رشته های Unicode استفاده کنید، مخصوصا وقتی که می دانید که فایل، متن نوشته شده به غیر از انگلیسی را دربر خواهد داشت.

  • رشته‌ها تغییر ناپذیرند

این به این معنی است که وقتی رشته ای را می سازید، نمی توانید آن را تغییر دهید.اگرچه شاید این یک چیز بد به نظرآید، اما واقعا این چنین نیست. ما خواهیم دید که چرا این یک محدودیت برای برنامه های بعدی که ما می نویسیم، نیست.

  • رشتهٔ لفظی الحاقی

اگر شما دو رشته لفظی را کنار هم قرار دهید، آن ها به صورت خودکار توسط Python ادغام می شوند. مثلا 'What\'s' 'your name?' به صورت خودکار به "What's your name?" تبدیل می شود.

  • تذکر برای برنامه نویسان C/C++

در Python هیچ نوع دادهٔ char جداگانه ای وجود ندارد. هیچ نیاز واقعی برای آن وجود ندارد و من مطمئن هستم که شما کمبود آن را حس نخواهید کرد.

  • تذکر برای برنامه نویسان Perl/PHP

به یاد داشته باشید که رشته های دارای نشان نقل قول تکی و رشته های نقل قول دوتایی یکی هستند - در هر صورت آن ها متفاوت نیستند.

  • تذکر برای کاربران عادی

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

متغییرها

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

نام گذاری شناسه

متغییرها مثال هایی از شناسه ها هستند. شناسه ها نام هایی هستند که برای شناختن چیزی به آن داده می شود. اینجا تعدادی قانون وجود دارد که برای نام گذاری شناسه ها مجبورید از آن پیروی کنید: اولین حرف شناسه باید یکی از حروف الفبا(بزرگ یا کوچک) یا یک خط زیرین('_') باشد. بقیه نام شناسه می تواند شامل حرف الفبا(بزرگ یا کوچک)، خطوط زیرین('_') یا اعداد(0-9) باشد. نام های نشانه به بزرگی و کوچکی حروف حساس هستند. برای مثال، myname و myName یکی نیستند. به حرف کوچک n در اولی و حرف بزرگ N در دومی توجه کنید. i, __my_name, name_23 و a1b2_c3 مثال هایی از نام های شناسه معتبر هستند. 2things, this is spaced out و my-name مثال هایی از نام های شناسه نامعتبر هستند.

انواع داده‌ها

متغییرها می توانند ارزش هایی از دستورات گوناگون را که انواع داده(data types) نامیده می شوند، نگه داری کنند. دستورات اصلی اعداد و رشته های هستند که ما در مورد آن ها بحث کرده ایم. در فصل های بعد، خواهیم دید که چگونه با استفاده از کلاس ها دستورات خودمان را بسازیم.

اشیا

به یاد داشته باشید که Python هرچیزی که در برنامه به کار گرفته شود را به عنوان شیء تلقی می کند. در عوض اینکه بگوییم چیزی، ما می گوییم شیئی.

  • تذکر برای کاربران برنامه نویسی شیءگرایی

Python شدیدا در دریافتن اینکه همه چیز شامل اعداد، رشته ها و حتی توابع شیء هستند، شیءگرا است. ما حالا می بینیم چگونه از متغییرها همراه با ثابت های لفظی استفاده کنیم. مثال پیش رو را ذخیره کنید و برنامه را اجرا کنید.

  • چگونگی نوشتن برنامه های Python

از این پس، روش استاندارد برای ذخیره و اجرای یک برنامه Python از این قرار است: 1- ویرایشگر مورد علاقه خود را باز کنید. 2- کدهای برنامه را که در مثال داده شده است را وارد کنید. 3- آن را به عنوان یک فایل با همان نام فایلی که در کامنت به آن اشاره شده است، ذخیره کنید. من از این قرارداد که تمام برنامه های Python را با پسوند .py ذخیره کنم، پیروی می کنم. 4- مفسر را با دستور python program.py اجرا کنید یا از IDLE برای اجرای برنامه ها استفاده کنید. شما همچنین می توانید از روش قابل اجرا کردن استفاده کنید که قبلا در مورد آن بحث شده است. مثال 4.1. استفاده از متغییرها و ثابت های لفظی

# Filename : var.py
i = 5
print i
i = i + 1
print i
s = '''This is a multi-line string.
This is the second line.'''
print s

خروجی

$ python var.py
5
6
This is a multi-line string.
This is the second line.

این چگونه کار می کند؟

اینجا چگونگی کارکردن برنامه مطرح است. ابتدا ما ارزش ثابت لفظی 5 را به متغییر i به وسیله عملگر واگذاری(=) می دهیم. این خط یک دستور نامیده می شود، زیرا مشخص می کنید که چیزی باید این گونه انجام شود. ما اسم متغییر i را به ارزش 5 پیوند می دهیم. سپس ما ارزش i را با استفاده از دستور print چاپ می کنیم که به طور از پیش تعیین شده، فقط ارزش متغییر را روی صفحه نمایش چاپ می کند. سپس ما 1 را به ارزشی که i دارد اضافه می کنیم و آن را دوباره ذخیره می کند. سپس ما آن را چاپ می کنیم و همان طور که انتظار داشتیم، ما مقدار 6 را می گیریم. به همین ترتیب، ما رشته لفظی را به عنوان متغییر s تعیین می کنیم و سپس آن را چاپ می کنیم.

  • تذکر برای برنامه نویسان C/C++

متغییر ها تنها با تعیین یک ارزش برای آن ها به کار می روند. هیچ بیانیه یا تعریف نوع داده ای لازم نیست/به کار نمی رود.

خط های منطقی و فیزیکی

یک خط فیزیکی چیزی است که در حین نوشتن برنامه می بینید. یک خط منطقی چیزی است که Python به عنوان یک دستور تکی می بیند. Python ضمنا فرض می کند که هر خط فیزیکی مانند یک خط منطقی است. یک مثال برای یک خط منطقی یک دستور مانند print 'Hello World' است - اگر این تنها روی یک خط بود(همانطوری که در یک ویرایشگر می بینید)، آن گاه این شبیه یک خط فیزیکی است. ضمنا Python کاربرد یک دستور تکی را بر طبق هر خط تقویت می کند که کد را خواناتر می کند. اگر می خواهید بیش تر از یک خط را در یک خط فیزیکی مشخص کنید، آنگاه مجبورید که این را به وسیله یک نقطه و ویرگول(;) مشخص کنید که انتهای خط/دستور منطقی را نشان می دهد. مثلا i = 5 print i مثل i = 5; print i; موثر است و همان چیز می تواند این گونه نوشته شود i = 5; print i; یا حتی i = 5; print i به هر حال، من شدیدا توصیه می کنم که به نوشتن تنها یک خط منطقی درون یک خط فیزیکی عادت کنید. از بیش از یک خط فیزیکی برای یک خط منطقی در صورتی استفاده کنید که خط منطقی واقعا طولانی باشد. هدف این است که در صورت امکان از نقطه و ویرگول به مقدار زیاد استفاده نکنید، از آنجایی که این موجب خواناتر شدن کد می گردد. در حقیقت، من هیچ وقت یک علامت نقطه و ویرگول را در یک برنامه Python به کار نبرده ام و حتی ندیده ام. یک مثال نوشتن یک خط منطقی تعداد زیادی خط فیزیکی را می پوشاند، در زیر آمده است. این به الحاق خط واضح(explicit line joining) اشاره دارد.

s = 'This is a string. \
This continues the string.'
print s

این، خروجی

This is a string. This continues the string.

می دهد. به همین ترتیب،

print \
i

با

print i

یکسان است. گاهی اوقات یک فرض مطلق وجود دارد که شما به استفاده از backslash نیاز ندارید. این حالتی است که خط منطقی از پرانتز، کروشه یا آکولاد استفاده می کند. این الحاق خط واضح(explicit line joining) نامیده می شود. شما می توانید این را هنگامی که ما برنامه ها را با استفاده از لیست ها در فصل های بعدی می نویسیم، در عمل ببینید.

Indentation

فضای سفید در پایتون مهم است. در حقیقت، فضای سفید اول خط مهم است. این Indentation(دندانه گذاری) نامیده می شود. فضای سفید(space ها و tab ها) در ابتدای خط منطقی برای تعیین سطح خط منطقی به کار می رود که در عمل برای تعیین گروه بندی دستورها به کار می رود. این یعنی دستور هایی که با هم به کار می روند، باید indentation یکسانی داشته باشند. هر گروه این چنینی از عبارات یک بلاک(block) نام دارد. ما در فصل های بعدی خواهیم دید که چگونه بلاک ها مهم هستند. چیزی که باید به خاطر داشته باشید این است که چگونه indentation غلط می تواند باعث زیاد شدن خطاها شود. برای مثال:

i = 5
 print 'Value is', i # Error! Notice a single space at the start of the line
print 'I repeat, the value is', i

وقتی که این را اجرا می کنید، شما خطای زیر را دریافت می کنید:

  File "whitespace.py", line 4
    print 'Value is', i # Error! Notice a single space at the start of the line
    ^
SyntaxError: invalid syntax

توجه کنید که یک فاصله در ابتدای خط دوم وجود دارد. خطای اشاره شده توسط Python به ما می گوید که ترکیب برنامه نامعتبر است، یعنی برنامه به درستی نوشته نشده است. آنچه به شما نشان می دهد این است که شما نمی توانید به صورت دلخواه بلاک های جدیدی از دستور را آغاز کنید(البته به جز بلاک اصلی که تمام آن را استفاده کرده اید). مواردی که شما می توانید از بلاک های جدید استفاده کنید، در فصل های بعدی مانند فصل control flow مفصلا شرح داده خواهند شد.

  • چگونگی دندانه گذاری

از یک ترکیب از tab ها و space ها برای دندانه گذاری به دلیل کارنکردن درست در تمام platform های مختلف استفاده نکنید. من شدیدا توصیه می کنم که شما از یک tab تکی یا دو یا چهار space برای هر سطح دندانه گذاری استفاده کنید. یکی از این سه شیوه دندانه گذاری را انتخاب کنید. مهم تر آن که یکی را انتخاب کنید و به صورت پایدار از آن استفاده کنید، یعنی تنها از آن شیوه دندانه گذاری استفاده کنید.

خلاصه

اکنون ما از جزئیات زیادی گذشته ایم، ما می توانیم به چیزهای جالب تری هم چون عبارات گردش کنترل تغییر دهیم. مطمئن باشید که با چیزهایی که در این فصل خوانده اید راحت باشید.