فهرست بستن

آموزش syntax ها و قواعد در پایتون

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

در اینجا شما را با این قواعد و راهکار ها آشنا میکنیم.

با ما همراه باشید…

شناساگرها

شناساگر پایتون، معمولا همان نامی است که برای شناسایی متغیر ها، کلاسها، توابع و دیگر اشیا مورد استفاده قرار میگیرد.

نامگذاری شناسه ها دارای قوانینی میباشد که باید از آنها پیروی شود:

  • ۱- شناسه یا اسم متغیر هامیتوانند از حروف A تا Z به همراه زیرخط “_” شروع شوند. هرگز نمیتوانند با عدد شروع شوند. اما در حروف بعدی میتوان از عدد استفاده کرد.
  • ۲- پایتون حروف نقطه گذاری مثل @، $، %، را در شناسه ها قبول نمیکند.
  • ۳- مجاز به استفاده از اسامی رزو شده در زبان برنامه نویسی نظیر for، else، و… نمیباشید.
  • ۴- پایتون زبانی است که به بزرگی و کوچکی حروف حساس میباشد. پس Manpower و manpower دو شناسه جدا برای پایتون هستند.
    • قرارداد ها و استاندارد ها و مفاهیم نامگذاری:
  • نام کلاس ها با حروف بزرگ شروع میشوند.
  • شروع شناسه با یک زیرخط “_” توسط قرارداد نشانه این است که آن شناسه اختصاصی است.
  • شروع شناسه با دو زیر خط “__” پشت سر هم نشانه اختصاصی قوی است.
  • اگر شناسه همچنین با دو زیر خط”__” پشت سر هم تمام شود، آن شناسه یک نام مخصوص قابل فهم برای زبان است.
    • کلمات کلیدی در پایتون:
  • لیست زیر حاوی تمام کلمات کلیدی به کار رفته در پایتون میباشدکه ساختار اصلی هر زبانی اسامی رزرو شده در آن میباشد. از این کلمات هرگز نمیتوان به عنوان نامگذاری در متغیر ها، کلاس ها، توابع و دیگر اشیا در پایتون استفاده نمود.

همه ی کلمات کلیدی پایتون از حروف کوچک انگلیسی ساخته شده اند.

Capture

خطاها و تو رفتگی ها

یکی از اخطارهایی که برنامه نویسان وقتی میخواهند پایتون یاد بگیرند با آن مواجه میشوند این است که در پایتون هیچ آکلادی “{}” برای مشخص کردن تو رفتگی در بلوکهای (قطعه) کد، کلاس ها و معرفی توابع یا کنترل جریان استفاده نمیشود. بلوک های کد با تو رفتگی خط مشخص میشوند. که روی این موضوع خیلی تاکید میشود: Capture

اگر چه دومین بلوک(قطعه کد) در مثال زیر خطا میدهد:

Capture

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

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

Capture Capture1

جملات چند خطی

جملات در پایتون با رفتن به خط جدید تمام میشوند، یعنی اتمام خطوط را با رفتن به خط جدید میپذیرد. به هر حال پایتون مقدمات لازم برای ادامه دادن خط جاری، بدون رفتن به خط جدید را فراهم ساخه و کافیست با استفاده از کاراکتر (/)، خطط را ادامه دهید، برای مثال به کد های زیر توجه نمایید:

Capture

جملات دارای []، {}، و براکت ها، نیازی به استفاده از کاراکتر ادامه خط ندارند. برای مثال: Capture

نقل قول در پایتون

پایتون برای مشخص کردن رشته ها، علامت های نقل قول تکی (‘)، دوتایی(“)، و سه تایی(”’ یا “””) را قبول میکند. تا آنجایی که رشته با یکی از این علامت ها شروع و خاتمه یابد.

علامت های نقل قول سه تایی میتوانند برای رشته های چند خطی استفاده شوند. برای مثال، تمام حالت های زیر مجاز هستند:

Capture

کامنت ها در پایین

نشانه هش(#) که در رشته ها قرار داشته باشد را، یک کامنت گویند. تمام حروف بعد از هش تا آخر آن خط کامنت محسوب میشود و مفسر پایتون آن را رد میکند و آن خط جزیی از محاسبات برنامه نویسی نخواهد بود.

Capture

خط های بالا نتایج زیر را نمایش میدهند: Hello,Python!

یک کامنت ممکن است در خطی یکسان بعد از جمله یا اصطلاح باشد: Capture

شما به صورت زیر میتوانید کامنت چند خطی بنویسید:

Capture

استفاده از خط های خالی

یک خط با فضای خالی، شاید هم به همراه کامنت، پایتون آن را به عنوان خط خالی دانسته و کاملا آن را رد میکند.

در قسمت مفسر محاوره ای یا همان کنسول پایتون، باید یک خط خالی برای اتمام جملات چند خطی وارد کنید.

ورودی گرفتن یا انتظار برای کاربر:

خط زیر در برنامه نشان دهنده ی یک آگاهی دهنده است، برای خروج، کاربر باید دکمه اینتر را بزند: Capture

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

البته با raw میتوان از کاربر ورودی گرفت، به این صورت که بعد از وارد کردن مقدار کاربر باید کلید اینتر را بزند و مقدار را داخل متغیری ذخیره نماید: Capture

چند جمله در یک خط:

با قرار دادن سمی کالن “;” انتهای هر دستور شما قادر خواهید بود که چندین جمله یا دستور را در یک خط وارد نمایید.

به مثال زیر دقت نمایید: Capture

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

جملات سری

یک گروه از جملات مستقل، که یک قطعه کد تکی را میسازند در پایتون suite s نامیده میشوند. جملات مرکب و پیچیده، مثل while، if، و class آنهایی هستند که به یک سر خط و یک (دنباله) suite نیاز دارند.

سرخط ها جملات را شروع مییکنند (با یک کلمه کلیدی) و با یک(:) به پایان میرسانند و بعد از آنها یک یا چند خط است، که suite را میسازند.

به عنوان مثال: Capture

آرگومان های خط فرمان:

میتوان اطلاعات مفیدی از برنامه ها به دست آورد که پایتون به شما اجازه این کار را با -h میدهد.

usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about comparing bytearray with unicode
         (-bb: issue errors)
-B     : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
-h     : print this help message and exit (also --help)
-i     : inspect interactively after running script; forces a prompt even
         if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-m mod : run library module as a script (terminates option list)
-O     : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-OO    : remove doc-strings in addition to the -O optimizations
-R     : use a pseudo-random salt to make hash() values of various types be
         unpredictable between separate invocations of the interpreter, as
         a defense against denial-of-service attacks
-Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew
-s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-S     : don't imply 'import site' on initialization
-t     : issue warnings about inconsistent tab usage (-tt: issue errors)
-u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
         see man page for details on internal buffering relating to '-u'
-v     : verbose (trace import statements); also PYTHONVERBOSE=x
         can be supplied multiple times to increase verbosity
-V     : print the Python version number and exit (also --version)
-W arg : warning control; arg is action:message:category:module:lineno
         also PYTHONWARNINGS=arg
-x     : skip first line of source, allowing use of non-Unix forms of #!cmd
-۳     : warn about Python 3.x incompatibilities that 2to3 cannot trivially fix
file   : program read from script file
-      : program read from stdin (default; interactive mode if a tty)
arg ...: arguments passed to program in sys.argv[1:]

Other environment variables:
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH   : ';'-separated list of directories prefixed to the
               default module search path.  The result is sys.path.
PYTHONHOME   : alternate <prefix> directory (or <prefix>;<exec_prefix>).
               The default module search path uses <prefix>\lib.
PYTHONCASEOK : ignore case in 'import' statements (Windows).
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.
PYTHONHASHSEED: if this variable is set to 'random', the effect is the same
   as specifying the -R option: a random value is used to seed the hashes of
   str, bytes and datetime objects.  It can also be set to an integer
   in the range [0,4294967295] to get hash values with a predictable seed.


حتی میتوانید برنامه خود را به این حالت طراحی کنید که بتواند گزینه های زیادی را دریافت کند.

دسترسی به آرگومان های خط فرمان

پایتون ماژول getopt را در اختیار شما میگذارد تا شما به کمک آن گزینه ها و آرگومان های خط فرمان را تجزیه کنید.

Capture

ماژول sys در پایتون دسترسی به هر آرگومانی در خط فرمان را توسط sys.argv میدهد. در اینجا دو دلیل وجود دارد:

  • ۱- دلیل اول این است که sys.argv لیست آرگومان های خط فرمان است.
  • ۲- برای به دست آوردن تعداد آرگومان های خط فرمان از کد زیر استفاده نمایید:

Capture

مثال: به اسکریپت test.py دقت کنید:

Capture

حال اسکریپت بالا را به شکل زیر اجرا کنید:

Capture

که نتیجه زیر را نمایش میدهد. Capture

همانطور که در بالا گفته شد، اولین آرگومان نام اسکریپت است و همچنین در شمارش تعداد آرگومان ها به حساب می آید.

تجزیه آرگومان های خط فرمان

پایتون ماژول getopt را برای کمک به تجزیه گزینه ها و آرگومان های خط فرمان میدهد. این ماژول دو تابع و یک استثنا برای تجزیه آرگومان ها ارائه میدهد. این آموزش درباره یک تابع و یک استثناء بحث میکند، که برای نیاز های برنامه نویسی شما کافیست.

متد getopt.getopt:

این متد گزینه ها و لیست پارامتر های خط فرمان را تجزیه میکند. در زیر قواعد نحوی (syntax) ساده این متد را میبینید: Capture

در زیر جزییات پارامتر ها را میبینید:

  • پارامتر args: لیست آرگومان هایی که قرار است تجزیه شوند، البته بدون در نظر گرفتن آرگومان اول که اسم خود برنامه است، یعنی به این شکل: Capture
  • پارامتر options: رشته ای از گزینه های حروفی که اسکریپت میخواهد تشخیص دهد، با گزینه هایی که آرگومان نیاز دارند و با (:) همراه باشند.
  • پارامتر long_option: این پارامتر دلخواه است و اگر از آن استفاده شود، باید یک لیستی از رشته ها با نام های long options باشد، که باید پشتیبانی شوند. این پارامتر باید با یک علامت (=) همراه باشد. و فقط برای دریافت این پارامتر باید رشته ها خالی باشند.

این متد ارزش هایی با دو المان برمیکرداند، اولی لیستی از جفت های option و value است. دومی لیستی از آرگومان های باقی مانده بعد از اینکه گزینه های لیست مورد نظر فقط در بردارنده ی اجزای مهم باشد.

هر جفت گزینه و ارزشی که برگشته شد، گزینه را به عنوان اولین المان خود دارد. با یک – قبل آن برای گزینه های کوتاه (برای مثال ‘-x’) یا دو — در قبل آن برای گزینه های بلند (برای مثال –long-options’)

استثناء getopt.GetoptError:

این وقتی اتفاق می افتد که یک گزینه شناسایی نشده در لیست آرگومان ها وجود داردیا گزینه ای که نیاز به آرگومان دارد به آن گزینه آرگومان داده نشده است.

آرگومات استثناء یک رشته مشخص کننده دلیل خطا است. نشانه های msg و opt خطا و گزینه های مربوط را نشان میدهد.