Arvanttt

تند و سریع

Arvant

تند و سریع












پایتون در 10 دقیقه

دوشنبه, ۲۰ خرداد ۱۳۹۲، ۰۸:۱۴ ب.ظ

مقدمه مترجم :

پایتون در 10 دقیقه عنوان مطلبیه که دوست داشتم ترجمه کنم .تو این دوره زمانه که میشه تو 21 روز هر زبان برنامه نویسی رو یاد گرفت صد البته که پایتون خوش خط و خال  با اون سادگی که داره 10 دقیقه هم از سرش زیاده :) 

البته ناگفته نماند که برنامه نویس واقعی شدن زمان زیادی میبره و مایی که فقط سینتکس یه زبان برنامه نویسی رو یاد می گیریم و بعدش ادعای برنامه نویسی داریم رو برنامه نویس نمیگن .هنر برنامه نویس توی حل مسئله است .

در این مقاله هم فرض بر اینه که شما برنامه نویسی رو بلدی و اینجا فقط یه راهنمای کلی در باره زبان برنامه نویسی پایتونه.

منبع

 

 

خصوصیات :

پایتون یک زبان 

strongly typed : یعنی اینکه هر متغیر دارای یک نوع  خاص می باشد و شما نمی توانید روی دادهای غیر هم نوع عملیات خاصی انجام دهید به طور مثال 3+ "4" باعث خطا می شود.

dynamic type:  شما یک متغیر را هر وقت که نیاز داشتید با یک رشته و دفعه بعد با یک داده عددی مقدار دهی می کنید و نوع متغیر به صورت اتوماتیک تغیر خواهد کرد.

case sensitive و شی گرا است.

به راهنمای نیاز دارید؟

