جشنواره فطر سون لرن

آموزش مقدماتی پایتون - قسمت دوم

دسته بندی: جاوا
زمان مطالعه: 10 دقیقه
۲۴ اسفند ۱۳۹۸

پایتون به عنوان زبان برنامه‌ نویسی نسل جدید جایگاه ویژه‌ای در بین برنامه‌ نویسان پیدا کرده است و متناسب با آن فرصت‌های شغلی قابل ملاحظه‌ای برای برنامه‌ نویسان پایتون فراهم کرده است. در ادامه‌ی مقاله‌ی قبلی آشنایی کلی با پایتون-قسمت اول، در این مقاله به دلایل افزایش محبوبیت این زبان و برخی ویژگی‌های آن پرداخته شده است. مقایسه‌ای اجمالی بین پایتون و جاوا برای افرادی که در شروع یاد‌گیری زبان برنامه‌ نویسی، بین این دو زبان دچار تردید هستند، مفید است. از آن‌جاییکه این زبان دارای دو نسخه‌ی ۲ و ۳ است، برخی از عزیزان که به تازگی قصد یادگیری پایتون را دارند دچار سردرگمی هستند که کدام نسخه مناسب است. در این مقاله با ما باشید.

فهرست محتوای این مقاله

دلیل افزایش محبوبیت پایتون:

پایتون که توسط Guido Van Rossum در GWI طراحی شده است، به عنوان یک زبان برنامه‌ نویسی چند منظوره و سطح بالا دارای ویژگی‌هایی است که آن را از سایر زبان‌های برنامه‌ نویسی متمایز کرده است. در زیر به‌ برخی از موارد اشاره شده است:

  • تاکید بر خوانایی کد، کدهای کوتاه‌تر، سهولت در نوشتن
  • برنامه‌ نویسان می‌توانند در مقایسه با زبان‌هایی مانند Java و C++، مفاهیم منطقی را در کمترین خطوط کد بیان کنند.
  • پایتون از کلیه‌ی پارادیم‌های برنامه‌ نویسی رویه‌ای، شی‌گرایی، تابعی پشتیبانی می‌کند.
  • در این زبان، تقریبا برای همه‌ی مفاهیم متداول، توابع داخلی وجود دارد.
  • فلسفه‌ی پایتون بر "سادگی بهترین است" استوار شده است.

ویژگی‌های زبان پایتون

پایتون دارای ویژگی‌هایی است که در زیر به طور اختصار به آن اشاره شده است:

  • مفسری
    • مراحل کامپایل و اجرای جداگانه‌ای مانند C و C++ وجود ندارد.
    • برنامه را به طور مستقیم از کد منبع اجرا ‌کنید.
    • پایتون برای اجرای کد منبع، آن را به یک فرم واسطه به نام بایت‌ کد تبدیل می‌کند، سپس به زبان ماشین ترجمه می‌شود.
    • نیازی به نگرانی درمورد اتصال و بارگیری با کتابخانه‌ها و غیره نیست.
  • مستقل از پلتفرم
    • برنامه‌های آن را می‌توان در سیستم‌ عامل‌های مختلف توسعه داد و اجرا کرد.
    • این زبان را می‌توان در لینوکس، ویندوز، مکینتاش، سولاریس و موارد دیگر استفاده کرد.
  • رایگان، متن‌باز و قابلیت توزیع مجدد دارد.
  • زبان سطح بالا
    • در این زبان، نیازی به در نظر گرفتن جزییات اجرا در سطح پایین مانند مدیریت حافظه نداریم.
  • ساده
    • از آنجایی‌که نحوه‌ی نگارشی پایتون به زبان انگلیسی نزدیک است، بنابراین یادگیری آن بسیار ساده است.
    • این زبان بر حل مسئله تاکید بسیار دارد تا نحوه‌ی نوشتاری
  • قابلیت درون‌ برنامه‌ای
    • پایتون را می‌توان در داخل کدهای برنامه‌ی C و C++ استفاده کرد، بدین‌ ترتیب قابلیت اسکریپت‌ نویسی پایتون در داخل C‌ و C++‌ به برنامه‌ نویسان داده شده است.
  • قدرتمند
    • دارای ویژگی مدیریت استثنا‌ها
    • دارای مدیریت حافظه‌ی داخلی
  • پشتیبانی از کتابخانه‌های غنی
    • این زبان دارای کتابخانه‌ی استاندارد بسیار گسترده‌ای است.
    • پایتون قادر است که در انجام برخی کارها شامل عبارات منظم (regular expressions)، تولید مستندات (documentation generation)، واحد‌های تست (unit testing)، پایگاه‌های داده (databases)، چند-نخی (multi-threading)، مرورگرهای وب (web browsers)، CGI، email، XML، HTML، WAV files، رمزنگاری (cryptography)، GUI و بسیاری موارد دیگر به برنامه‌ نویسان کمک شایان و قابل ملاحظه‌ای کند.
    • پایتون علاوه بر کتابخانه‌ی استاندارد، دارای کتابخانه‌های متنوع و قدرتمند بسیاری است که از آن جمله می‌توان به Python Imaging Library که یک کتابخانه‌ی عالی و شگفت‌انگیز در زمینه‌ی پردازش تصویر است. اشاره کرد.

