سلام به شما دوستان عزیز ، امیدوارم که خوب باشید. با بحث امروز که درمورد انواع متغیر (variable type) در پایتون است درخدمت شما هستیم .متغیر صرفا فضاهای رزرو شده در حافظه هستند که مقادیری را در آن ها ذخیره می کنیم، بدین معنا که در زمان ایجاد یک متغیر، بخشی از حافظه اشغال شده و به آن متغیر تخصیص داده می شود.

بسته به نوع داده ای متغیر، مفسر بخشی از حافظه را رزرو کرده و تصمیم می گیرد چه مقداری در حافظه ی تخصیص داده شده، ذخیره گردد. بنابراین، با تخصیص نوع داده های مختلف به متغیرها، می توانید اعداد صحیح (integer)، اعداد اعشاری (decimal) یا character در این متغیرها ذخیره کنید.

تخصیص مقادیر به متغیرها

برای تخصیص حافظه، در پایتون نیازی به اعلان صریح متغیر نیست. زمانی که مقداری را به متغیر انتساب می دهد، اعلان به صورت خودکار رخ می دهد. مانند زبان های برنامه نویسی دیگر، انتساب مقدار به متغیر توسط علامت مساوی ” = ” صورت می پذیرد.

عملوندی (operand) که در سمت چپ عملگر (operator) ” = ” قرار می گیرد، اسم متغیر و عملوندی که در سمت راست عملگر ” = ” قرار می گیرد، مقداری است که در متغیر ذخیره می شود. مثال:

#!/usr/bin/python

counter = 100 # An integer assignment

miles = 1000.0 # A floating point

name = “John” # A string

print counter

print miles

print name

در اینجا، ۱۰۰، ۱۰۰۰٫۰و “John” همگی مقادیر تخصیص داده شده به ترتیب به متغیرهای counter، miles و name هستند. کد بالا نتیجه ی زیر را بدست می دهد:

۱۰۰

۱۰۰۰٫۰

John

چندین تخصیص به صورت یکجا

پایتون به شما امکان می دهد یک مقدار را همزمان به چندین متغیر تخصیص دهید. مثال:

a = b = c = 1

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

a, b, c = 1, 2, “john”

در این مثال، سه مقادیر دو عدد صحیح و یک رشته به ترتیب به متغیرهای a، b و c تخصیص داده شده اند.

نوع داده های رایج

داده های ذخیره شده در حافظه می توانند از هر نوعی باشند. به عنوان مثال، سن یک شخص به صورت یک مقدار عددی ذخیره شده و آدرس وی در قالب حروف الفبا (alpha-numeric) داخل حافظه ذخیره می شود. پایتون دارای نوع داده های متعددی است که عملیات ممکن بر روی آن ها و روش های ذخیره ویژه ی هر یک را تعریف می کند.

در کل زبان پایتون از نوع داده های زیر پشتیبانی می کند:

۱٫ نوع عددی

۲٫ نوع رشته ای

۳٫ لیست

۴٫ tuple (نوع داده ی چندتایی)

۵٫ Dictionary

اعداد یا نوع عددی در پایتون

نوع داده های عددی قادرند مقادیر عددی در خود نگه دارند. اشیا number زمانی ایجاد می شوند که مقداری را به آن تخصیص دهید. برای مثال:

var1 = 1

var2 = 10

می توانید ارجاع (reference) به یک شی عددی را با استفاده از دستور del پاک کنید. نحوه ی نگارش این دستور به شکل زیر است:

del var1[,var2[,var3[….,varN]]]]

می توانید با استفاده از دستور del یک یا چند شی را حذف کنید. مثال:

del var

del var_a, var_b

پایتون نوع های عددی زیر را پشتیبانی می کند:

۱٫ int (اعداد صحیح علامت دار)

۲٫ long (اعداد صحیح بسیار بزرگ یا long integers، آن ها را می توان به صورت شانزده شانزدهی و هشت هشتی نمایش داد)

۳٫ float (مقادیر حقیقی میمز شناور)

۴٫ complex (اعداد مختلط)

مثال:

int

long

float

complex

۱۰

۵۱۹۲۴۳۶۱L

۰٫۰

۳٫۱۴j

۱۰۰

-۰x19323L

۱۵٫۲۰

۴۵٫j

-۷۸۶

۰۱۲۲L

-۲۱٫۹

۹٫۳۲۲e-36j

۰۸۰

۰xDEFABCECBDAECBFBAEl

۳۲٫۳+e18

.۸۷۶j

-۰۴۹۰

۵۳۵۶۳۳۶۲۹۸۴۳L

-۹۰٫

-.۶۵۴۵+۰J

-۰x260

-۰۵۲۳۱۸۱۷۲۷۳۵L

-۳۲٫۵۴e100

۳e+26J

۰x69

-۴۷۲۱۸۸۵۲۹۸۵۲۹L

۷۰٫۲-E12

۴٫۵۳e-7j

۱٫ پایتون به شما اجازه می دهد برای مشخص کردن نوع عددی Long از l کوچک استفاده کنید، اما برای اینکه آن l با عدد ۱ اشتباه گرفته نشود، توصیه می کنیم از L بزرگ استفاده کنید. بنابراین پایتون اعداد صحیح بسیار بزرگ را با L بزرگ نمایش می دهد.

۲٫ یک عدد مختلط متشکل است از دو عدد ممیز شناور حقیقی و یک بخش که یکه ی موهومی نام دارد. برای مثال در x + yj، x و y اعداد حقیقی هستند و j نشانگر واحد یا یکه ی موهومی (imaginary) می باشد.

رشته ها در پایتون

رشته ها در پایتون عبارت است از مجموعه کاراکترهای همجوار که در علامت نقل و قول نمایش داده می شوند. پایتون از هر دو شکل تک کوتیشن و دابل کوتیشن پشتیبانی می کند. می توان با بهره گیری از عملگر برش یا slice operator ([ ] [:] ) که اندیس آن در آغاز رشته با اندیس ۰ شروع شده و تا ۱- در انتها ادامه می یابد، بخش هایی از یک رشته را استخراج کرد.

علامت (+) یک عملگر اتصال است که دو رشته را به هم پیوند می دهد. علامت * درواقع یک repetition operator است که دستوری را تکرار می کند (برای مثال یک رشته را دوبار چاپ می نمایند).

#!/usr/bin/python

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

نوع داده ای List در پایتون

از میان نوع های داده ای پایتون، List ها تطبیق پذیرترین نوع داده ای هستند، بدین معنا که برای منظورهای مختلف می توان از آن ها بهره گرفت. یک لیست شامل مجموعه ای از آیتم ها است که توسط ویرگول از هم جدا شده و داخل [] محصور می شوند. تا حدی می توان گفت که List شبیه به نوع داده ای آرایه در زبان C است. یک تفاوت اساسی بین آرایه و لیست این است که آیتم های موجود در لیست می توانند از نوع داده های مختلف باشند (از نظر نوع با هم متفاوت باشند).

مقادیر ذخیره شده در یک لیست را می توان با استفاده از عملگر برش ([ ] [:]) از طریق اندیس که از در ابتدای لیست ار صفر آغاز شده و تا ۱- در انتهای لیست ادامه می یابد، مورد دسترسی قرار داد. علامت + به عنوان یک عملگر اتصال نقش ایفا کرده و عملگر * نیز صرفا یک دستور را تکرار می کند. مثال :

#!/usr/bin/python

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

[۷۸۶, ۲٫۲۳]

[۲٫۲۳, ‘john’, 70.200000000000003]

[۱۲۳, ‘john’, 123, ‘john’]

[‘abcd’, 786, 2.23, ‘john’, 70.200000000000003, 123, ‘john’]

نوع داده ای Tuple در پایتون

Tuple نیز یک نوع داده ای متشکل از رشته یا مجموعه ای از آیتم هاست که مشابه نوع داده ای List می باشد. یک Tuple تعدادی مقادیر را در خوش دارد که این مقادیر توسط ویرگول از هم جدا می شوند. اما برخلاف List، نوع داده ای Tuple داخل پرانتز محصور می شود.

بین نوع داده ای مذکور تفاوت هایی وجود دارد: در List مقادیر درون [] جای می گیرند، در حالی که این مقادر در tuple داخل پرانتز محصور می شوند. تفاوت دیگر این است که المان های List و اندازه ی آن را می توان اصلاح نمود ولی این امکان برای tuple وجود ندارد. می توان به tuple به چشم list های فقط خواندنی (read-only) نیز نگریست. مثال :

