متغیر ها فضا هایی رزرو شده در حافظه هستند تا بتوان در آن ها مقادیر ذخیره کرد. به عبارتی دیگر زمانی که شما به عنوان برنامه نویس در کد برنامه خود یک متغیر تعریف می کنید، در واقع فضایی در حافظه را اشغال یا رزرو می کنید. در قسمت سوم از آموزش مقدماتی پایتون به مباحث مربوط به انواع داده ها در این زبان می پردازیم.
وابسته به نوع داده ای که قرار است در یک متغیر قرار بگیرد، مفسر زبان حافظه اختصاص می دهد و تصمیم می گیرد که چه نوع مقداری می تواند در آن فضای رزرو شده نگهداری شود. بنابراین شما می توانید انواع داده ها از نوع integer، decimal یا کاراکتری را در متغیر ها نگهداری کنید.
در زبان پایتون نیازی نیست که برای رزرو فضای حافظه متغیر ها را به صورت دستی و قبل از استفاده تعریف کنید. تعریف متغیر به صورت خودکار و در زمانی که شما مقداری را به آن متغیر نسبت می دهید، اتفاق میافتد. برای مقدار دادن به متغیر از علامت مساوی (=) استفاده می شود.
عملوند سمت چپ اپراتور = نام متغیر و عملوند سمت راست مقداری است که قرار است در متغیر نگهداری شود.
برای مثال
#!/usr/bin/python3 counter = 100 # An integer assignment miles = 1000.0 # A floating point name = "John" # A string print (counter) print (miles) print (name)
در مثال بالا، 100، 1000.0 و مقدار رشته ای “John” مقادیری هستند که به متغیر های counter، miles و name نسبت داده شده اند. کد بالا نتیجه زیر را در بر خواهد داشت.
100 1000.0 John
پایتون این امکان را می دهد که یک مقدار را به طور همزمان به چند متغیر نسبت بدهید.
برای مثال
a = b = c = 1
در مثال بالا، یک شی از نوع integer با مقدار 1 ساخته می شود و همه سه متغیر به فضایی یکسان در حافظه منتصب می شوند. شما همچنین می توانید چند شی را به چند متغیر نسبت بدهید.
برای مثال
a, b, c = 1, 2, "john"
در مثال بالا، دو شی از نوع integer با مقادیر 1 و 2 به دو متغیر با نام های a و b منتصب می شوند و یک شی رشته ای با مقدار “john” به متغیر c نسبت داده می شود.
داده ای که حافظه ذخیره می شود می تواند انواع مختلفی داشته باشد. برای مثال، سن یک فرد به صورت مقدار عددی و نشانی خانه او به صورت کاراکتر های عدد و حروف نگهداری می شود. پایتون انواع داده های استاندارد مختلفی دارد که برای تعریف عملیات هایی بر روی آن نوع از داده ها قابل اجرا است مورد استفاده قرار می گیرند.
پایتون 5 نوع داده استاندارد دارد:
داده های نوع عددی به صورت مقدار عددی نگهداری می شوند. شی های Number زمانی ساخته می شوند که به آن ها مقدار می دهید.
برای مثال:
var1 = 1 var2 = 10
شما می توانید ارجاع به یک شی عددی را با استفاده از دستور del حذف کنید. دستور del به صورت زیر استفاده می شود.
del var1[,var2[,var3[....,varN]]]]
شما می توانید با استفاده از دستور del یک یا چند شی را حذف کنید.
برای مثال
del var del var_a, var_b
پایتون از سه نوع عددی پشتیبانی می کند.
تمام integer ها در پایتون به صورت long integer هستند و بنابراین نوع عددی long در این زبان نداریم.
مثال های از اعداد در زبان پایتون
int | float | complex |
---|---|---|
10 | 0.0 | 3.14j |
100 | 15.20 | 45.j |
-786 | -21.9 | 9.322e-36j |
080 | 32.3+e18 | .876j |
-0490 | -90. | -.6545+0J |
-0x260 | -32.54e100 | 3e+26J |
0x69 | 70.2-E12 | 4.53e-7j |
عدد مختلط از زوج مرتبی از اعداد که به فرم x + yj نوشته می شوند، تشکیل می شود که در آن x و y اعداد حقیقی و j یک واحد فرضی است.
رشته ها در پایتون از یک سری کاراکتر پشت سرهم که داخل علامت نقل قول (”) قرار می گیرند، ساخته می شوند. در پایتون امکان استفاده از نقل قول تکی (‘) و دو تایی (“) وجود دارد و می توانید بخشی از یک رشته متنی را به کمک اپراتور slice که به صورت [] و [:] هست بدست بیاورید.
علامت به اضافه (+) رشته های متنی را به هم می چسباند و علامت ستاره (*) هم اپراتوری برای تکرار است.
مثال های زیر را ببینید.
#!/usr/bin/python3 str = 'Hello World!' print (str) # Prints complete string print (str[0]) # Prints first character of the string print (str[2:5]) # Prints characters starting from 3rd to 5th print (str[2:]) # Prints string starting from 3rd character print (str * 2) # Prints string two times print (str + "TEST") # Prints concatenated string
نتیجه اجرای کد بالا به صورت زیر خواهد بود.
Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST
لیست ها در پایتون یک نوع داده پیچیده و انعطاف پذیر است. یک لیست شامل آیتم هایی که با کاما از یکدیگر جدا می شوند است که داخل یک جفت براکت ([]) قرار گرفته اند. تا حدودی لیست ها شبیه به آرایه ها در زبان C هستند. یکی از تفاوت های بین این دو مفهوم این است که آیتم های یک لیست می تواند از هر نوعی باشد.
به مقادیری که در یک لیست نگهداری می شوند می توان با استفاده از اپراتور slice یعنی [] و [:] دسترسی یافت.
به مثال های زیر توجه کنید.
#!/usr/bin/python3 list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print (list) # Prints complete list print (list[0]) # Prints first element of the list print (list[1:3]) # Prints elements starting from 2nd till 3rd print (list[2:]) # Prints elements starting from 3rd element print (tinylist * 2) # Prints list two times print (list + tinylist) # Prints concatenated lists
نتیجه اجرای کد بالا به صورت زیر است.
['abcd', 786, 2.23, 'john', 70.200000000000003] abcd [786, 2.23] [2.23, 'john', 70.200000000000003] [123, 'john', 123, 'john'] ['abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john']
تاپل ترتیبی از انواع داده ها و مشابه لیست است. یک تاپل از تعدادی مقادیر که با کاما از هم جدا می شوند، تشکیل می شود. برخلاف لیست ها، تاپل ها با پرانتز () محصور هستند.
تفاوت اصلی بین لیست ها و تاپل ها این است که لیست ها با براکت تعریف می شوند و المنت ها و اندازه تاپل ها قابل تغییر است در حالی که تاپل ها با پرانتز تعریف می شوند و امکان بروزرسانی تاپل وجود ندارد. به عبارتی دیگر تاپل ها لیست های read-only یا فقط قابل خواندن هستند.
برای مثال
#!/usr/bin/python3 tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print (tuple) # Prints complete tuple print (tuple[0]) # Prints first element of the tuple print (tuple[1:3]) # Prints elements starting from 2nd till 3rd print (tuple[2:]) # Prints elements starting from 3rd element print (tinytuple * 2) # Prints tuple two times print (tuple + tinytuple) # Prints concatenated tuple
با اجرای کد بالا نتیجه زیر حاصل می شود.
('abcd', 786, 2.23, 'john', 70.200000000000003) abcd (786, 2.23) (2.23, 'john', 70.200000000000003) (123, 'john', 123, 'john') ('abcd', 786, 2.23, 'john', 70.200000000000003, 123, 'john')
بخش مربوط به تاپل در کد زیر نادرست است چرا که سعی می شود تا یک خانه از تاپل بروزرسانی شود که مجاز نیست.
#!/usr/bin/python3 tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # Invalid syntax with tuple list[2] = 1000 # Valid syntax with list
دیکشنری هادر پایتون یک نوع hash-table است. درست مانند آرایه های associative یا hashes که در زبان Perl وجود دارد از زوج های کلید و مقدار تشکیل شده است. کلید دیکشنری می تواند هر نوع داده ای که در پایتون وجود دارد باشد ولی معمولا عددی یا رشته است. مقادیر نیز می توانند هر نوع شی در زبان پایتون باشد.
دیکشنری ها با براکت های {} تعریف می شوند و مقادیر می توانند با استفاده از براکت [] منتصب شوند.
برای مثال
#!/usr/bin/python3 dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print (dict['one']) # Prints value for 'one' key print (dict[2]) # Prints value for 2 key print (tinydict) # Prints complete dictionary print (tinydict.keys()) # Prints all the keys print (tinydict.values()) # Prints all the values
اجرای کد بالا نتیجه زیر را در بر دارد.
This is one This is two {'name': 'john', 'dept': 'sales', 'code': 6734} dict_keys(['name', 'dept', 'code']) dict_values(['john', 'sales', 6734])
بعضی مواقع، لازم می شود که بین انواع داده های پایتون تبدیلات انجام دهید. برای این کار کافی است نام نوع داده مورد نظر را به صورت تابع در کدنویسی خود به کار ببرید.
توابع از پیش ساخته شده مختلفی برای تبدیل داده از یک نوع به نوع دیگر وجود دارد. این توابع یک شی جدید که حاوی مقدار تبدیل شده است بر می گردانند.
ردیف | تابع و توضیح آن |
---|---|
1 | int(x [,base]) مقدار x را به یک integer تبدیل می کند. پارامتر base نیز مبنای عدد را مشخص می کند که به صورت پیشفرض 10 است. |
2 | float(x) مقدار x را به یک عدد اعشاری تبدیل می کند. |
3 | complex(real [,imag]) یک عدد مختلط می سازد. |
4 | str(x) شی x را به یک رشته متنی تبدیل می کند. |
5 | repr(x) شی x را به یک رشته متنی تعریفی تبدیل می کند. |
6 | eval(str) یک رشته متنی را ارزیابی می کند و یک شی بر می گرداند. |
7 | tuple(s) مقدار s را به یک تاپل تبدیل می کند. |
8 | list(s) مقدار s را به یک لیست تبدیل می کند. |
9 | set(s) مقدار s را به یک set تبدیل می کند. |
10 | dict(d) یک دیکشنری می سازد. d باید ترتیبی از تاپل های زوج کلید و مقدار باشد. |
11 | frozenset(s) مقدار s را به یک frozen set تبدیل می کند. |
12 | chr(x) یک integer را به کاراکتر تبدیل می کند. |
13 | unichr(x) یک integer را به کاراکتر Unicode تبدیل می کند. |
14 | ord(x) یک کاراکتر را به مقدار عددی اش تبدیل می کند. |
15 | hex(x) یک integer را به یک رشته هگزادسیمال تبدیل می کند. |
16 | oct(x) یک integer را به یک رشته اکتال تبدیل می کند. |