پایتون برای همه | 31 | آبجکت و متد

پایتون برای همه پایتون 3

عملگر in

کلمه‌ی in یک عملگر بولی است که دو رشته را می‌گیرد و True را اگر رشته‌ی اول به عنوان قسمتی از رشته‌ی دوم باشد، برمی‌گرداند.

>>> 'a' in 'banana'
True
>>> 'seed' in 'banana'
False

مقایسه رشته

عملگرهای مقایسه بر روی رشته‌ها نیز عمل می‌کنند. اگر می‌خواهید ببینید که دو رشته با هم برابرند:

if word == 'banana':
    print('All right, bananas.')

بقیه‌ی عملگرهای مقایسه برای مرتب کردن کلمات بر اساس الفبا می‌توانند کمک بزرگی به شما باشند:

if word < 'banana':
    print('Your word,' + word + ', comes before banana.')
elif word > 'banana':
    print('Your word,' + word + ', comes after banana.')
else:
    print('All right, bananas.')

رفتار مردم در مقایسه با پایتون در خصوص حروف بزرگ و کوچک متفاوت است. در پایتون تمام حروف بزرگ پیش از تمام حروف کوچک می‌آید:

Your word, Pineapple, comes before banana.

یک راه‌حل رایج برای این مساله استفاده از قالب استاندارد است. مثلا می‌توانید تمام حروف را به حروف کوچک تبدیل کنید و سپس عملیات را بر روی آن انجام دهید.

متدهای رشته (string)

رشته‌ها یک مثال از آبجکت‌های پایتون به شمار می‌روند. یک آبجکت (شئ) شامل داده و متدها می‌شود. متد، توابعی است که در آبجکت به صورت توکاری‌شده قرار داده شده‌اند و برای تمام نمونه‌های آن آبجکت در دسترسند.

پایتون یک تابعی با نام dir دارد که لیست متدهای موجود در یک آبجکت را به نمایش می‌گذارد. تابع type نوع یک آبجکت را نشان می‌‌دهد و تابع dir متدهای موجود در آن آبجکت را.

>>> stuff = 'Hello world'
>>> type(stuff)
<class 'str'>
>>> dir(stuff)
['capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit',
'isidentifier', 'islower', 'isnumeric', 'isprintable',
'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower',
'lstrip', 'maketrans', 'partition', 'replace', 'rfind',
'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip',
'split', 'splitlines', 'startswith', 'strip', 'swapcase',
'title', 'translate', 'upper', 'zfill']
>>> help(str.capitalize)
Help on method_descriptor:

capitalize(...)
    S.capitalize() -> str

    Return a capitalized version of S, i.e. make the first character
    have upper case and the rest lower case.
>>>

تابع dir لیست متدها را نشان می‌دهد و در کنارش تابع help اطلاعات و اسناد ساده‌ای از یک متد را به نمایش می‌گذارد. اطلاعات بهتر از متدهای رشته را می‌توانید از اینجا بخونید:

لینک سند

فراخوانی یک متد، به مانند فراخوانی یک تابع است، یعنی متد هم آرگیومنت را می‌گیرد و مقداری را برمی‌گرداند؛ ولی متنِ این فراخوانی متفاوت است. برای فراخوانی متد، نامِ آن را به نام متغیر با یک نقطه بینشان می‌چسبانیم.

به عنوان مثال متد upper یک رشته را می‌گیرد و رشته‌ای جدید که تمام حروفش بزرگ است را برمی‌گرداند.

به جای استفاده از متن تابع که به صورت upper(word)‎ است، ما از متن مخصوص متد یعنی word.upper()‎ استفاده می‌کنیم.

>>> word = 'banana'
>>> new_word = word.upper()
>>> print(new_word)
BANANA

این قالب که به آن «نمادِ نقطه» می‌گوییم، نام متد، upper، و نام رشته را مشخص کرده و متد را بر روی آن (در مثال ما متغیر word) اعمال می‌کند. پرانتزهای خالی به این معنی‌ست که این متد هیچ آرگیومنتی را دریافت نمی‌کند.

فراخوانی یک متد، invocation یا «احضار» خوانده می‌شود. در این مثال، ما می‌گوییم که upper را بر روی word احضار کردیم.

