You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: c-api/intro.po
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ msgid "Introduction"
27
27
msgstr"مقدمه"
28
28
29
29
msgid"The Application Programmer's Interface to Python gives C and C++ programmers access to the Python interpreter at a variety of levels. The API is equally usable from C++, but for brevity it is generally referred to as the Python/C API. There are two fundamentally different reasons for using the Python/C API. The first reason is to write *extension modules* for specific purposes; these are C modules that extend the Python interpreter. This is probably the most common use. The second reason is to use Python as a component in a larger application; this technique is generally referred to as :dfn:`embedding` Python in an application."
30
-
msgstr "رابط برنامهنویسی کاربردی پایتون، دسترسی به مفسر پایتون را در سطوح گوناگون در اختیار برنامهنویسان C و C++ قرار میدهد. این API از C++ نیز به همان اندازه قابل استفاده است، اما برای اختصار، معمولاً از آن با عنوان Python/C API یاد میشود. دو دلیل اساساً متفاوت برای استفاده از Python/C API وجود دارد. دلیل اول، نوشتن *ماژولهای توسعهای* برای مقاصد خاص است؛ اینها ماژولهای C هستند که مفسر پایتون را توسعه میدهند. این احتمالاً رایجترین کاربرد است. دلیل دوم، استفاده از پایتون بهعنوان یک جزء در یک برنامه بزرگتر است؛ به این تکنیک عموماً :dfn:`تعبیه <embedding>` پایتون در یک برنامه گفته میشود."
30
+
msgstr "رابط برنامهنویسی کاربردی پایتون، دسترسی به مفسر پایتون را در سطوح گوناگون در اختیار برنامهنویسان C و C++ قرار میدهد. این API از C++ نیز به همان اندازه قابل استفاده است، اما برای اختصار، معمولاً از آن با عنوان Python/C API یاد میشود. دو دلیل اساساً متفاوت برای استفاده از Python/C API وجود دارد. دلیل اول، نوشتن *ماژولهای توسعهای* برای مقاصد خاص است؛ اینها ماژولهای C هستند که مفسر پایتون را توسعه میدهند. این احتمالاً رایجترین کاربرد است. دلیل دوم، استفاده از پایتون بهعنوان یک جزء در یک برنامه بزرگتر است؛ به این تکنیک عموماً :dfn:`تعبیه (embedding)` پایتون در یک برنامه گفته میشود."
31
31
32
32
msgid"Writing an extension module is a relatively well-understood process, where a \"cookbook\" approach works well. There are several tools that automate the process to some extent. While people have embedded Python in other applications since its early existence, the process of embedding Python is less straightforward than writing an extension."
33
33
msgstr"نوشتن یک ماژول توسعهای فرایندی نسبتاً شناختهشده است که در آن رویکرد «کتاب آشپزی» بهخوبی کار میکند. چندین ابزار وجود دارند که این فرایند را تا حدی خودکار میکنند. هرچند مردم از همان اوایل پیدایش پایتون، آن را در برنامههای دیگر تعبیه کردهاند، اما فرایند تعبیه پایتون نسبت به نوشتن یک ماژول توسعهای کمتر سرراست است."
@@ -413,7 +413,7 @@ msgid "Most Python/C API functions have one or more arguments as well as a retur
413
413
msgstr "بیشتر توابع Python/C API یک یا چند آرگومان و همچنین مقدار بازگشتیای از نوع :c:expr:`PyObject*` دارند. این نوع، اشارهگر به یک نوع دادهی مبهم است که نمایانگر یک شیء پایتونی دلخواه است. از آنجا که زبان پایتون در بیشتر موقعیتها (مانند انتسابها، قواعد محدوده و ارسال آرگومان) با همهی نوعهای شیء پایتون به یک شکل رفتار میکند، بجاست که همهی آنها با یک نوع C واحد نمایش داده شوند. تقریباً همهی اشیای پایتون روی هیپ قرار دارند: شما هرگز متغیر خودکار یا ایستایی از نوع :c:type:`PyObject` تعریف نمیکنید؛ تنها متغیرهای اشارهگر از نوع :c:expr:`PyObject*` را میتوان تعریف کرد. تنها استثنا اشیای نوع هستند؛ از آنجا که این اشیا هرگز نباید آزادسازی شوند، معمولاً اشیای ایستای :c:type:`PyTypeObject` هستند."
414
414
415
415
msgid"All Python objects (even Python integers) have a :dfn:`type` and a :dfn:`reference count`. An object's type determines what kind of object it is (e.g., an integer, a list, or a user-defined function; there are many more as explained in :ref:`types`). For each of the well-known types there is a macro to check whether an object is of that type; for instance, ``PyList_Check(a)`` is true if (and only if) the object pointed to by *a* is a Python list."
416
-
msgstr"همهی اشیاء پایتون (حتی اعداد صحیح پایتون) یک :dfn:`نوع <type>` و یک :dfn:`شمارش ارجاع <reference count>` دارند. نوع یک شیء تعیین میکند که آن شیء از چه نوعی است (مثلاً یک عدد صحیح، یک فهرست یا یک تابع تعریفشده توسط کاربر؛ انواع بسیار بیشتری نیز وجود دارند که در :ref:`types` توضیح دادهشدهاند). برای هر یک از انواع شناختهشده، یک ماکرو وجود دارد که بررسی میکند آیا یک شیء از آن نوع است یا خیر؛ برای مثال، ``PyList_Check(a)`` درست است اگر (و تنها اگر) شیئی که *a* به آن اشاره میکند، یک فهرست پایتون باشد."
416
+
msgstr"همهی اشیاء پایتون (حتی اعداد صحیح پایتون) یک :dfn:`نوع (type)` و یک :dfn:`شمارش ارجاع (reference count)` دارند. نوع یک شیء تعیین میکند که آن شیء از چه نوعی است (مثلاً یک عدد صحیح، یک فهرست یا یک تابع تعریفشده توسط کاربر؛ انواع بسیار بیشتری نیز وجود دارند که در :ref:`types` توضیح دادهشدهاند). برای هر یک از انواع شناختهشده، یک ماکرو وجود دارد که بررسی میکند آیا یک شیء از آن نوع است یا خیر؛ برای مثال، ``PyList_Check(a)`` درست است اگر (و تنها اگر) شیئی که *a* به آن اشاره میکند، یک فهرست پایتون باشد."
417
417
418
418
msgid"Reference Counts"
419
419
msgstr"شمارش ارجاع"
@@ -473,7 +473,7 @@ msgid "Equivalent code for populating a list can be written using :c:func:`PyLis
473
473
msgstr"میتوان کد معادل برای پر کردن یک فهرست را با استفاده از :c:func:`PyList_New` و :c:func:`PyList_SetItem` نوشت."
474
474
475
475
msgid"However, in practice, you will rarely use these ways of creating and populating a tuple or list. There's a generic function, :c:func:`Py_BuildValue`, that can create most common objects from C values, directed by a :dfn:`format string`. For example, the above two blocks of code could be replaced by the following (which also takes care of the error checking)::"
476
-
msgstr"با این حال، در عمل، شما بهندرت از این روشها برای ایجاد و پر کردن یک تاپل یا فهرست استفاده خواهید کرد. یک تابع عام وجود دارد، :c:func:`Py_BuildValue`، که میتواند با هدایت یک :dfn:`رشته قالب <format string>`، بیشتر اشیاء رایج را از مقادیر C ایجاد کند. برای مثال، دو بلوک کد بالا را میتوان با کد زیر جایگزین کرد (که بررسی خطا را نیز انجام میدهد)::"
476
+
msgstr"با این حال، در عمل، شما بهندرت از این روشها برای ایجاد و پر کردن یک تاپل یا فهرست استفاده خواهید کرد. یک تابع عام وجود دارد، :c:func:`Py_BuildValue`، که میتواند با هدایت یک :dfn:`رشته قالب (format string)`، بیشتر اشیاء رایج را از مقادیر C ایجاد کند. برای مثال، دو بلوک کد بالا را میتوان با کد زیر جایگزین کرد (که بررسی خطا را نیز انجام میدهد)::"
0 commit comments