پایتون در برابر جاوا

تفاوت‌های پایتون و جاوا

 

جاوا پایتون
  • زبان برنامه‌ نویسی استاتیک است.
  • نیاز به اعلان متغیر قبل از استفاده دارد.
  • نسبت دادن یک شی با نوع اشتباه به یک متغیر  محرک استثنا‌ است و خطا ایجاد می‌کند.
  • در استفاده از اشیا نیاز به تبدیل نوع یا کست کردن دارد.
  • زبان برنامه‌ نویسی پویا است.
  • نیازی به اعلان متغیرها قبل از استفاده نیست.
  • در یک عبارت جایگزینی یک شی به یک نام از نوع شی پیوند زده شده و آن شی می‌تواند از هر نوعی باشد.
  • در استفاده از اشیاء نیاز به تبدیل نوع یا کست کردن ندارد.
  • کدنویسی آن شامل تعداد کلمات زیادی است.
  • کد نویسی آن شامل تعداد کلمات بسیار کمی است.
  • کدنویسی آن کمتر جمع‌وجور است.
  • کد نویسی آن به شدت جمع‌وجور است.
  • از آکولاد برای ساختار کد استفاده می‌کند.
  • از تورفتگی برای ساختار کد استفاده می‌کند.

 

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

کد جاوا:

public class HelloWorld

{

public static void main (String[] args)

{

System.out.println("Hello, world!");

}

}

کد پایتون:

print "Hello, world!"  # python 2

print ("Hello, world!") # Python version 3

 

شباهت‌های‌ پایتون و جاوا

  • هر دو برای اجرا نیازمند به بستر اجرا هستند. ( بستر اجرای Python/JVM)
  • هر دو قابلیت کامپایل شدن به یک فایل اجرایی دارند که در این صورت مستقل از بستر اجرا خواهند بود.

پایتون۲ و ۳

پایتون دارای دو نسخه به نام Python2 و Python3 است. اکثر افرادی که قصد یادگیری زبان پایتون را دارند دچار سردرگمی می‌شوند که بالاخره کدام نسخه را باید یاد گرفت. ما پیشنهاد می‌کنیم که پایتون ۳ را شروع کنید و در ادامه به تفاوت‌های این دو نسخه نیز پرداخته خواهد شد.

نرم‌افزارهایی که با پایتون ساخته شده‌اند

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

  1. GNU Debugger از این زبان به عنوان یک چاپ‌گر زیبا برای نمایش ساختارهای پیچیده مانند C++ مورد استفاده قرار می‌گیرد.
  2. هم چنین، از این زبان در هوش مصنوعی (artificial intelligence) استفاده شده است.
  3. پایتون اغلب به عنوان پردازشگر زبان‌های طبیعی (natural language) مورد استفاده قرار می‌گیرد.

برنامه‌های کاربردی پایتون

  1. تعدادی از توزیع‌های لینوکس از نصب‌کننده‌های نوشته شده در پایتون استفاده می‌کنند برای مثال در ابونتو نصب‌کنند‌ه‌ی Ubiquity با این زبان نوشته شده است.
  2. این زبان به طور گسترده‌ای در توسعه‌ی صنعت امنیت اطلاعات، استفاده‌ی فراوان دارد.
  3. برد کامپیوتری رزبری‌پای (Raspberry Pi)، از پایتون به عنوان طراحی نرم‌افزار کاربردی استفاده شده است.
  4. در حال حاضر از این زبان، در توسعه‌ی باز‌ی‌های کامپیوتری به طور وسیعی استفاده می‌شود.

نقاط مثبت:

  1. استفاده‌ی راحت
  2. رویکرد چند-پارادیمی

نقاط منفی:

  1. سرعت اجرای آن در مقایسه با C و C++ کمتر است.
  2. در رایانش موبایل (mobile computing) و مرورگرها حضور ندارد.
  3. برای برنامه‌ نویسانی که از C و C++ به پایتون وارد می‌شوند، می‌تواند آزار دهنده باشد زیرا این زبان نیاز به تورفتگی مناسب کد دارد. بعضی نام‌های متغیر مانند sum که معمولا استفاده می‌شوند، در پایتون تابع هستند، بنابراین برنامه‌ نویسان C و C++ باید به این موارد توجه داشته باشند.

فرصت‌های شغلی

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

تفاوت‌های مهم دو نسخه‌ی پایتون ۲ و پایتون ۳

تفاوت‌های کلیدی و مهم بین دو نسخه‌ی پایتون۲ و ۳ در موارد زیر خلاصه می‌شود:

  • عملگر تقسیم
  • تابع print
  • یونیکد ()
  • xrange
  • استفاده از خطا
  • ماژول _future_

عملگر تقسیم

اگر ما کدی را که با پایتون ۳ نوشته‌ایم را در پایتون ۲ اجرا کنیم قطعا، اشتباه زیادی داشته و برنامه‌ی ما نتایج نادرستی را می‌دهد. عملگر تقسیم عدد صحیح در این دو نسخه می‌تواند خطای موثری در خروجی برنامه ایجاد کند. تفاوت خروجی بین این دو نسخه را در عملگر تقسیم مشاهده کنید:

پایتون ۲:

#python 2

print 7 / 5

print -7 / 5

خروجی پایتون ۲:

1

-2

پایتون ۳:

# python 3

print (7 / 5)

print (-7 / 5)

خروجی پایتون ۳

1.4

-1.4

برای به دست آوردن نتیجه‌ی مورد انتظار در پایتون 2، یکی از مقادیر را به صورت اعشاری، مانند 5 / 7.0 یا  5.0 / 7 می‌نویسیم.

 

تابع print()

مشهورترین تفاوت بین دو نسخه‌ی پایتون۲ و ۳ پرینت است. در پایتون۲ پرینت یک کلمه‌ی کلیدی است ولی در پایتون ۳ یک تابع است. در پایتون 2 وقتی یک فضای خالی (space) بعد از کلمه کلیدی print اضافه می‌شود، این فضای خالی نقش پرانتز را دارد و مفسر پایتون۲ آن را به عنوان یک عبارت ارزیابی می‌کند:

print 'Hello, 7learn'      # Python 3.x doesn't support 

خروجی

Hello, 7learn

در پایتون۳:

print ('Hope You like these facts')

خروجی

Hope You like these facts

دقت کنید اگر در پایتون ۲ پرانتز در فرمان print استفاده شود خطایی ایجاد نمی‌کند ولی عدم استفاده از پرانتز در پایتون 3 منجر به بروز خطای نحوی یا syntax error می‌شود.

یونیکد (Unicode)

در پایتون 2، نوع ضمنی رشته ASCII است و در پایتون 3، Unicode است.




print (type ('default string '))

print (type (b'string with b '))

'''

Output in Python 2.x (Bytes is same as str)

<type 'str'>

<type 'str'>

Output in Python 3.x (Bytes and str are different)

<class 'str'>

<class 'bytes'>

'''

در پایتون۲، بایت‌ها مشابه str هستند و در پایتون۳،‌ این دو با هم متفاوت هستند.

پایتون۲ نیز از یونیکدها پشتیبانی می‌کند.

print(type('default string '))

print(type(u'string with b '))

'''

Output in Python 2.x (Unicode and str are different)

<type 'str'>

<type 'unicode'>

Output in Python 3.x (Unicode and str are same)

<class 'str'>

<class 'str'>

'''

در پایتون۲، یونیکد و str متفاوت هستند و در پایتون۳، یکسان می‌باشند.

xrange

یکی دیگر از تفاوت‌های بین پایتون۲ و ۳ تابع xrange() است. این تابع در پایتون 2 وجود دارد ولی در پایتون۳ تابع range() که یک لیست را بازمی‌گرداند تعریف شده است. برای مثال، range(3) در پایتون۳ لیست [0,1,2] برمی‌گرداند. اما در پایتون۲ xrange یک شی از نوع xrange را برمی‌گرداند برای مثال، xrange(3) یک شی تکرار‌پذیری که مشابه تکرارپذیرهای جاوا کار می‌کند را برمی‌گرداند.

در پایتون۳، اگر ما در بخشی از برنامه نیاز به تکرار معین داشته باشیم از تابع range() استفاده می‌شود. زیرا، این تابع یک لیست استاتیک را برمی‌گرداند. اما، در پایتون ۲ دنباله در هر دفعه توسط تابع xrange() بازسازی می‌شود. تابع xrange() از برش‌ها و سایر متدهای مربوط به لیست پشتیبانی نمی‌کند، اما، مزیت xrange() این است که در تکرارهای بزرگ حافظه‌ی کمی را اشغال می‌کند.