#!/usr/bin/python

tuple = ( ‘abcd’, 786 , 2.23, ‘john’, 70.2 )

tinytuple = (123, ‘john’)

print tuple # Prints complete list

print tuple[0] # Prints first element of the list

print tuple[1:3] # Prints elements starting from 2nd till 3rd

print tuple[2:] # Prints elements starting from 3rd element

print tinytuple * 2 # Prints list two times

print tuple + tinytuple # Prints concatenated lists

نتیجه ی زیر حاصل می گردد:

(‘abcd’, 786, 2.23, ‘john’, 70.200000000000003)

abcd

(۷۸۶, ۲٫۲۳)

(۲٫۲۳, ‘john’, 70.200000000000003)

(۱۲۳, ‘john’, 123, ‘john’)

(‘abcd’, 786, 2.23, ‘john’, 70.200000000000003, 123, ‘john’)

کد زیر از آنجایی که سعی می کند المان های tuple را بروز رسانی کند، مجاز و معتبر نیست. اما همین عملیات را می توان بر روی List پیاده کرد:

#!/usr/bin/python

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

نوع داده ای Dictionary

Dictionary در پایتون تا حدی شبیه به جداول hash (hash table type) هستند. این نوع داده ای علمکردی مشابه آرایه های شرکت پذیر -associative array – یا hash ها در Perl دارند و از جفت های کلید مقدار (key-value pairs) تشکیل می شوند. کلید می تواند از هر نوعی باشد، با این وجود اغلب از نوع اعداد و رشته ها هستند. اما مقادیر، می توانند از هر شی دلبخواه و اختیاری در پایتون باشند.

آیتم های Dictionary داخل {} محصور می شوند. جهت دسترسی و استخراج مقادیری از dictionary می بایست از [] استفاده کرد. مثال :

#!/usr/bin/python

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

{‘dept’: ‘sales’, ‘code’: 6734, ‘name’: ‘john’}

[‘dept’, ‘code’, ‘name’]

[‘sales’, 6734, ‘john’]

در Dictionary، المان ها دارای ترتیب یا order مشخصی نیستند.

تبدیل نوع داده ای

گاهی لازم است بین نوع داده های درون ساخته یا توکار پایتون، عملیات تبدیل انجام داد و نوعی را به نوع دیگر تبدیل نمود. کافی است اسم نوع را به عنوان تابع بکار ببرید.

توابع توکار متعددی در پایتون وجود دارد که عملیات تبدیل از نوعی به نوع دیگر را انجام می دهد. این توابع شی جدیدی باز می گرداند که نشانگر مقدار تبدیل شده می باشد.

تابع

شرح

int(x [,base])

X را به عدد صحیح integer تبدیل می کند.

long(x [,base] )

X را به یک عدد صحیح بزرگ long integer تبدیل می کند.

float(x)

X را به یک عدد ممیز شناور تبدیل می کند.

complex(real [,imag])

یک عدد مختلط ایجاد می کند.

str(x)

شی x را به صورت یک رشته نمایش می دهد.

repr(x)

شی x را به یک expression string تبدیل می نماید.

eval(str)

یک رشته را ارزیابی کرده و یک شی به عنوان خروجی برمی گرداند.

tuple(s)

به نوع tuple تبدیل می کند.

list(s)

به نوع داده ای list تبدیل می کند.

set(s)

به یک set (مجموعه) تبدیل می کند.

dict(d)

یک dictionary ایجاد می کند. d بایستی یک مجموعه ی پست سرهم یا دنباله ای از tuple ها (به صورت جفت کلید، مقدار) باشد.

frozenset(s)

S را به یک مجموعه ی ثابت یا ایستا (frozen set) تبدیل می کند.

chr(x)

یک integer را به کاراکتر تبدیل می کند.

unichr(x)

یک integer را به کاراکتر یونیکد تبدیل می کند.

ord(x)

یک تک کاراکتر را به معادل یا مقدار عدد صحیح (integer) آن تبدیل می کند.

hex(x)

یک عدد صحیح را به رشته ی شانزده شانزدهی تبدیل می کند.

oct(x)

یک عدد صحیح را به رشته ی هشت هشتی تبدیل می کند.