Skip to content

Commit 5a39a65

Browse files
author
Saeid Darvish
committed
edited l04
1 parent 7ac30ea commit 5a39a65

File tree

1 file changed

+80
-17
lines changed

1 file changed

+80
-17
lines changed

source/lessons/l04-python-interactive-mode.rst

Lines changed: 80 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,19 @@
132132
133133
اکنون می‌دانیم که برای وارد کردن یک ماژول به یک اسکریپت (یا ماژولی دیگر) از دستور import استفاده می‌گردد. پس از آن، برای دستیابی اجزای داخل آن مانند فراخوانی یک تابع نیز می‌بایست از الگوی «نام ماژول + نقطه + نام تابع مورد نظر» استفاده گردد.
134134

135-
مثالی دیگر - ``sys`` یکی از ماژول‌های مهم پایتون است؛ این ماژول امکان دسترسی به برخی از متغیرهای مورد استفاده مفسر (در زمان اجرا) و همچنین تابع‌هایی که با مفسر در ارتباط هستند را فراهم می‌آورد [`اسناد پایتون <http://docs.python.org/3/library/sys.html>`__]:
135+
و اگر از روش ``... from ... import`` استفاده کنیم: در این صورت می‌توان به جای کل ماژول، تنها اجزای مورد نیاز خود را import نماییم و دیگر نیازی به ذکر نام ماژول نیز نخواهد بود::
136+
137+
>>> from math import sqrt, pow, radians, sin
138+
>>> sqrt(36)
139+
6.0
140+
>>> pow(3, 2)
141+
9.0
142+
>>> radians(90)
143+
1.5707963267948966
144+
>>> sin(_)
145+
1.0
146+
147+
مثالی دیگر - ``sys`` یکی از ماژول‌های مهم پایتون است؛ این ماژول امکان دسترسی به برخی از متغیرهای مورد استفاده توسط مفسر (در زمان اجرا) و همچنین تابع‌هایی که با مفسر در ارتباط هستند را فراهم می‌آورد [`اسناد پایتون <http://docs.python.org/3/library/sys.html>`__]:
136148

137149
.. code-block:: python
138150
@@ -150,7 +162,27 @@
150162
>>> sys.getdefaultencoding()
151163
'utf-8'
152164
153-
دستور ``()sys.exit`` نیز موجب توقف اجرا (در اینجا: خروج از حالت تعاملی پایتون) می‌گردد. برای کنترل خطاها کاربرد دارد و همچنین می‌توان پیامی مرتبط را به خروجی فرستاد (معمولا گزارش رویدادی که موجب اتمام ناگهانی برنامه شده‌ است)::
165+
یا:
166+
167+
.. code-block:: shell
168+
169+
>>> from sys import version, version_info, platform, getdefaultencoding
170+
171+
>>> version
172+
'3.4.2 (default, Jan 25 2015, 20:02:16) \n[GCC 4.9.2 20141101 (Red Hat 4.9.2-1)]'
173+
174+
>>> version_info
175+
sys.version_info(major=3, minor=4, micro=2, releaselevel='final', serial=0)
176+
177+
>>> platform
178+
'linux'
179+
180+
>>> getdefaultencoding()
181+
'utf-8'
182+
183+
دستور ``()sys.exit`` نیز موجب توقف اجرا (در اینجا: خروج از حالت تعاملی پایتون) می‌گردد. برای کنترل خطاها کاربرد دارد و همچنین می‌توان پیامی مرتبط را به خروجی فرستاد (معمولا گزارش رویدادی که موجب اتمام ناگهانی برنامه شده‌ است):
184+
185+
.. code-block:: shell
154186
155187
>>> import sys
156188
@@ -159,6 +191,20 @@
159191
160192
user>
161193
194+
یا
195+
196+
.. code-block:: shell
197+
198+
>>> from sys import exit as bye
199+
200+
>>> bye("Error: Goodbye! :| ")
201+
Error: Goodbye! :|
202+
203+
user>
204+
205+
206+
با استفاده از ``as`` می‌توان برای اجزای import شده (به هر دو روش)، یک نام دلخواه تنظیم کرد. این ویژگی در زمانی که نام اصلی طولانی بوده یا با یکی از اجزای داخل ماژول همنام باشد (برای جلوگیری از تداخل) کاربرد دارد.
207+
162208

163209
.. _python-help:
164210

@@ -404,7 +450,7 @@
404450
['', '/home/user/Documents/me', '/usr/local/lib/python34.zip', '/usr/local/lib/python3.4', '/usr/local/lib/python3.4/plat-linux', '/usr/local/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/site-packages']
405451
>>>
406452