help در مفسر پایتون همیشه دم دست حاظر است .شما هر وقت که نیاز داشتید بدانید که یک شی چه کاربردی دارد کافی است تایپ کنید(< help(<object

dir که تمام متد های یک شی را برای شما نمایش می دهد(< dir(<object

__doc__. در صورتی که برای کلاس توضیحاتی تعریف شده باشد شما می توانید این توضیحات را مشاهده نماید

 <object>.__doc__

مثال :

 

 

>>> help(5)
Help on int object:
(etc etc)

>>> dir(5)
['__abs__', '__add__', ...]

>>> abs.__doc__
'abs(number) -> number

Return the absolute value of the argument.'
سینتکس:
پایتون دارای هیچ علامت خاصی برای شروع یا خاتمه یک بلاک کد نیست .شما باید از تورفتگی برای شروع یک بلاک و خروج از تو رفتگی برای پایان دادن به بلاک کد استفاده کنید. دستوراتی که نیاز به بلاک کد دارند با علامت (:) در انتها پایان می پذیرند.برای توضیحات از علامت ( # ) به صورت تک خط و برای چند خط توضیحات از علامت (""") که برای رشته های چند خطی نیز استفاده می شود برای توضیحاتی که از یک خط بیشتر هستند استفاده می شود.
برای انتصاب از علامت ( =) و برای آزمون برابری از علامت (==) استفاده می شود.همچنین برای کاهش و افزایش واحد به یک متغیر باید از عملگر های ( =+) و (=-) استفاده می شود .که اکثر این توضیحات برای رشته ها نیز صدق می کند.
مثال :
 
>>> myvar = 3
>>> myvar += 2
>>> myvar
5
>>> myvar -= 1
>>> myvar
4
"""This is a multiline comment.
The following lines concatenate the two strings."""
>>> mystring = "Hello"
>>> mystring += " world."
>>> print mystring
Hello world.
# This swaps the variables in one line(!).
# It doesn't violate strong typing because values aren't
# actually being assigned, but new objects are bound to
# the old names.

ساختمان داده :
ساختمان داده ها در پایتون عبارت اند از list و tuplesوdectionary .همچینن نوع داده Set هم از طریق کتاب خانه setدر پایتون قابل استفاده است که از نسخه python 2.5 به بالاتر به صورت توکار در پایتون قابل دسترسی است.
list شبیه یک آرایه یک بعدی است ( البته هر کدام از عناصر خود می توانند یک ارایه نیز باشند ) .dectionary ها ارایه های انجمنی در پایتون هستند .در پایتون عناصر یک آرایه می تواند از انواع مختلفی باشند  یعنی یکی از عناصر رشته دیگری عددی صحیح و یا حتی یک لیست یا دیکشنری دیگر باشند .tuples ها هم ارایه های غیر قابل تغیر هستند.اندییس شروع در همه انواع از 0 شروع می شود و همچنین از اعداد منفی می توان جهت پیمایش از عنصر انتها استفاده کرد در این صورت 1- اشاره به آخرین عنصر یک آرایه دارد .
مثال :
 
>>> sample = [1, ["another", "list"], ("a", "tuple")]
>>> mylist = ["List item 1", 2, 3.14]
>>> mylist[0] = "List item 1 again" # We're changing the item.
>>> mylist[-1] = 3.21 # Here, we refer to the last item.
>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14}
>>> mydict["pi"] = 3.15 # This is how you change dictionary values.
>>> mytuple = (1, 2, 3)
>>> myfunction = len
>>> print myfunction(mylist)
3
همچنین می توان جهت دسترسی به محدوده خاصی از عناصر ارایه از علامت ( : ) استفاده کرد بدین صورت که عدد سمت چپ مکان شروع که در صورت عدم درج از ابتدای آرای شروع می شود و عدد سمت چپ اندیس انتها که در صورت عدم درج انتهای آرایه در نظر گرفته خواهد شد.
 
>>> mylist = ["List item 1", 2, 3.14]
>>> print mylist[:]
['List item 1', 2, 3.1400000000000001]
>>> print mylist[0:2]
['List item 1', 2]
>>> print mylist[-3:-1]
['List item 1', 2]
>>> print mylist[1:]
[2, 3.14]
# Adding a third parameter, "step" will have Python step in
# N item increments, rather than 1.
# E.g., this will return the first item, then go to the third and
# return that (so, items 0 and 2 in 0-indexing).
>>> print mylist[::2]
['List item 1', 3.14]
رشته ها
جهت تعریف رشته ها از علامت ( " ) یا ( ' )  استفاده می شود.همچنین شما می توانید از این علامت ها نیز درون رشته استفاده کنید به عنوان مثال :
"He said 'hello'."
چنانچه نیاز به تعریف رشته در چند خط را داشتید می توانید سه بار یکی از علامت ها ( " ) یا ( ' )  را در ابتدا و انتها تکرار نماید.همچنین پایتون به صورت توکار از یونی کد پشتیبانی می کند جهت تعریف یک رشته به صورت یونی کد حرف u در ابتدای تعریف رشته الزامی است (به مثال مراجعه شود).
جهت جایگداری مقدار در رشته ها نیز می توان از علامت  (نشانگر نوع)% و یک tuples استفاده کنید.هر s%  با یکی از عناصر موجود در tuples از چپ به راست  جایگزین خواهد شد همچنین شما می توانید از یک دیکشنری برای اعلام دقیق استفاده نمایید.
مثال:
 
>>>print
"Name: %s\
Number: %s\
String: %s"
%
(myclass.name,
3,
3
*
"-")
Name:
Poromenos
Number:
3
String:
---
strString
=
"""This is
a multiline
string."""
# WARNING: Watch out for the trailing s in "%(key)s".
>>>
print
"This %(verb)s a %(noun)s."
%
{"noun":
"test",
"verb":
"is"}
This
is
a
test.
>>> a=u"یونی کد"
>>> a
'یونی کد'
>>> #this test in pytnon 3
کنترل جریان
 دستورات کنتل منطق برنامه در پایتون عبارت اند از if ,for , while و پایتون فاقد عبارت swith می باشد و به جای آن باید از همان if استفاده کنید .از for به تعداد عناصر موجود در یک لیست می توان استفاده کرد که برای ایجاد یک لیست از اعداد می توان از تابع ()range استفاده کنید.
مثال
rangelist = range(10)
>>> print rangelist
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in rangelist:
    # Check if number is one of
    # the numbers in the tuple.
    if number in (3, 4, 7, 9):
        # "Break" terminates a for without
        # executing the "else" clause.
        break
    else:
        # "Continue" starts the next iteration
        # of the loop. It's rather useless here,
        # as it's the last statement of the loop.
        continue
else:
    # The "else" clause is optional and is
    # executed only if the loop didn't "break".
    pass # Do nothing

if rangelist[1] == 2:
    print "The second item (lists are 0-based) is 2"
elif rangelist[1] == 3:
    print "The second item (lists are 0-based) is 3"
else:
    print "Dunno"

while rangelist[1] == 1:
    pass
توابع
توابع با کلمه کلیدی def تعریف می شوند.آرگومان های اختیار در تعریف تابع مقدار دهی اولیه می گردند.یک تابع می تواند مقداری از نوع tuple را برگرداند(با استفاده از این امکان یک تابع می تواند چندین مقدار را برگرداند).همچنین می توان توابع را به روش Labmda تعریف که کاربرد های خاص خود را داراست.مقادیر به صورت ارسال با ارجاع به توابع ارسال می شوند و تغیر در درون تابع روی متغیر باعث تغیر سرارسی می شودالبته این در باره انواعی که قابل تغیر نیستند مانند tuple  صادق نیست.
مثال :
 
# Same as def funcvar(x): return x + 1
funcvar = lambda x: x + 1
>>> print funcvar(1)
2

# an_int and a_string are optional, they have default values
# if one is not passed (2 and "A default string", respectively).
def passing_example(a_list, an_int=2, a_string="A default string"):
    a_list.append("A new item")
    an_int = 4
    return a_list, an_int, a_string

>>> my_list = [1, 2, 3]
>>> my_int = 10
>>> print passing_example(my_list, my_int)
([1, 2, 3, 'A new item'], 4, "A default string")
>>> my_list
[1, 2, 3, 'A new item']
>>> my_int
10
کلاس
پایتون از ویژگی های محدودی در مورد ارث بری جندگانه پشتیبانی می کند.برای متغیر ها و متد های خصوصی یک کلاس می توان از دو علامت (_ )یا بیشتر استفاده کرد که البته این یک قرار داد کلی است و توسط زیان پیاده سازی نشده است .همچنین ما می توانیم یک متغیر دلخواه را به کلاسی که فاقد آن متغیر است اضافه کرده و از آن استفاده کنیم .
مثال:
 
class MyClass(object):
    common = 10
    def __init__(self):
        self.myvariable = 3
    def myfunction(self, arg1, arg2):
        return self.myvariable

    # This is the class instantiation
>>> classinstance = MyClass()
>>> classinstance.myfunction(1, 2)
3
# This variable is shared by all classes.
>>> classinstance2 = MyClass()
>>> classinstance.common
10
>>> classinstance2.common
10
# Note how we use the class name
# instead of the instance.
>>> MyClass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# This will not update the variable on the class,
# instead it will bind a new object to the old
# variable name.
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> MyClass.common = 50
# This has not changed, because "common" is
# now an instance variable.
>>> classinstance.common
10
>>> classinstance2.common
50

# This class inherits from MyClass. The example
# class above inherits from "object", which makes
# it what's called a "new-style class".
# Multiple inheritance is declared as:
# class OtherClass(MyClass1, MyClass2, MyClassN)
class OtherClass(MyClass):
    # The "self" argument is passed automatically
    # and refers to the class instance, so you can set
    # instance variables as above, but from inside the class.
    def __init__(self, arg1):
        self.myvariable = 3
        print arg1

>>> classinstance = OtherClass("hello")
hello
>>> classinstance.myfunction(1, 2)
3
# This class doesn't have a .test member, but
# we can add one to the instance anyway. Note
# that this will only be a member of classinstance.
>>> classinstance.test = 10
>>> classinstance.test
10
استثناها
در پایتون استثنا ها را می توان با استفاده از (نام استثنا)try , except مدیریت کرد.
مثال:
 
def some_function():
    try:
        # Division by zero raises an exception
        10 / 0
    except ZeroDivisionError:
        print "Oops, invalid."
    else:
        # Exception didn't occur, we're good.
        pass
    finally:
        # This is executed after the code block is run
        # and all exceptions have been handled, even
        # if a new exception is raised while handling.
        print "We're done with that."

>>> some_function()
Oops, invalid.
We're done with that.
وارد کردن سایر کتابخانه ها
در پایتون می توان با استفاده از کلمه import کتاب خانه  های را که قبلاَ نوشته شده است به برنامه وارد کرد همچنین می توان از فرم زیر برای وارد کردن یک تابع خاص از یک ماژول به برنامه استفاده کرد.
from [کتاب خانه] import [تابع]
مثال :
 
import random
from time import clock

randomint = random.randint(1, 100)
>>> print randomint
64
کاربا فایل
در پایتون توابع زیادی به صورت توکار برای کار با فایل ها تعبیه شده است .در اینجا نحوه تبدیل یک ساختار داده به رشته با استفاده از کتابخانه pickle  و همچنین عملیات خواندن و نوشتن از فایل بیان شده است .
 
import pickle
mylist = ["This", "is", 4, 13327]
# Open the file C:\\binary.dat for writing. The letter r before the
# filename string is used to prevent backslash escaping.
myfile = open(r"C:\\binary.dat", "w")
pickle.dump(mylist, myfile)
myfile.close()

myfile = open(r"C:\\text.txt", "w")
myfile.write("This is a sample string")
myfile.close()

myfile = open(r"C:\\text.txt")
>>> print myfile.read()
'This is a sample string'
myfile.close()

# Open the file for reading.
myfile = open(r"C:\\binary.dat")
loadedlist = pickle.load(myfile)
myfile.close()
>>> print loadedlist
['This', 'is', 4, 13327]
گوناگون
*شرط ها می توانند به صورت سریال پشت سر هم باشند به عنوان مثال 3> b <a    یعنی a هم باید از 3 کوچکتر باشد و هم از b بزرگتر
*می توانید از دستور del برای حذف یک مقدار در درون یک آرایه و یا یک متغیر استفاده کنید.
*با استفاده از دستوراتی مانند if , for و وضع قوانین خاص می توان لیست های کارایی ساخت .
 
>>> lst1 = [1, 2, 3]
>>> lst2 = [3, 4, 5]
>>> print [x * y for x in lst1 for y in lst2]
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print [x for x in lst1 if 4 > x > 1]
[2, 3]
# Check if an item has a specific property.
# "any" returns true if any item in the list is true.
>>> any([i % 3 for i in [3, 3, 4, 4, 3]])
True
# This is because 4 % 3 = 1, and 1 is true, so any()
# returns True.

# Check how many items have this property.
>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 4)
2
>>> del lst1[0]
>>> print lst1
[2, 3]
>>> del lst1
    متغیر های تعریف شده در بدنه اصلی برنامه که سراسری هستند بدون هیچ پسوندی می توانند درون توابع خوانده شوند و از مقدارهای آن اگاه شد ولی هنگام تغیر حتماَ باید از عبارت global استفاده شود در غیر این صورت باعث ایجاد یک متغیر محلی به همان اسم می شود  این مورد میتواند سبب اشتباهات بسیاری در صورت عدم توجه شود.
    مثال :
    • e:
    number = 5
    
    def myfunc():
        # This will print 5.
        print number
    
    def anotherfunc():
        # This raises an exception because the variable has not
        # been bound before printing. Python knows that it an
        # object will be bound to it later and creates a new, local
        # object instead of accessing the global one.
        print number
        number = 3
    
    def yetanotherfunc():
        global number
        # This will correctly change the global.
        number = 3
    
    در نهایت
    این توضیحات در نهایت معرفی خیلی خیلی خیلی مختصری بود از پایتون .چنانچه پایتون دارای کتابخانه ها های بسیاری است که شاید معرفی آنها در یک کتاب هم نگنجد اما می تواند این راهنمای سریعی باشد به این زبان جذاب و بابی جهت جلب علاقه مندان بیشتر و یا حتی مطلبی جهت کپی برداری دانشجویان عزیز در یک مقاله سرسری برای استاد خویش
    مطالب از این سایت گرفته شده است و سعی بر آن بود حد اکثر تطابق را با آن داشته باشد .
    تمامی خروجی ها در پایتون 2.7 گرفته شده است مگر قسمت های که زکر گردید باشد.
     
     
    • موافقین ۲ مخالفین ۱
    • دوشنبه, ۲۰ خرداد ۱۳۹۲، ۰۸:۱۴ ب.ظ
    به اشتراک می گذارم : به اشتراک بگذاریم به اشتراک بگذاریم به اشتراک بگذاریم به اشتراک بگذاریم

    نظرات  (۴)

    salam
    jaleb buud mamnun
    سلام خیلی مفید بود .. ممنون
    سلام
    ممنون از شما
    کاشکی درباره مولتی تردینگ در پایتون هم مینوشتید!
    پاسخ:
    مطلب کوتاه و فقط اصول پایه رو پوشش میداد .بحث مربوط به چند نخی در زبان مربوط به سطح متوسط به بالا است. البته فکر نکنم در  بخش چند نخی برنامه نویسی کردن هم  در پایتون با پیچیدگی خاصی رو به رو باشید
    این برنامه cocos ide با زبان پایتون3 هم کار می کنه؟آخه پایتون با c++ نوشته شده
    پاسخ:
    ربطی نداره فقط از لوا و جاواسکریپت پشتیبانی میشه