برای مثال، یک متد رشته به اسم find وجود دارد که جایگاه یک رشته را در یک رشته‌ی دیگر جستجو می‌کند:

>>> word = 'banana'
>>> index = word.find('a')
>>> print(index)
1

در این نمونه، ما find را بر روی word احضار کرده و حرفی که در پی آن بودیم را به صورت پارامتر برایش فرستادیم.

متد find قادر به پیدا کردنِ زیررشته‌ها به مانند کاراکترهاست:

>>> word.find('na')
2

این متد می‌تواند آرگیومنت دوم را نیز دریافت کرده تا بداند که جستجو را از چه مکانی شروع کند:

>>> word.find('na', 3)
4

یک کار شایع و رایج از بین بردن فاصله‌های خالی (فاصله یا tab یا خطوط جدید) از ابتدا و انتهای یک رشته با استفاده از متد strip است:

>>> line = '  Here we go  '
>>> line.strip()
'Here we go'

برخی متدها مثل startswith مقدارهای بولی را برمی‌گردانند:

>>> line = 'Have a nice day'
>>> line.startswith('Have')
True
>>> line.startswith('h')
False

خواهید فهمید که متد startswith به بزرگی و کوچکی حروف حساس است، به همین خاطر شاید بد نباشد که کل یک خط را گرفته و حروفش را به حروف کوچک تبدیل کرده و سپس بررسی را بر روی آن انجام دهید:

>>> line = 'Have a nice day'
>>> line.startswith('h')
False
>>> line.lower()
'have a nice day'
>>> line.lower().startswith('h')
True

در مثال آخر، متد lower احضار شده و سپس از متد startswith استفاده کرده‌ایم. به این صورت متد startswith بر روی رشته‌ی جدید که تمام حروفش کوچک است عملیات را انجام می‌دهد. اگر مراقب ترتیبِ متدها باشید، حتی می‌توانید چند متد را به صورت ترکیبی در تنها یک عبارت احضار کنید:

>>> line = 'Have a nice day'
>>> line.startswith('h')
False
>>> line.lower().startswith('h')
True
>>> 

تمرین ۴: یک متد رشته‌ به نام count وجود دارد که شبیه به تابعی که در مثال قبل نوشتیم عمل می‌کند. اسناد مرتبط با این متد را از لینک زیر بخوانید و سپس یک احضاریه بنویسد که تعداد تکرارِ حرف a در banana را برگرداند.

لینک سند

این نوشته تحت مجوز کرییتیو کامنز BY – NC و حمایت موسسه تحقیقاتی رامونا ارائه می‌شود. شما می‌توانید با توجه به مفاد این گواهی از آن استفاده کنید.

مقاله را پسندیدید؟ در صورتی که پاسخ‌تان مثبت است، می‌توانید مقاله‌ای که خواندید را به مبلغ ۱۵۰۰ تومان با فشار دادن دکمه زیر بخرید. توجه کنید که ۱۵۰۰ تومان بهای مقاله‌ای است که اکنون خواندید اما به نشان قدردانی از شمایی که مقاله را بعد از خواندن، می‌خرید، به صفحه‌ای از وب‌سایت ایلولا هدایت خواهید شد و مقاله‌های ویژه به صورت فایل PDF در دسترس شما قرار خواهد گرفت. اگر متوجه منظورم نشدید، خواهش می‌کنم مقاله را نخرید چرا که به نظر می‌رسد ما زبان هم را نمی‌فهمیم.

پرداخت شما از طریق سایت امن زرین‌پال به سایت شاپرک (زیر نظر بانک مرکزی) هدایت خواهد شد و امنیت اطلاعات شما - در صورت رعایت نکاتی که در درگاه پرداخت ذکر شده - تضمین شده است. به عنوان راه جایگزین می‌توانید پرداخت را از طریق شماره شبا IR570560080388802621820001 به نام ایمان امینی انجام دهید و رسید را به ایمیل eman.amini روی gmail.com ارسال کنید تا دسترسی به صفحه مذکور به شما اعطا شود.

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

Whatsapp Telegram
Email Facebook Google Twitter

اولین نفری باشید که نظر می‌گذارد

پاسخ دهید

ایمیل شما نمایش داده نخواهد شد