407-
چند درس جلوتر خواهید آموخت که مقدار ``sys.path`` در واقع یک شی از نوع ``list`` است؛ ``append`` و ``insert`` نیز تابع‌هایی [#f4]_ هستند که توسط یک شی از نوع ``list`` ارایه می‌گردد. در این مرحله تنها به یاد داشته باشید که موقعیت‌ها در یک شی از نوع ``list`` از عدد صفر شماره‌گذاری می‌گردند.
453+
چند درس جلوتر خواهید آموخت که مقدار ``sys.path`` در واقع یک شی از نوع ``list`` است؛ ``append`` و ``insert`` نیز تابع‌هایی هستند که توسط یک شی از نوع ``list`` ارایه می‌گردد. در این مرحله تنها به یاد داشته باشید که موقعیت‌ها در یک شی از نوع ``list`` از عدد صفر شماره‌گذاری می‌گردند.
408454

409455
.. rubric:: دسته دوم:
410456

@@ -437,7 +483,6 @@
437483
معمولا کدهای اسکریپت به گونه‌ای نوشته می‌شوند که اجرای آن‌ها وابسته به اجرای یک تابع اصلی باشد که معمولا ``()main`` نامیده می‌شود که در انتها بتوان با قرار دادن شرط برابری مقدار ``__name__`` با ``'__main__'`` برای اجرای تابع یاد شده، از اجرای کد‌های مورد نظر تنها در حالت اجرا به صورت اسکریپت (و نه در زمان import) مطمئن شد.
438484

439485
.. code-block:: python
440-
:linenos:
441486
442487
def main():
443488
print("this runs only when executed directly")
@@ -455,21 +500,29 @@
455500

456501

457502
.. code-block:: python
458-
:linenos:
459503
460504
import sys
461-
462-
print(sys.argv)
463-
print(sys.argv[0])
464-
print(sys.argv[1])
465-
print(sys.argv[2])
505+
506+
def main():
507+
print(sys.argv)
508+
print(sys.argv[0])
509+
print(sys.argv[1])
510+
print(sys.argv[2])
511+
512+
if __name__ == '__main__':
513+
main()
514+
515+
.. tip::
516+
از آنجا که عملکرد و خروجی مورد نظر این ماژول تنها در حالت اجرای اسکریپت است (دریافت آرگومان‌ها) و نه import آن در برنامه، بنابراین با بررسی نام ماژول در زمان اجرا از این موضوع اطمینان حاصل کردیم.
517+
466518

467519
اسکریپت بالا را با ارسال دو آرگومان ``arg_1`` و ``arg_2`` اجرا می‌نماییم:
468520

469521
::
470522

471-
user> python /home/user/Documents/script-argv.py arg_1 arg_2
472-
523+
user> cd /home/user/Documents
524+
525+
user> python script.py arg_1 arg_2
473526
['/home/user/Documents/script-argv.py', 'arg_1', 'arg_2']
474527
/home/user/Documents/script-argv.py
475528
arg_1
@@ -483,19 +536,31 @@
483536
['-c', '2']
484537

485538

539+
540+
.. admonition:: تمرین
541+
542+
یک اسکریپت ایجاد نمایید که دو پارامتر نام و سن را به صورت آرگومان‌های اسکریپت دریافت و بر روی خروجی نمایش دهد.
543+
544+
نمونه دستور اجرای اسکریپت:
545+
546+
``python script.py "Hideyoshi Nagachika" 19``
547+
548+
نمونه خروجی اسکریپت:
549+
550+
``Name: Hideyoshi Nagachika - Age: 19``
551+
552+
486553
.. _lesson-04-footer:
487554

488555
پی‌نوشت
489556
-------
490557

491-
.. [#f1] «عبارت» (Expression) یک قطعه از سینتکس است که می‌تواند به یک مقدار ارزیابی گردد، عبارت شامل «کلمه‌های کلیدی» (Keywords) نمی‌شود و «دستور» (Statement) بخشی از یک بلاک کد است که شامل کلمه‌های کلیدی بوده و کاری را به انجام می‌رساند. [کلمه‌های کلیدی در آینده بررسی می‌شوند.]
558+
.. [#f1] «عبارت» (Expression) یک قطعه از کد است که می‌تواند به یک مقدار ارزیابی گردد، عبارت شامل «کلمه‌های کلیدی» (Keywords) نمی‌شود و «دستور» (Statement) بخشی از یک بلاک کد است که شامل کلمه‌های کلیدی بوده و کاری را به انجام می‌رساند. [کلمه‌های کلیدی در آینده بررسی می‌شوند.]
492559
493560
.. [#f2] درست این بود که به جای واژه «مقدار» (Value) از «شی» (Object) استفاده می‌شد؛ چرا که هر چیزی در پایتون یک شی است. به عنوان نمونه، عدد 5 یک شی از کلاس «اعداد صحیح» (Integers) می‌باشد.
494561
495562
.. [#f3] توضیحی است که در ابتدای تابع‌ها، کلاس‌ها و ماژول‌ها می‌آید و توسط مفسر نادیده گرفته نمی‌شود. [docstring در آینده بررسی می‌شود]
496563
497-
.. [#f4] واژه «تابع» در مفهوم شی، مناسب نیست. در تعریف شی‌گرا از واژه «متد» (Method) به جای «تابع» (Function) استفاده می‌گردد؛ ولی در این مرحله که هنوز به شی‌گرایی پرداخته نشده است، ترجیح داده شد تا از واژه «تابع» استفاده گردد.
498-
499564
500565
501566
|
@@ -504,6 +569,4 @@
504569

505570
:emoji-size:`😊` امیدوارم مفید بوده باشه
506571

507-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <http://coderz.ir/python-tutorial-interactive-mode/>`_
508-
509572

0 commit comments

Comments
 (0)