تابع range() در پایتون 3 همان عملکردی را دارد که تابع xrange‌ در پایتون۲ دارد. همچنین برای اینکه کد ما قابل حمل (portable) باشد، ممکن است بخواهیم به جای آن، از range استفاده کنیم، بنابراین تابع range پایتون 3، همان تابع xrange پایتون 2 است. برای درک بهتر، مثال زیر را مشاهده کنید:

for x in xrange(1, 5):

print(x),

for x in range (1, 5):

print(x),

'''

Output in Python 2.x

1 2 3 4 1 2 3 4

Output in Python 3.x

NameError: name 'xrange' is not defined

'''

همان‌طور که مشاهده می‌شود در پایتون۳ تابع xrange تعریف نشده است.

مدیریت خطا

یکی دیگر از تفاوت‌های بین این دو نسخه از پایتون مدیریت خطا‌ها یا exception handling می‌باشد. در پایتون 3 از کلمه‌ی کلیدی "as" در بخش exception الزامی است.

try:

trying_to_check_error

except NameError, err:

print err, 'Error Caused' # Would not work in Python 3.x

'''

Output in Python 2.x:

name 'trying_to_check_error' is not defined Error Caused

Output in Python 3.x :

File "a.py", line 3

except NameError, err:

SyntaxError: invalid syntax

'''

در پایتون۳، از کلمه‌ی کلیدی as استفاده شده است:


try:

trying_to_check_error

except NameError as err: # 'as' is needed in Python 3.x

print (err, 'Error Caused')

'''

Output in Python 2.x:

(NameError("name 'trying_to_check_error' is not defined",), 'Error Caused')

Output in Python 3.x :

name 'trying_to_check_error' is not defined Error Caused

'''

ماژول _future_

در واقع این ماژول تفاوت بین دو نسخه نیست، بلکه ماژول مفیدی است که از آن می‌توان برای مهاجرت از پایتون۲ به ۳ استفاده کرد. اگر تصمیم دارید کد پایتون 2 از پایتون 3 پشتیبانی کند، از این ماژول در کد خود استفاده کنید. برای روشن شدن موضوع اگر از این ماژول در کد پایتون ۲ استفاده شود تقسیم عدد صحیح مطابق با استاندارد پایتون۳ انجام می‌گیرد:

# In below python 2.x code, division works

# same as Python 3.x because we use __future__

from __future__ import division

print 7 / 5

print -7 / 5

خروجی این کد

1.4

-1.4

اگر بخواهیم در پایتون ۲، پرینت را با پرانتز مشابه با پایتون۳ به‌کار ببریم به صورت زیر عمل می‌کنیم:

from __future__ import print_function

print('Hello 7learn.')

برای کسب اطلاعات بیشتر درمورد ماژول _future_ به این صفحه مراجعه کنید.

نتیجه‌گیری

در این مقاله سعی کردیم شما را با ویژگی‎های زبان پایتون از جمله سادگی، قدرتمندی، مفسری، رایگان و متن‌باز بودن و موارد دیگر آشنا کنیم و از دلایل محبوبیت روزافزون این زبان نوشتیم. در ادامه پایتون را با جاوا مقایسه کرده و تفاوت‌ها و شباهت‌های هر دو زبان را با نمونه کد، بررسی کردیم. از کاربردهای متنوع پایتون در تکنولوژی‌ و علوم مختلف، نرم‌افزارهای نوشته شده با این زبان، نقاط مثبت و منفی این زبان و فرصت‌های شغلی آن آشنا شدیم. فهمیدیم که پایتون دارای دو نسخه‌ی 2 و 3 است و به طور اجمالی مهم‌ترین تفاوت‌های این دو نسخه را با هم بررسی کردیم. در پایان با این تفسیرها، نظر شما درمورد برنامه‌ نویسی پایتون و جاوا چیست؟

در مقاله‌ی بعدی کلمات کلیدی و نیز فضای نام و دامنه را در پایتون بررسی خواهیم کرد. منتظر آموزش بعدی ما باشید.

چه امتیازی به این مقاله می دید؟
نویسنده عبدالرضا مولایی
هیچوقت برای یادگیری دیر نیست؛ همیشه چیزهای جدید برای آموختن وجود دارد.. این دو جمله، همیشه آویزه‌ی گوش منه، چون باعث میشه از یادگیری چیزهای تازه هراسی نداشته باشم.

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :