GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing python.github.io — 3. معرفی غیررسمی پایتون 3. معرفی غیررسمی پایتون¶در مثالهای زیر، ورودی و خروجی با وجود یا نبود اعلانها (>>> و ...) از یکدیگر متمایز میشوند: برای تکرار مثال، باید هر چیزی را که پس از اعلان ظاهر میشود، زمانی که اعلان نمایش داده میشود، تایپ کنید؛ سطرهایی که با اعلان شروع نمیشوند، خروجی مفسر هستند. توجه کنید که یک اعلان ثانویه که در یک مثال بهتنهایی در یک خط قرار دارد، به این معنی است که باید یک خط خالی تایپ کنید؛ این مورد برای پایان دادن به یک دستور چندخطی استفاده میشود. میتوانید از دکمهی "Copy" استفاده کنید (این دکمه هنگام قرار گرفتن نشانگر روی یک مثال کد یا لمس کردن آن، در گوشهی بالا-راست ظاهر میشود) که اعلانها را حذف میکند و خروجی را کنار میگذارد، تا سطرهای ورودی را کپی کرده و در مفسر خود جایگذاری کنید. بسیاری از مثالهای موجود در این راهنما، حتی آنهایی که در اعلان تعاملی وارد شدهاند، شامل کامنتها هستند. کامنتها در پایتون با نویسهی علامت هش، یعنی چند مثال: # this is the first comment spam = 1 # and this is the second comment # ... and now a third! text = "# This is not a comment because it's inside quotes." 3.1. استفاده از پایتون بهعنوان ماشینحساب¶بیایید چند دستور سادهی پایتون را امتحان کنیم. مفسر را اجرا کنید و منتظر اعلان اصلی، یعنی 3.1.1. اعداد¶مفسر مانند یک ماشینحساب ساده عمل میکند: میتوانید یک عبارت را در آن تایپ کنید و مقدار آن را نمایش خواهد داد. سینتکس عبارتها ساده است: عملگرهای >>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 # division always returns a floating-point number 1.6 اعداد صحیح (برای مثال تقسیم ( >>> 17 / 3 # classic division returns a float 5.666666666666667 >>> >>> 17 // 3 # floor division discards the fractional part 5 >>> 17 % 3 # the % operator returns the remainder of the division 2 >>> 5 * 3 + 2 # floored quotient * divisor + remainder 17 در پایتون، امکان استفاده از عملگر >>> 5 ** 2 # 5 squared 25 >>> 2 ** 7 # 2 to the power of 7 128 علامت مساوی ( >>> width = 20 >>> height = 5 * 9 >>> width * height 900 اگر یک متغیر «تعریف» نشده باشد (مقداری به آن اختصاص داده نشده باشد)، تلاش برای استفاده از آن باعث ایجاد خطا خواهد شد: >>> n # try to access an undefined variable Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'n' is not defined پشتیبانی کامل از اعداد اعشاری وجود دارد؛ عملگرهایی که عملوندهایی با نوعهای مختلف دارند، عملوند صحیح را به عدد اعشاری تبدیل میکنند: >>> 4 * 3.75 - 1 14.0 در حالت تعاملی، آخرین عبارتی که چاپ شده است به متغیر >>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >>> price + _ 113.0625 >>> round(_, 2) 113.06 این متغیر باید توسط کاربر فقط برای خواندن در نظر گرفته شود. بهصورت صریح مقداری به آن اختصاص ندهید --- با این کار یک متغیر محلی مستقل با همان نام ایجاد میکنید که متغیر توکار را با رفتار ویژهی آن پنهان میکند. علاوه بر 3.1.2. متن¶پایتون میتواند متن (که توسط نوع >>> 'spam eggs' # single quotes 'spam eggs' >>> "Paris rabbit got your back :)! Yay!" # double quotes 'Paris rabbit got your back :)! Yay!' >>> '1975' # digits and numerals enclosed in quotes are also strings '1975' برای قرار دادن یک نقلقول درون یک نقلقول، باید آن را با قرار دادن >>> 'doesn\'t' # use \' to escape the single quote... "doesn't" >>> "doesn't" # ...or use double quotes instead "doesn't" >>> '"Yes," they said.' '"Yes," they said.' >>> "\"Yes,\" they said." '"Yes," they said.' >>> '"Isn\'t," they said.' '"Isn\'t," they said.' در پوستهی پایتون، تعریف رشته و رشتهی خروجی ممکن است متفاوت به نظر برسند. تابع >>> s = 'First line.\nSecond line.' # \n نشاندهندهی رفتن به خط بعد است >>> s # without print(), special characters are included in the string 'First line.\nSecond line.' >>> print(s) # with print(), special characters are interpreted, so \n یک خط جدید ایجاد میکند First line. Second line. اگر نمیخواهید نویسههایی که با >>> print('C:\this\name') # در اینجا \t نشاندهندهی تب و \n نشاندهندهی خط جدید است C: his ame >>> print(r'C:\this\name') # به حرف r قبل از علامت نقلقول توجه کنید C:\this\name یک نکتهی ظریف دربارهی رشتههای خام وجود دارد: یک رشتهی خام نمیتواند با تعداد فردی از نویسههای رشتههای لفظی میتوانند چندین خط را دربر بگیرند. یک روش استفاده از نقلقولهای سهتایی است: >>> print("""\ ... Usage: thingy [OPTIONS] ... -h Display this usage message ... -H hostname Hostname to connect to ... """) Usage: thingy [OPTIONS] -h Display this usage message -H hostname Hostname to connect to >>> رشتهها را میتوان با عملگر >>># 3 times 'un', followed by 'ium' >>> 3 * 'un' + 'ium' 'unununium' دو یا چند رشتهی لفظی (یعنی مواردی که بین علامتهای نقلقول قرار گرفتهاند) که در کنار یکدیگر قرار دارند، بهصورت خودکار به هم متصل میشوند. >>> 'Py' 'thon' 'Python' این قابلیت بهویژه زمانی مفید است که بخواهید رشتههای طولانی را شکسته و در چند خط بنویسید: >>> text = ('Put several strings within parentheses ' ... 'to have them joined together.') >>> text 'Put several strings within parentheses to have them joined together.' البته این فقط برای دو رشتهی لفظی ثابت کار میکند، نه برای متغیرها یا عبارتها: >>> prefix = 'Py' >>> prefix 'thon' # can't concatenate a variable and a string literal File "<stdin>", line 1 prefix 'thon' ^^^^^^ SyntaxError: invalid syntax >>> ('un' * 3) 'ium' File "<stdin>", line 1 ('un' * 3) 'ium' ^^^^^ SyntaxError: invalid syntax اگر میخواهید متغیرها یا یک متغیر و یک رشتهی لفظی ثابت را به هم متصل کنید، از >>> prefix + 'thon' 'Python' رشتهها را میتوان اندیسگذاری (اندیسگذاری) کرد؛ بهطوری که اولین نویسه دارای اندیس 0 است. نوع جداگانهای برای نویسه وجود ندارد؛ یک نویسه در واقع فقط رشتهای با اندازهی یک است: >>> word = 'Python' >>> word[0] # character in position 0 'P' >>> word[5] # character in position 5 'n' اندیسها همچنین میتوانند اعداد منفی باشند تا شمارش از سمت راست آغاز شود: >>> word[-1] # last character 'n' >>> word[-2] # second-last character 'o' >>> word[-6] 'P' توجه کنید که چون -0 همان 0 است، اندیسهای منفی از -1 شروع میشوند. علاوه بر اندیسگذاری، اسلایس کردن نیز پشتیبانی میشود. در حالی که اندیسگذاری برای بهدست آوردن نویسههای جداگانه استفاده میشود، اسلایس کردن به شما اجازه میدهد یک زیررشته بهدست آورید: >>> word[0:2] # characters from position 0 (included) to 2 (excluded) 'Py' >>> word[2:5] # characters from position 2 (included) to 5 (excluded) 'tho' اندیسهای اسلایس مقدارهای پیشفرض مفیدی دارند؛ اگر اندیس اول حذف شود، مقدار پیشفرض آن صفر است و اگر اندیس دوم حذف شود، مقدار پیشفرض آن اندازهی رشتهای است که در حال اسلایس شدن است. >>> word[:2] # character from the beginning to position 2 (excluded) 'Py' >>> word[4:] # characters from position 4 (included) to the end 'on' >>> word[-2:] # characters from the second-last (included) to the end 'on' توجه کنید که نقطهی شروع همیشه شامل میشود و نقطهی پایان همیشه حذف میشود. این موضوع تضمین میکند که >>> word[:2] + word[2:] 'Python' >>> word[:4] + word[4:] 'Python' یک روش برای به خاطر سپردن نحوهی کار اسلایسها این است که تصور کنید اندیسها به بین نویسهها اشاره میکنند، بهطوری که لبهی سمت چپ اولین نویسه شمارهی 0 دارد. سپس لبهی سمت راست آخرین نویسهی یک رشته با n نویسه، دارای اندیس n است؛ برای مثال: +---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 ردیف اول اعداد، موقعیت اندیسهای 0...6 در رشته را نشان میدهد؛ ردیف دوم اندیسهای منفی متناظر را نشان میدهد. اسلایس از i تا j شامل تمام نویسههایی است که بین لبههای مشخصشده با i و j قرار دارند. برای اندیسهای غیرمنفی، طول یک اسلایس برابر با تفاوت بین اندیسها است، به شرطی که هر دو در محدوده باشند. برای مثال، طول تلاش برای استفاده از اندیسی که بیش از حد بزرگ است، باعث ایجاد خطا خواهد شد: >>> word[42] # the word only has 6 characters Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: string index out of range بااینحال، اندیسهای اسلایس خارج از محدوده هنگام استفاده برای اسلایس کردن بهصورت مناسبی مدیریت میشوند: >>> word[4:42] 'on' >>> word[42:] '' رشتههای پایتون قابل تغییر نیستند --- آنها تغییرناپذیر هستند. بنابراین، اختصاص دادن مقدار به یک موقعیت اندیسگذاریشده در رشته باعث ایجاد خطا میشود: >>> word[0] = 'J' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment >>> word[2:] = 'py' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment اگر به یک رشتهی متفاوت نیاز دارید، باید یک رشتهی جدید ایجاد کنید: >>> 'J' + word[1:] 'Jython' >>> word[:2] + 'py' 'Pypy' تابع توکار >>> s = 'supercalifragilisticexpialidocious' >>> len(s) 34 همچنین ببینید
3.1.3. فهرستها¶پایتون تعدادی نوع دادهی مرکب دارد که برای گروهبندی مقدارهای دیگر استفاده میشوند. انعطافپذیرترین آنها فهرست (list) است که میتوان آن را بهصورت فهرستی از مقدارهای جداشده با ویرگول (آیتمها) در میان کروشهها نوشت. فهرستها ممکن است شامل آیتمهایی از نوعهای مختلف باشند، اما معمولاً همهی آیتمها یک نوع یکسان دارند. >>> squares = [1, 4, 9, 16, 25] >>> squares [1, 4, 9, 16, 25] مانند رشتهها (و تمام نوعهای توکار دیگر دنباله)، فهرستها را میتوان اندیسگذاری و اسلایس داد: >>> squares[0] # indexing returns the item 1 >>> squares[-1] 25 >>> squares[-3:] # slicing returns a new list [9, 16, 25] فهرستها همچنین از عملیاتی مانند الحاق پشتیبانی میکنند: >>> squares + [36, 49, 64, 81, 100] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] برخلاف رشتهها که تغییرناپذیر هستند، فهرستها یک نوع تغییرپذیر هستند؛ یعنی امکان تغییر محتوای آنها وجود دارد: >>> cubes = [1, 8, 27, 65, 125] # something's wrong here >>> 4 ** 3 # the cube of 4 is 64, not 65! 64 >>> cubes[3] = 64 # replace the wrong value >>> cubes [1, 8, 27, 64, 125] همچنین میتوانید با استفاده از متد >>> cubes.append(216) # add the cube of 6 >>> cubes.append(7 ** 3) # and the cube of 7 >>> cubes [1, 8, 27, 64, 125, 216, 343] انتساب ساده در پایتون هرگز دادهها را کپی نمیکند. هنگامی که یک فهرست را به یک متغیر اختصاص میدهید، متغیر به فهرست موجود اشاره میکند. هر تغییری که از طریق یک متغیر در فهرست ایجاد کنید، از طریق تمام متغیرهای دیگری که به آن اشاره میکنند نیز دیده خواهد شد.: >>> rgb = ["Red", "Green", "Blue"] >>> rgba = rgb >>> id(rgb) == id(rgba) # they reference the same object True >>> rgba.append("Alph") >>> rgb ["Red", "Green", "Blue", "Alph"] تمام عملیات اسلایس یک فهرست جدید شامل عناصر درخواستشده برمیگردانند. این یعنی اسلایس زیر یک کپی سطحی از فهرست ایجاد میکند: >>> correct_rgba = rgba[:] >>> correct_rgba[-1] = "Alpha" >>> correct_rgba ["Red", "Green", "Blue", "Alpha"] >>> rgba ["Red", "Green", "Blue", "Alph"] انتساب به اسلایسها نیز امکانپذیر است و حتی میتواند اندازهی فهرست را تغییر دهد یا آن را بهطور کامل خالی کند: >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> letters ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> # replace some values >>> letters[2:5] = ['C', 'D', 'E'] >>> letters ['a', 'b', 'C', 'D', 'E', 'f', 'g'] >>> # now remove them >>> letters[2:5] = [] >>> letters ['a', 'b', 'f', 'g'] >>> # clear the list by replacing all the elements with an empty list >>> letters[:] = [] >>> letters [] تابع توکار >>> letters = ['a', 'b', 'c', 'd'] >>> len(letters) 4 امکان تو در تو کردن فهرستها وجود دارد (ایجاد فهرستهایی که شامل فهرستهای دیگر هستند)، برای مثال: >>> a = ['a', 'b', 'c'] >>> n = [1, 2, 3] >>> x = [a, n] >>> x [['a', 'b', 'c'], [1, 2, 3]] >>> x[0] ['a', 'b', 'c'] >>> x[0][1] 'b' 3.2. قدمهای اول به سوی برنامهنویسی¶البته، میتوانیم از پایتون برای کارهای پیچیدهتری از جمع کردن دو و دو استفاده کنیم. برای نمونه، میتوانیم یک زیردنبالهی ابتدایی از دنبالهی فیبوناچی را به شکل زیر بنویسیم: >>> # Fibonacci series: >>> # the sum of two elements defines the next >>> a, b = 0, 1 >>> while a < 10: ... print(a) ... a, b = b, a+b ... 0 1 1 2 3 5 8 این مثال چندین قابلیت جدید را معرفی میکند.
پانویسها
© حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است. مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند. برای اطلاعات بیشتر به تاریخچه و مجوز مراجعه کنید. بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است. لطفاً کمک مالی کنید. آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC). آیا اشکالی یافتید؟ ساخته شده با Sphinx 9.1.0. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |