From 0abf9fe4f37aa0a6b460894483532cf4e150ed18 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sat, 9 May 2020 17:41:50 +0200 Subject: [PATCH 01/36] Traducido parcialmente el archivo faq/programming --- faq/programming.po | 620 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 549 insertions(+), 71 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index afba2cdb22..fe336beb47 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -1,43 +1,47 @@ # Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. -# Maintained by the python-doc-es workteam. +# Maintained by the python-doc-es workteam. # docs-es@python.org / https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/PyCampES/python-docs-es/blob/3.7/TRANSLATORS to get the list of volunteers # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.7\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es.python.org)\n" +"PO-Revision-Date: 2020-05-09 17:40+0200\n" +"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es." +"python.org)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Last-Translator: \n" +"Language: es\n" +"X-Generator: Poedit 1.8.11\n" #: ../Doc/faq/programming.rst:5 msgid "Programming FAQ" -msgstr "" +msgstr "Preguntas frecuentes de programación" #: ../Doc/faq/programming.rst:8 msgid "Contents" -msgstr "" +msgstr "Contenido" #: ../Doc/faq/programming.rst:12 msgid "General Questions" -msgstr "" +msgstr "Preguntas generales" #: ../Doc/faq/programming.rst:15 msgid "" "Is there a source code level debugger with breakpoints, single-stepping, " "etc.?" msgstr "" +"¿Existe un depurador a nivel de código fuente con puntos de ruptura, " +"depuración paso a paso, etc?" #: ../Doc/faq/programming.rst:17 ../Doc/faq/programming.rst:60 msgid "Yes." -msgstr "" +msgstr "Sí." #: ../Doc/faq/programming.rst:19 msgid "" @@ -46,6 +50,10 @@ msgid "" "Library Reference Manual `. You can also write your own debugger by " "using the code for pdb as an example." msgstr "" +"El módulo pdf es en depurador en modo consola simple pero conveniente para " +"Python. Es parte de la biblioteca estándar de Python y está :mod:" +"`documentado en el manual de referencia de la biblioteca `. Puedes " +"escribir tu propio depurador usando el código de pdb como ejemplo." #: ../Doc/faq/programming.rst:24 msgid "" @@ -53,6 +61,9 @@ msgid "" "Python distribution (normally available as Tools/scripts/idle), includes a " "graphical debugger." msgstr "" +"El entorno interactivo de desarrollo IDLE, el cual es parte de la " +"distribución Python estándar (disponible, generalmente, como Tools/scripts/" +"idle), incluye un depurador gráfico." #: ../Doc/faq/programming.rst:28 msgid "" @@ -63,6 +74,13 @@ msgid "" ">`__ project and as a part of the ActivePython distribution (see https://www." "activestate.com/activepython\\ )." msgstr "" +"PythonWin es un IDE Python que incluye un depurador con GUI basado en pdb. " +"El depurador Pythonwin colorea los puntos de ruptura y dispone de " +"características geniales como la depuración de programas no modificados " +"mediante Pythonwin. Pythonwin está disponible como parte del proyecto `Las " +"extensiones de Python para Windows `__ y como parte de la distribución ActivePython (ver https://www." +"activestate.com/activepython\\ )." #: ../Doc/faq/programming.rst:35 msgid "" @@ -72,12 +90,20 @@ msgid "" "browsers, inheritance hierarchies, doc string generated html documentation, " "an advanced debugger, integrated help, and Zope support." msgstr "" +"`Boa Constructor `_ es un IDE y " +"creador de GUIs que usa wxWidgets. Ofrece creación y manipulación visual de " +"marcos, un inspector de objetos, muchas vistas sobre la fuente como los " +"navegadores de objetos, jerarquías de herencia, documentación doc string " +"generada como html, un depurador avanzado, ayuda integrada y soporte para " +"Zope." #: ../Doc/faq/programming.rst:41 msgid "" "`Eric `_ is an IDE built on PyQt and " "the Scintilla editing component." msgstr "" +"`Eric `_ es un IDE creado usando PyQt " +"y el componente de edición Scintilla." #: ../Doc/faq/programming.rst:44 msgid "" @@ -86,28 +112,36 @@ msgid "" "can be found at http://bashdb.sourceforge.net/pydb/ and DDD can be found at " "https://www.gnu.org/software/ddd." msgstr "" +"Pydb es una versión del depurador estándar de Python pdb, modificado para " +"sarse con DDD (Data Display Debugger), un popular frontal gráfico para " +"depuradores. Pydb se puede encontrar en http://bashdb.sourceforge.net/pydb/ " +"y DDD se puede encontrar en https://www.gnu.org/software/ddd." #: ../Doc/faq/programming.rst:49 msgid "" "There are a number of commercial Python IDEs that include graphical " "debuggers. They include:" msgstr "" +"Existen varios IDEs comerciales para Python que incluyen depuradores " +"gráficos. Entre ellos tenemos:" #: ../Doc/faq/programming.rst:52 msgid "Wing IDE (https://wingware.com/)" -msgstr "" +msgstr "Wing IDE (https://wingware.com/)" #: ../Doc/faq/programming.rst:53 msgid "Komodo IDE (https://komodoide.com/)" -msgstr "" +msgstr "Komodo IDE (https://komodoide.com/)" #: ../Doc/faq/programming.rst:54 msgid "PyCharm (https://www.jetbrains.com/pycharm/)" -msgstr "" +msgstr "PyCharm (https://www.jetbrains.com/pycharm/)" #: ../Doc/faq/programming.rst:58 msgid "Is there a tool to help find bugs or perform static analysis?" msgstr "" +"¿Existe alguna herramienta que ayude a encontrar errores o realizar análisis " +"estático?" #: ../Doc/faq/programming.rst:62 msgid "" @@ -115,6 +149,9 @@ msgid "" "and warns about code complexity and style. You can get PyChecker from " "http://pychecker.sourceforge.net/." msgstr "" +"PyChecker es un analizador estático que encuentra errores en código fuente " +"Python y avisa sobre complejidad del código y estilo. Puedes obtener " +"PyChecker desde http://pychecker.sourceforge.net/." #: ../Doc/faq/programming.rst:66 msgid "" @@ -126,6 +163,15 @@ msgid "" "standard, whether declared interfaces are fully implemented, and more. " "https://docs.pylint.org/ provides a full list of Pylint's features." msgstr "" +"`Pylint `_ es otra herramienta que comprueba si un " +"módulo satisaface un esttándar de código y, además, también hace posible " +"escribir *plug-ins* para añadir características personalizadas. Además de " +"la comprobación de errores que realiza PyChecker, Pylint ofrece algunas " +"características adicionales como la comprobación de la longitud de línea, si " +"los nombres de variable han sido creados correctamente de acuerdo a tu " +"estándar de código, si las interfaces declaradas han sido implementadas de " +"forma completa y más. https://docs.pylint.org/ proporciona una lista " +"completa de las características de Pylint." #: ../Doc/faq/programming.rst:74 msgid "" @@ -133,10 +179,15 @@ msgid "" "pyre-check.org/>`_, and `Pytype `_ can " "check type hints in Python source code." msgstr "" +"Inspectores estáticos de tipos como `Mypy `_, `Pyre " +"`_, y `Pytype `_ " +"pueden hacer comprobaciones de las anotaciones de tipos en código fuente " +"Python." #: ../Doc/faq/programming.rst:81 msgid "How can I create a stand-alone binary from a Python script?" msgstr "" +"¿Cómo puedo crear un binario independiente a partir de un programa Python?" #: ../Doc/faq/programming.rst:83 msgid "" @@ -146,6 +197,12 @@ msgid "" "determine the set of modules required by a program and bind these modules " "together with a Python binary to produce a single executable." msgstr "" +"No necesitas tener la habilidad de compilar Python a código C si lo único " +"que necesitas es un programa independiente que los usuarios puedan descargar " +"y ejecutar sin necesidad de instalar primero una distribución Python. Existe " +"una serie de herramientas que determinan el conjunto de módulos que necesita " +"un programa y une estos módulos conjuntamente con un binario Python para " +"generar un único ejecutable." #: ../Doc/faq/programming.rst:89 msgid "" @@ -154,6 +211,11 @@ msgid "" "you can embed all your modules into a new program, which is then linked with " "the standard Python modules." msgstr "" +"Una forma es usando la herramienta *freeze*, la cual viene incluida con el " +"árbol de código Pythoncomo ``Tools/freeze``. Convierte el byte code Python a " +"arrays C; un compilador C compiler permite incrustar todos tus módulos en un " +"nuevo programa que, posteriormente se puede enlazar con los módulos estándar " +"de Python." #: ../Doc/faq/programming.rst:94 msgid "" @@ -167,40 +229,62 @@ msgid "" "rest of the Python interpreter to form a self-contained binary which acts " "exactly like your script." msgstr "" +"Funciona escaneando su fuente de forma recursiva en busca de declaraciones " +"de importación (en ambas formas) y buscando los módulos en la ruta estándar " +"de Python, así como en el directorio de la fuente (para los módulos " +"incorporados). Luego convierte el *bytecode* de los módulos escritos en " +"Python en código C (inicializadores de arrays que pueden ser convertidos en " +"objetos de código usando el módulo marshal) y crea un archivo de " +"configuración a medida que sólo contiene aquellos módulos incorporados que " +"se usan realmente en el programa. A continuación, compila el código C " +"generado y lo enlaza con el resto del intérprete de Python para formar un " +"binario autónomo que actúa exactamente igual que su script.\n" +"\n" +"Traducción realizada con la versión gratuita del traductor www.DeepL.com/" +"Translator" #: ../Doc/faq/programming.rst:103 msgid "" "Obviously, freeze requires a C compiler. There are several other utilities " "which don't. One is Thomas Heller's py2exe (Windows only) at" msgstr "" +"Obviamente, freeze necesita un compilador C. Existen otras utilidades que " +"no necesitan un compilador C. Una de ellas es elpy2exe de Thomas Heller " +"(solo disponible para Windows) en" #: ../Doc/faq/programming.rst:106 msgid "http://www.py2exe.org/" -msgstr "" +msgstr "http://www.py2exe.org/" #: ../Doc/faq/programming.rst:108 msgid "" "Another tool is Anthony Tuininga's `cx_Freeze `_." msgstr "" +"Otra herramienta es `cx_Freeze `_ de Anthony Tuininga." #: ../Doc/faq/programming.rst:112 msgid "Are there coding standards or a style guide for Python programs?" msgstr "" +"¿Existen estándares de codigo o una guía de estilo para programas Python?" #: ../Doc/faq/programming.rst:114 msgid "" "Yes. The coding style required for standard library modules is documented " "as :pep:`8`." msgstr "" +"Sí. El estilo de código requerido para los módulos de la biblioteca estándar " +"se encuentra documentado como :pep:`8`." #: ../Doc/faq/programming.rst:119 msgid "Core Language" -msgstr "" +msgstr "Lenguaje principal" #: ../Doc/faq/programming.rst:122 msgid "Why am I getting an UnboundLocalError when the variable has a value?" msgstr "" +"¿Por qué obtengo un *UnboundLocalError* cuando la variable tiene un valor?" #: ../Doc/faq/programming.rst:124 msgid "" @@ -208,18 +292,22 @@ msgid "" "when it is modified by adding an assignment statement somewhere in the body " "of a function." msgstr "" +"Puede ser una sorpresa el hecho de obtener un UnboundLocalError en código " +"que había estado funcionando previamente cuando se modifica mediante el " +"añadido de una declaración de asignación en alguna parte del cuerpo de una " +"función." #: ../Doc/faq/programming.rst:128 msgid "This code:" -msgstr "" +msgstr "Este código:" #: ../Doc/faq/programming.rst:136 msgid "works, but this code:" -msgstr "" +msgstr "funciona, pero este código:" #: ../Doc/faq/programming.rst:143 msgid "results in an UnboundLocalError:" -msgstr "" +msgstr "resulta en un UnboundLocalError:" #: ../Doc/faq/programming.rst:150 msgid "" @@ -230,12 +318,21 @@ msgid "" "Consequently when the earlier ``print(x)`` attempts to print the " "uninitialized local variable and an error results." msgstr "" +"Esto es debido a que cuando realizas una asignación a una variable en un " +"ámbito de aplicación, esa variable se convierte en local y enmascara " +"cualquier variable llamada de forma similar en un ámbito de aplicación " +"exterior. Desde la última declaración en foo asigna un nuevo valor a ``x``, " +"el compilador la reconoce como una variable local. Consecuentemente, cuando " +"el ``print(x)`` más próximo intenta mostrar la variable local no " +"inicializada se muestra un error." #: ../Doc/faq/programming.rst:157 msgid "" "In the example above you can access the outer scope variable by declaring it " "global:" msgstr "" +"En el ejempo anterior puedes acceder al ámbito de aplicación exterior a la " +"variable declarándola como global:" #: ../Doc/faq/programming.rst:168 msgid "" @@ -243,16 +340,23 @@ msgid "" "the superficially analogous situation with class and instance variables) you " "are actually modifying the value of the variable in the outer scope:" msgstr "" +"Esta declaración explícita es necesaria de cara a recordarte que (a " +"diferencia de la situación superficialmente análoga con las variables de " +"clase e instancia) estás modificando el valor de la variable en un ámbito de " +"aplicación más externo:" #: ../Doc/faq/programming.rst:175 msgid "" "You can do a similar thing in a nested scope using the :keyword:`nonlocal` " "keyword:" msgstr "" +"Puedes hacer algo similar en un ámbito de aplicación anidado usando la " +"palabra clave :keyword:`nonlocal`:" #: ../Doc/faq/programming.rst:192 msgid "What are the rules for local and global variables in Python?" msgstr "" +"¿Cuáles son las reglas para las variables locales y globales en Python?" #: ../Doc/faq/programming.rst:194 msgid "" @@ -261,6 +365,10 @@ msgid "" "function's body, it's assumed to be a local unless explicitly declared as " "global." msgstr "" +"En Python, las variables que solo se encuentran referenciadas dentro de una " +"función son globales implícitamente. Si a una variable se le asigna un " +"valor en cualquier lugar dentro del cuerpo de una función, se asumirá que es " +"local a no ser que explícitamente se la declare como global." #: ../Doc/faq/programming.rst:198 msgid "" @@ -272,18 +380,30 @@ msgid "" "a component of an imported module. This clutter would defeat the usefulness " "of the ``global`` declaration for identifying side-effects." msgstr "" +"Aunque, inicialmente, puede parecer sorprendente, un momento de " +"consideración permite explicar esto. Por una parte, requerir :keyword:" +"`global` para variables asignadas proporciona una barrera frente a efectos " +"secundarios indeseados. Por otra parte, si ``global`` es requerido para " +"todas las referencias globales, deberás usar ``global`` en todo momento. " +"Deberías declarar como global cualquier referencia a una función integrada o " +"a un componente de un módulo importado. Este embrollo arruinaría la utilidad " +"de la declaración \"global\" para identificar los efectos secundarios." #: ../Doc/faq/programming.rst:208 msgid "" "Why do lambdas defined in a loop with different values all return the same " "result?" msgstr "" +"¿Por qué las funciones lambda definidas en un bucle con diferentes valores " +"devuelven todas el mismo resultado?" #: ../Doc/faq/programming.rst:210 msgid "" "Assume you use a for loop to define a few different lambdas (or even plain " "functions), e.g.::" msgstr "" +"Considera que usas un bucle *for* para crear unas pocas funciones lambda (o, " +"incluso, funciones normales), e.g.::" #: ../Doc/faq/programming.rst:217 msgid "" @@ -292,6 +412,10 @@ msgid "" "``1``, ``4``, ``9``, and ``16``. However, when you actually try you will " "see that they all return ``16``::" msgstr "" +"Lo siguiente proporciona una lista que contiene 5 funciones lambda que " +"calculan ``x**2``. Esperarías que, cuando se les invoca, devolvieran, " +"respectivamente, ``0``, ``1``, ``4``, ``9``y ``16``. Sin embargo, cuando lo " +"ejecutes verás que todas devuelven ``16``::" #: ../Doc/faq/programming.rst:227 msgid "" @@ -301,12 +425,21 @@ msgid "" "the functions now return ``4**2``, i.e. ``16``. You can also verify this by " "changing the value of ``x`` and see how the results of the lambdas change::" msgstr "" +"Esto sucede porque ``x`` no es una función lambda local pero se encuentra " +"definida en un ámbito de aplicación externo y se accede cuando la lambda es " +"invocada --- no cuando ha sido definida. Al final del bucle, el valor de " +"``x`` es ``4``, por tanto, ahora todas las funciones devuelven ``4**2``, i." +"e. ``16``. También puedes verificar esto mediante el cambio del valor de " +"``x`` y ver como los resultados de las lambdas cambian::" #: ../Doc/faq/programming.rst:237 msgid "" "In order to avoid this, you need to save the values in variables local to " "the lambdas, so that they don't rely on the value of the global ``x``::" msgstr "" +"De cara a evitar esto necesitas guardar los valores en variables locales a " +"las funciones lambda de tal forma que no dependan del valor de la ``x`` " +"global::" #: ../Doc/faq/programming.rst:244 msgid "" @@ -316,16 +449,24 @@ msgid "" "the first lambda, ``1`` in the second, ``2`` in the third, and so on. " "Therefore each lambda will now return the correct result::" msgstr "" +"Aquí, ``n=x`` crea una nueva variable ``n`` local a la función lambda y " +"ejecutada cuando la función lambda se define de tal forma que tiene el mismo " +"valor que tenía ``x`` en ese punto en el bucle. Esto significa qie el valor " +"de ``n`` será ``0`` en la primera función lambda, ``1`` en la segunda, ``2`` " +"en la tercera y así sucesivamente. Por tanto, ahora cada lambda devolverá el " +"resultado correcto::" #: ../Doc/faq/programming.rst:255 msgid "" "Note that this behaviour is not peculiar to lambdas, but applies to regular " "functions too." msgstr "" +"Es de destacar que este comportamiento no es puculiar de las funciones " +"lambda sino que aplica también a las funciones regulares." #: ../Doc/faq/programming.rst:260 msgid "How do I share global variables across modules?" -msgstr "" +msgstr "¿Cómo puedo compartir variables globales entre módulos?" #: ../Doc/faq/programming.rst:262 msgid "" @@ -336,28 +477,36 @@ msgid "" "each module, any changes made to the module object get reflected " "everywhere. For example:" msgstr "" +"La forma canónica de compartir información entre módulos dentro de un mismo " +"programa sería creando un módulo especial (a menudo llamado config o cfg). " +"Simplemente importa el módulo config en todos los módulos de tu aplicación; " +"el módulo estará disponible como un nombre global. Debido a que solo hay " +"una instancia de cada módulo, cualquier cambio hecho en el objeto módulo se " +"reflejará en todos los sitios. Por ejemplo:" #: ../Doc/faq/programming.rst:268 msgid "config.py::" -msgstr "" +msgstr "config.py::" #: ../Doc/faq/programming.rst:272 msgid "mod.py::" -msgstr "" +msgstr "mod.py::" #: ../Doc/faq/programming.rst:277 msgid "main.py::" -msgstr "" +msgstr "main.py::" #: ../Doc/faq/programming.rst:283 msgid "" "Note that using a module is also the basis for implementing the Singleton " "design pattern, for the same reason." msgstr "" +"Ten en cuenta que usar un módulo es también la base para la implementación " +"del patrón de diseño Singleton, por la misma razón." #: ../Doc/faq/programming.rst:288 msgid "What are the \"best practices\" for using import in a module?" -msgstr "" +msgstr "¿Cuáles son las \"bunas prácticas\" para usar import en un módulo?" #: ../Doc/faq/programming.rst:290 msgid "" @@ -365,6 +514,9 @@ msgid "" "importer's namespace, and makes it much harder for linters to detect " "undefined names." msgstr "" +"En general, no uses ``from modulename import *``. Haciendo eso embarulla el " +"espacio de nombres del importador y hace que sea más difícil para los " +"*linters* el detectar los nombres sin definir." #: ../Doc/faq/programming.rst:294 msgid "" @@ -373,30 +525,42 @@ msgid "" "is in scope. Using one import per line makes it easy to add and delete " "module imports, but using multiple imports per line uses less screen space." msgstr "" +"Importar los módulos en la parte inicial del fichero. Haciéndolo así deja " +"claro los módulos que son necesarios para tu código y evita preguntas sobre " +"si el nombre del módulo se encuentra en el ámbito de la aplicación. Usar una " +"importación por línea hace que sea sencillo añadir y eliminar módulos " +"importados pero usar múltiples importaciones por línea usa menos espacio de " +"pantalla." #: ../Doc/faq/programming.rst:299 msgid "It's good practice if you import modules in the following order:" -msgstr "" +msgstr "Es una buena práctica si importas los módulos en el orden siguiente:" #: ../Doc/faq/programming.rst:301 msgid "standard library modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``" msgstr "" +"módulos de la biblioteca estándar -- e.g. ``sys``, ``os``, ``getopt``, ``re``" #: ../Doc/faq/programming.rst:302 msgid "" "third-party library modules (anything installed in Python's site-packages " "directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc." msgstr "" +"módulos de bibliotecas de terceros (cualquier cosa instalada en el " +"directorio *site-packages* de Python) -- e.g. mx.DateTime, ZODB, PIL.Image, " +"etc." #: ../Doc/faq/programming.rst:304 msgid "locally-developed modules" -msgstr "" +msgstr "módulos desarrollados localmente" #: ../Doc/faq/programming.rst:306 msgid "" "It is sometimes necessary to move imports to a function or class to avoid " "problems with circular imports. Gordon McMillan says:" msgstr "" +"Hay veces en que es necesario mover las importaciones a una función o clase " +"para evitar problemas de importaciones circulares. Gordon McMillan dice:" #: ../Doc/faq/programming.rst:309 msgid "" @@ -406,6 +570,12 @@ msgid "" "That's because names in the 1st are not yet available, because the first " "module is busy importing the 2nd." msgstr "" +"No hay problema con las importaciones circulares cuando ambos módulos usan " +"la forma de importación \"import \". Fallará cuando el segundo " +"módulo quiera coger un nombre del primer módulo (\"from module import name" +"\") y la importación se encuentre en el nivel superior. Esto sucede porque " +"los nombres en el primero todavía no se encuentran disponibles debido a que " +"el primer módulo se encuentra ocupado importando al segundo." #: ../Doc/faq/programming.rst:315 msgid "" @@ -414,6 +584,10 @@ msgid "" "called, the first module will have finished initializing, and the second " "module can do its import." msgstr "" +"En este caso, si el segundo módulo se usa solamente desde una función, la " +"importación se puede mover de forma sencilla dentro de la función. En el " +"momento en que se invoca a la importación el primer módulo habrá terminado " +"de inicializarse y el segundo módulo podrá hacer la importación." #: ../Doc/faq/programming.rst:320 msgid "" @@ -423,6 +597,12 @@ msgid "" "importing the correct modules in the corresponding platform-specific code is " "a good option." msgstr "" +"También podría ser necesario mover importaciones fuera del nivel superior " +"del código si alguno de loa módulos son específicos a la plataforma. En ese " +"caso podría, incluso, no ser posible importar todos los módulos en la parte " +"superior del fichero. Para esos casos, la importación correcta de los " +"módulos en el código correspondiente específico de la plataforma es una " +"buena opción." #: ../Doc/faq/programming.rst:325 msgid "" @@ -437,16 +617,30 @@ msgid "" "only a couple of dictionary lookups. Even if the module name has gone out " "of scope, the module is probably available in :data:`sys.modules`." msgstr "" +"Solo debes mover importaciones a un ámbito de aplicación local, como dentro " +"de la definición de una función, si es necesario resolver problemas como una " +"importación circular o al intentar reducir el tiempo de inicialización de un " +"módulo. Esta técnica es especialmente útil si muchas de las importaciones no " +"son necesarias dependiendo de cómo se ejecute el programa. También podrías " +"mover importaciones a una función si los módulos solo se usan dentro de esa " +"función. Nótese que la primera carga de un módulo puede ser costosa debido " +"al tiempo necesario para la inicialización del módulo,pero la carga de un " +"módulo múltiples veces está prácticamente libre de coste ya que solo es " +"necesario hacer búsquedas en un diccionario. Incluso si el nombre del módulo " +"ha salido del ámbito de aplicación el módulo se encuentre, probablemente, " +"en :data:`sys.modules`." #: ../Doc/faq/programming.rst:338 msgid "Why are default values shared between objects?" -msgstr "" +msgstr "¿Por qué los valores por defecto se comparten entre objetos?" #: ../Doc/faq/programming.rst:340 msgid "" "This type of bug commonly bites neophyte programmers. Consider this " "function::" msgstr "" +"Este tipo de error golpea a menudo a programadores novatos. Considera esta " +"función::" #: ../Doc/faq/programming.rst:347 msgid "" @@ -454,6 +648,10 @@ msgid "" "The second time, ``mydict`` contains two items because when ``foo()`` begins " "executing, ``mydict`` starts out with an item already in it." msgstr "" +"La primera vez que llamas a esta función, ``mydict`` solamente contiene un " +"único elemento. La segunda vez, ``mydict`` contiene dos elementos debido a " +"que cuando comienza la ejecución de ``foo()``, ``mydict`` comienza " +"conteniendo un elemento de partida." #: ../Doc/faq/programming.rst:351 msgid "" @@ -463,6 +661,11 @@ msgid "" "dictionary in this example, subsequent calls to the function will refer to " "this changed object." msgstr "" +"A menudo se esperaría que una invocación a una función cree nuevos objetos " +"para valores por defecto. Eso no es lo que realmente sucede. Los valores por " +"defecto se crean exactamente una sola vez, cuando se define la función. Se " +"se cambia el objeto, como el diccionario en este ejemplo, posteriores " +"invocaciones a la función estarán referidas al objeto cambiado." #: ../Doc/faq/programming.rst:356 msgid "" @@ -470,6 +673,9 @@ msgid "" "``None``, are safe from change. Changes to mutable objects such as " "dictionaries, lists, and class instances can lead to confusion." msgstr "" +"Por definición, los objetos inmutables como números, cadenas, tuplas y " +"``None`` están asegurados frente al cambio. Cambios en objetos mutables como " +"diccionarios, listas e instancias de clase pueden llevar a confusión." #: ../Doc/faq/programming.rst:360 msgid "" @@ -478,10 +684,15 @@ msgid "" "inside the function, check if the parameter is ``None`` and create a new " "list/dictionary/whatever if it is. For example, don't write::" msgstr "" +"Debido a esta característica es una buena práctica de programación el no " +"usar valores mutables como valores por defecto. En su lugar usa ``None`` " +"como valor por defecto dentro de la función, comprueba si el parámetro es " +"``None`` y crea una nueva lista/un nuevo diccionario/cualquier otras cosa " +"que necesites. Por ejemplo, no escribas::" #: ../Doc/faq/programming.rst:368 msgid "but::" -msgstr "" +msgstr "pero::" #: ../Doc/faq/programming.rst:374 msgid "" @@ -491,17 +702,24 @@ msgid "" "value is requested again. This is called \"memoizing\", and can be " "implemented like this::" msgstr "" +"Esta característica puede ser útil. Cuando tienes una función que es muy " +"costosa de ejecutar, una técnica común es *cachear* sus parámetros y el " +"valor resultante de cada invocación a la función y devolver el valor " +"*cacheado* si se solicita nuevamente el mismo valor. A esto se le llama " +"\"memoizing\" y se puede implementar de la siguiente forma::" #: ../Doc/faq/programming.rst:389 msgid "" "You could use a global variable containing a dictionary instead of the " "default value; it's a matter of taste." msgstr "" +"Podrías usar una variable global conteniendo un diccionario en lugar de un " +"valor por defecto; es una cuestión de gustos." #: ../Doc/faq/programming.rst:394 msgid "" "How can I pass optional or keyword parameters from one function to another?" -msgstr "" +msgstr "¿Cómo puedo pasar parámetros clave u opcionales de una función a otra?" #: ../Doc/faq/programming.rst:396 msgid "" @@ -510,10 +728,15 @@ msgid "" "tuple and the keyword arguments as a dictionary. You can then pass these " "arguments when calling another function by using ``*`` and ``**``::" msgstr "" +"Recopila los argumentos usando los especificadores ``*`` y ``**`` " +"especificadores en la lista de parámetros de la función; esto te proporciona " +"los argumentos posicionales como una tupla y los argumentos con palabras " +"clave como un diccionario. Puedes, entonces, pasar estos argumentos cuando " +"invoques a otra función usando ``*`` y ``**``::" #: ../Doc/faq/programming.rst:415 msgid "What is the difference between arguments and parameters?" -msgstr "" +msgstr "¿Cuál es la diferencia entre argumentos y parámetros?" #: ../Doc/faq/programming.rst:417 msgid "" @@ -523,33 +746,42 @@ msgid "" "of arguments a function can accept. For example, given the function " "definition::" msgstr "" +":term:`Parámetros ` se definen mediante los nombres que aparecen " +"en la definición de una función mientras que :term:`argumentos ` " +"son los valores que se pasan a la función cuando la invocamos. Los " +"Parametros definen qué tipos de argumentos puede aceptar una función. por " +"ejemplo, dada la definición de la función::" #: ../Doc/faq/programming.rst:425 msgid "" "*foo*, *bar* and *kwargs* are parameters of ``func``. However, when calling " "``func``, for example::" msgstr "" +"*foo*, *bar* y *kwargs* son parámetros de ``func``. Sin embargo, cuando " +"invocamos a ``func``, por ejemplo::" #: ../Doc/faq/programming.rst:430 msgid "the values ``42``, ``314``, and ``somevar`` are arguments." -msgstr "" +msgstr "los valores ``42``, ``314`` y ``somevar`` son argumentos." #: ../Doc/faq/programming.rst:434 msgid "Why did changing list 'y' also change list 'x'?" -msgstr "" +msgstr "¿Por qué cambiando la lista 'y' cambia, también, la lista 'x'?" #: ../Doc/faq/programming.rst:436 msgid "If you wrote code like::" -msgstr "" +msgstr "Si escribes código como::" #: ../Doc/faq/programming.rst:446 msgid "" "you might be wondering why appending an element to ``y`` changed ``x`` too." msgstr "" +"te estarás preguntando porque añadir un elemento a ``y`` ha cambiado también " +"a ``x``." #: ../Doc/faq/programming.rst:448 msgid "There are two factors that produce this result:" -msgstr "" +msgstr "Hay dos factores que provocan este resultado:" #: ../Doc/faq/programming.rst:450 msgid "" @@ -558,11 +790,18 @@ msgid "" "the same object ``x`` refers to. This means that there is only one object " "(the list), and both ``x`` and ``y`` refer to it." msgstr "" +"Las variables son simplemente nombres que referencian a objetos. Haciendo " +"``y = x`` no crea una copia de la lista -- crea una nueva variable ``y`` que " +"referencia al mismo objeto al que referencia ``x`` . Esto significa que " +"solo existe un objeto (la lista) y tanto ``x`` como ``y`` hacen referencia " +"al mismo." #: ../Doc/faq/programming.rst:454 msgid "" "Lists are :term:`mutable`, which means that you can change their content." msgstr "" +"Las listas son :term:`mutable`, lo que significa que puedes cambiar su " +"contenido." #: ../Doc/faq/programming.rst:456 msgid "" @@ -570,10 +809,14 @@ msgid "" "has changed from ``[]`` to ``[10]``. Since both the variables refer to the " "same object, using either name accesses the modified value ``[10]``." msgstr "" +"Después de la invocación a :meth:`~list.append`, el contenido del objeto " +"mutable ha cambiado de ``[]`` a``[10]``. Ya que ambas variables referencian " +"al mismo objeto, el usar cualquiera de los nombres accederá al valor " +"modificado ``[10]``." #: ../Doc/faq/programming.rst:460 msgid "If we instead assign an immutable object to ``x``::" -msgstr "" +msgstr "Si, por otra parte, asignamos un objeto inmutable a ``x``::" #: ../Doc/faq/programming.rst:470 msgid "" @@ -585,6 +828,14 @@ msgid "" "objects (the ints ``6`` and ``5``) and two variables that refer to them " "(``x`` now refers to ``6`` but ``y`` still refers to ``5``)." msgstr "" +"podemos ver que ``x`` e ``y`` ya no son iguales. Esto es debido a que los " +"enteros son :term:`immutable`, y cuando hacemos ``x = x + 1`` no estamos " +"mutando el entero ``5`` incrementando su valor; en su lugar, estamos creando " +"un nuevo objeto (el entero ``6``) y se lo asignamos a ``x`` (esto es, " +"cambiando el objeto al cual referencia ``x``). Después de esta asignación " +"tenemos dos objetos (los enteros ``6`` y ``5``) y dos variables que " +"referencian a ellos (``x`` ahora referencia a ``6`` pero ``y`` todavía " +"referencia a ``5``)." #: ../Doc/faq/programming.rst:478 msgid "" @@ -597,6 +848,15 @@ msgid "" "copy of ``y``, you'll instead end up with ``None``, which will likely cause " "your program to generate an easily diagnosed error." msgstr "" +"Algunas operaciones (por ejemplo ``y.append(10)`` y ``y.sort()``) mutaa al " +"objeto mientras que operaciones que podrían parecer similares (por ejemplo " +"``y = y + [10]`` y ``sorted(y)``) crean un nuevo objeto. En general, en " +"Python (y en todo momento en la biblioteca estándar) un método que muta un " +"objeto devolverá ``None`` para evitar tener dos tipos de operaciones que " +"puedan ser confusas. Por tanto, si escribes accidentalmente ``y.sort()`` " +"pensando que te devolverá una copia ordenadade ``y``, obtendrás, en su " +"lugar, ``None``, lo cual ayudará a que tu programa genera un error que pueda " +"ser diagnosticado fácilmente." #: ../Doc/faq/programming.rst:487 msgid "" @@ -607,10 +867,16 @@ msgid "" "mutates ``a_list``, whereas ``some_tuple += (1, 2, 3)`` and ``some_int += " "1`` create new objects)." msgstr "" +"Sin embargo, existe una clase de operaciones en las cuales la misma " +"operación tiene, a veces, distintos comportamientos con diferentes tipos: " +"los operadores de asignación aumentada. Por ejemplo, ``+=`` muta listas " +"pero no tuplas o enteros (``a_list += [1, 2, 3]`` es equivalente a ``a_list." +"extend([1, 2, 3])`` y muta ``a_list``, mientras que ``some_tuple += (1, 2, " +"3)`` y ``some_int += 1`` crea nuevos objetos)." #: ../Doc/faq/programming.rst:494 msgid "In other words:" -msgstr "" +msgstr "En otras palabras:" #: ../Doc/faq/programming.rst:496 msgid "" @@ -618,6 +884,9 @@ msgid "" "etc.), we can use some specific operations to mutate it and all the " "variables that refer to it will see the change." msgstr "" +"Si tenemos un objeto mutable (:class:`list`, :class:`dict`, :class:`set`, " +"etc.), podemos usar algunas operaciones específicas para mutarlo y todas las " +"variables que referencian al mismo verán el cambio reflejado." #: ../Doc/faq/programming.rst:499 msgid "" @@ -626,16 +895,24 @@ msgid "" "but operations that transform that value into a new value always return a " "new object." msgstr "" +"Si tenemos un objeto immutable (:class:`str`, :class:`int`, :class:`tuple`, " +"etc.), todas las variables que referencian al mismo verán siempre el mismo " +"valor pero las operaciones que transforman ese valor en un nuevo valor " +"siempre devuelve un nuevo objeto." #: ../Doc/faq/programming.rst:504 msgid "" "If you want to know if two variables refer to the same object or not, you " "can use the :keyword:`is` operator, or the built-in function :func:`id`." msgstr "" +"Si deseas saber si dos variables referencian o no al mismo objeto podrías " +"usar el operador :keyword:`is` o la función incorporada :func:`id`." #: ../Doc/faq/programming.rst:509 msgid "How do I write a function with output parameters (call by reference)?" msgstr "" +"¿Cómo pueo escribir una función sin parámetros (invocación mediante " +"referencia)?" #: ../Doc/faq/programming.rst:511 msgid "" @@ -644,43 +921,50 @@ msgid "" "argument name in the caller and callee, and so no call-by-reference per se. " "You can achieve the desired effect in a number of ways." msgstr "" +"Recuerda que los argumentos son pasados mediante asignación en Python. Ya " +"que las asignaciones simplemente crean referencias a objetos, no hay alias " +"entre el nombre de un argumento en el invocador y el invocado y, por tanto, " +"no hay invocación por referencia per se. Puedes obtener el mismo efecto " +"deseado de formas distintas." #: ../Doc/faq/programming.rst:516 msgid "By returning a tuple of the results::" -msgstr "" +msgstr "Mediante la devolución de una tupla de resultados::" #: ../Doc/faq/programming.rst:527 msgid "This is almost always the clearest solution." -msgstr "" +msgstr "Esta es, casi siempre, la solución más clara." #: ../Doc/faq/programming.rst:529 msgid "" "By using global variables. This isn't thread-safe, and is not recommended." msgstr "" +"Mediante el uso de variables globales. No es thread-safe y no se recomienda." #: ../Doc/faq/programming.rst:531 msgid "By passing a mutable (changeable in-place) object::" -msgstr "" +msgstr "Pasando un objeto mutable (intercambiable en el mismo sitio)::" #: ../Doc/faq/programming.rst:541 msgid "By passing in a dictionary that gets mutated::" -msgstr "" +msgstr "Pansado un diccionario que muta::" #: ../Doc/faq/programming.rst:551 msgid "Or bundle up values in a class instance::" -msgstr "" +msgstr "O empaquetar valores en una instancia de clase::" #: ../Doc/faq/programming.rst:567 msgid "There's almost never a good reason to get this complicated." -msgstr "" +msgstr "Casi nunca existe una buena razón para hacer esto tan complicado." #: ../Doc/faq/programming.rst:569 msgid "Your best choice is to return a tuple containing the multiple results." msgstr "" +"Tu mejor opción es devolver una tupla que contenga los múltiples resultados." #: ../Doc/faq/programming.rst:573 msgid "How do you make a higher order function in Python?" -msgstr "" +msgstr "¿Cómo se puede hacer una función de orden superior en Python?" #: ../Doc/faq/programming.rst:575 msgid "" @@ -689,18 +973,22 @@ msgid "" "returns a function ``f(x)`` that computes the value ``a*x+b``. Using nested " "scopes::" msgstr "" +"Tienes dos opciones: puedes usar ámbitos de aplicación anidados o puedes " +"usar objetos invocables. Por ejemplo, supón que querías definir ``linear(a," +"b)`` que devuelve una función ``f(x)`` que calcula el valor ``a*x+b``. Usar " +"ámbitos de aplicación anidados::" #: ../Doc/faq/programming.rst:584 msgid "Or using a callable object::" -msgstr "" +msgstr "O usar un objeto invocable::" #: ../Doc/faq/programming.rst:594 msgid "In both cases, ::" -msgstr "" +msgstr "En ambos casos, ::" #: ../Doc/faq/programming.rst:598 msgid "gives a callable object where ``taxes(10e6) == 0.3 * 10e6 + 2``." -msgstr "" +msgstr "nos da un objeto invocable donde ``taxes(10e6) == 0.3 * 10e6 + 2``." #: ../Doc/faq/programming.rst:600 msgid "" @@ -708,40 +996,51 @@ msgid "" "and results in slightly longer code. However, note that a collection of " "callables can share their signature via inheritance::" msgstr "" +"El enfoque del objeto invocable tiene la desventaja que es un ligeramente " +"más lento y el resultado es un código levemente más largo. Sin embargo, " +"destacar que una colección de invocables pueden compartirsu firma vía " +"herencia::" #: ../Doc/faq/programming.rst:609 msgid "Object can encapsulate state for several methods::" -msgstr "" +msgstr "Los objetos pueden encapsular el estado de varios métodos::" #: ../Doc/faq/programming.rst:627 msgid "" "Here ``inc()``, ``dec()`` and ``reset()`` act like functions which share the " "same counting variable." msgstr "" +"Aquí ``inc()``, ``dec()`` y ``reset()`` se comportan como funciones las " +"cuales comparten la misma variable de conteo." #: ../Doc/faq/programming.rst:632 msgid "How do I copy an object in Python?" -msgstr "" +msgstr "¿Cómo copio un objeto en Python?" #: ../Doc/faq/programming.rst:634 msgid "" "In general, try :func:`copy.copy` or :func:`copy.deepcopy` for the general " "case. Not all objects can be copied, but most can." msgstr "" +"En general, prueba :func:`copy.copy` o :func:`copy.deepcopy` para el caso " +"general. No todos los objetos se pueden copiat pero la mayoría sí que pueden " +"copiarse." #: ../Doc/faq/programming.rst:637 msgid "" "Some objects can be copied more easily. Dictionaries have a :meth:`~dict." "copy` method::" msgstr "" +"Algunas objetos se pueden copiar de forma más sencilla. Los diccionarios " +"disponen de un método :meth:`~dict.copy`::" #: ../Doc/faq/programming.rst:642 msgid "Sequences can be copied by slicing::" -msgstr "" +msgstr "Las secuencias se pueden copiar usando un rebanado::" #: ../Doc/faq/programming.rst:648 msgid "How can I find the methods or attributes of an object?" -msgstr "" +msgstr "¿Cómo puedo encontrar los métodos o atributos de un objeto?" #: ../Doc/faq/programming.rst:650 msgid "" @@ -749,10 +1048,14 @@ msgid "" "alphabetized list of the names containing the instance attributes and " "methods and attributes defined by its class." msgstr "" +"Para la instancia x de una clase definida por el usuario, ``dir(x)`` " +"devuelve una lista de nombres ordenados alfabéticamente que contiene los " +"atributos y métodos de la instancia y los atributos definidos mediante su " +"calse." #: ../Doc/faq/programming.rst:656 msgid "How can my code discover the name of an object?" -msgstr "" +msgstr "¿Cómo puedo descubrir el nombre de un objeto?" #: ../Doc/faq/programming.rst:658 msgid "" @@ -761,6 +1064,11 @@ msgid "" "``def`` and ``class`` statements, but in that case the value is a callable. " "Consider the following code::" msgstr "" +"Hablando de forma general no podrían puesto que los objetos no disponen, " +"realmente, de un nombre. Esencialmente, las asignaciones relacionan un " +"nombre con su valor; Lo mismo se cumple con las declaraciones ``def`` y " +"``class`` pero, en este caso, el valor es un invocable. Considera el " +"siguiente código::" #: ../Doc/faq/programming.rst:674 msgid "" @@ -769,6 +1077,11 @@ msgid "" "instance of class A. However, it is impossible to say whether the " "instance's name is a or b, since both names are bound to the same value." msgstr "" +"Podría decirse que la clase tiene un nombre: aunque está ligada a dos " +"nombres y se invoca a través del nombre B, la instancia creada se sigue " +"reportando como una instancia de la clase A. Sin embargo, es imposible decir " +"si el nombre de la instancia es a o b, ya que ambos nombres están ligados al " +"mismo valor." #: ../Doc/faq/programming.rst:679 msgid "" @@ -777,12 +1090,18 @@ msgid "" "introspective programs, this is usually an indication that a change of " "approach might be beneficial." msgstr "" +"En términos generales, no debería ser necesario que tu código \"conozca los " +"nombres\" de determinados valores. A menos que estés escribiendo " +"deliberadamente programas introspectivos, esto suele ser una indicación de " +"que un cambio de enfoque podría ser beneficioso." #: ../Doc/faq/programming.rst:684 msgid "" "In comp.lang.python, Fredrik Lundh once gave an excellent analogy in answer " "to this question:" msgstr "" +"En comp.lang.python, Fredrik Lundh proporcionó una vez una excelente " +"analogía en respuesta a esta pregunta:" #: ../Doc/faq/programming.rst:687 msgid "" @@ -791,30 +1110,39 @@ msgid "" "so the only way to find out what it's called is to ask all your neighbours " "(namespaces) if it's their cat (object)..." msgstr "" +"De la misma forma que obtienes el nombre de ese gato que te has encontrado " +"en tu porche el propio gato (objeto) no te puede indicar su nombre y, " +"realmente, no importa -- por tanto, la única forma de encontrar cómo se " +"llama sería preguntando a todos los vecinos (espacios de nombres) si es su " +"gato (objeto)..." #: ../Doc/faq/programming.rst:692 msgid "" "....and don't be surprised if you'll find that it's known by many names, or " "no name at all!" msgstr "" +"...y no te sorprendas si encuentras que se le conoce mediante diferentes " +"nombres o ¡nadie conoce su nombre!" #: ../Doc/faq/programming.rst:697 msgid "What's up with the comma operator's precedence?" -msgstr "" +msgstr "¿Qué ocurre con la precedencia del operador coma?" #: ../Doc/faq/programming.rst:699 msgid "Comma is not an operator in Python. Consider this session::" -msgstr "" +msgstr "La coma no es un operador en Python. Considera la sesión::" #: ../Doc/faq/programming.rst:704 msgid "" "Since the comma is not an operator, but a separator between expressions the " "above is evaluated as if you had entered::" msgstr "" +"Debido a que la coma no es un operador sino un separador entre expresiones " +"lo anterior se evalue como se ha introducido::" #: ../Doc/faq/programming.rst:709 msgid "not::" -msgstr "" +msgstr "no::" #: ../Doc/faq/programming.rst:713 msgid "" @@ -822,20 +1150,25 @@ msgid "" "They are not truly operators but syntactic delimiters in assignment " "statements." msgstr "" +"Lo mismo sucede con varios operadores de asignación (``=``, ``+=``, etc). " +"No son realmente operadores sino delimitadores sintácticos en declaraciones " +"de asignación." #: ../Doc/faq/programming.rst:718 msgid "Is there an equivalent of C's \"?:\" ternary operator?" -msgstr "" +msgstr "¿Existe un equivalente al operador ternario de C \"?:\"?" #: ../Doc/faq/programming.rst:720 msgid "Yes, there is. The syntax is as follows::" -msgstr "" +msgstr "Sí, existe. La sintaxis es como sigue::" #: ../Doc/faq/programming.rst:727 msgid "" "Before this syntax was introduced in Python 2.5, a common idiom was to use " "logical operators::" msgstr "" +"Antes de que esta sintaxis se introdujera en Python 2.5 una expresión común " +"fue el uso de operadores lógicos::" #: ../Doc/faq/programming.rst:732 msgid "" @@ -843,24 +1176,32 @@ msgid "" "has a false boolean value. Therefore, it is always better to use the ``... " "if ... else ...`` form." msgstr "" +"Sin embargo, esa expresión no es segura ya que puede devolver valores " +"erróneos cuando *on_true* tiene un valor booleano falso. Por tanto, siempre " +"es mejor usar la forma ``... if ... else ...``." #: ../Doc/faq/programming.rst:738 msgid "Is it possible to write obfuscated one-liners in Python?" msgstr "" +"¿Es posible escribir expresiones en una línea de forma ofuscada en Python?" #: ../Doc/faq/programming.rst:740 msgid "" "Yes. Usually this is done by nesting :keyword:`lambda` within :keyword:`!" "lambda`. See the following three examples, due to Ulf Bartelt::" msgstr "" +"Sí. Normalmente se puede hacer anidando :keyword:`lambda` dentro de :" +"keyword:`!lambda`. Examina los siguientes tres ejemplos, creados por Ulf " +"Bartelt::" #: ../Doc/faq/programming.rst:767 msgid "Don't try this at home, kids!" -msgstr "" +msgstr "¡No probéis esto en casa, personitas!" #: ../Doc/faq/programming.rst:773 msgid "What does the slash(/) in the parameter list of a function mean?" msgstr "" +"¿Qué hace el *slash* (/) en medio de la lista de parámetros de una función?" #: ../Doc/faq/programming.rst:775 msgid "" @@ -871,6 +1212,14 @@ msgid "" "position. For example, :func:`pow` is a function that accepts positional-" "only parameters. Its documentation looks like this::" msgstr "" +"Un *slash* en la lista de argumentos de una función denota que los " +"parámetros previos al mismo son únicamente posicionales. Parámetros " +"únicamente posicionales son aquellos cuyos nombres no son usabels " +"internamente. Mediante la llamada a una función que acepta parámetros " +"únicamente posicionales, los argumentos se mapean a parámetros basados " +"únicamente en su posición. Por ejemplo, :func:`pow` es una función que " +"acepta parámetros únicamente posicionales. Su documentación es de la " +"siguiente forma::" #: ../Doc/faq/programming.rst:791 msgid "" @@ -878,6 +1227,9 @@ msgid "" "are positional-only. Thus, calling :func:`pow` with keyword aguments would " "lead to an error::" msgstr "" +"El *slash* al final de la lista de parámetros indica que los tres parámetros " +"son únicamente posicionales. Por tanto, invocar a :func:`pow` con " +"argumentos con palabra clave podría derivar en un error::" #: ../Doc/faq/programming.rst:800 msgid "" @@ -885,14 +1237,17 @@ msgid "" "syntax in Python, although there is :pep:`570`, which proposes a syntax for " "position-only parameters in Python." msgstr "" +"Nótese que, en el momento de escribir esto, esto es solo una documentación y " +"no es sintaxis válida en Python, auqnue existe el :pep:`570`, el cual " +"propone una sintaxis para parámetros únicamente de posición en Python." #: ../Doc/faq/programming.rst:806 msgid "Numbers and strings" -msgstr "" +msgstr "Números y cadenas" #: ../Doc/faq/programming.rst:809 msgid "How do I specify hexadecimal and octal integers?" -msgstr "" +msgstr "¿Cómo puedo especificar enteros hexadecimales y octales?" #: ../Doc/faq/programming.rst:811 msgid "" @@ -900,6 +1255,9 @@ msgid "" "lower or uppercase \"o\". For example, to set the variable \"a\" to the " "octal value \"10\" (8 in decimal), type::" msgstr "" +"Para especificar un dígito octal, prefija el valor octal con un cero y una " +"\"o\" en minúscula o mayúscula. Por ejemplo, para definir la variable \"a\" " +"con el valor octal \"10\" (8 en decimal), escribe::" #: ../Doc/faq/programming.rst:819 msgid "" @@ -907,16 +1265,22 @@ msgid "" "zero, and then a lower or uppercase \"x\". Hexadecimal digits can be " "specified in lower or uppercase. For example, in the Python interpreter::" msgstr "" +"Un hexadecimal es igual de simple. Simplemente añade un cero y una \"x\", " +"en minúscula o mayúscula, antes del número hexadecimal . Los dígitos " +"hexadecimales se pueden especificar en minúsculas o mayúsculas. Por " +"ejemplo, en el intérprete de Python::" #: ../Doc/faq/programming.rst:832 msgid "Why does -22 // 10 return -3?" -msgstr "" +msgstr "¿Por qué -22 // 10 devuelve -3?" #: ../Doc/faq/programming.rst:834 msgid "" "It's primarily driven by the desire that ``i % j`` have the same sign as " "``j``. If you want that, and also want::" msgstr "" +"Es debido, principalmente al deseo que ``i % j`` tenga el mismo signo que " +"``j``. Si quieres eso y, además, quieres::" #: ../Doc/faq/programming.rst:839 msgid "" @@ -924,6 +1288,10 @@ msgid "" "identity to hold, and then compilers that truncate ``i // j`` need to make " "``i % j`` have the same sign as ``i``." msgstr "" +"entonces la división entera debe devolver el valor base más bajo. C también " +"requiere que esa esa identidad se mantenga de tal forma que cuando los " +"compiladores truncan ``i // j`` nacesitan que ``i % j`` tenga el mismo signo " +"que ``i``." #: ../Doc/faq/programming.rst:843 msgid "" @@ -933,10 +1301,15 @@ msgid "" "say 200 hours ago? ``-190 % 12 == 2`` is useful; ``-190 % 12 == -10`` is a " "bug waiting to bite." msgstr "" +"Existen unos pocos casos para ``i % j`` cuando ``j`` es negativo. Cuando " +"``j`` es positivo, existen muchos casos y, virtualmente, en todos ellos es " +"más útil para ``i % j`` que sea ``>= 0``. Si el reloj dice que ahora son " +"las 10, ¿qué dijo hace 200 horas? ``-190 % 12 == 2`` es útil; ``-190 % 12 " +"== -10`` es un error listo para morderte." #: ../Doc/faq/programming.rst:851 msgid "How do I convert a string to a number?" -msgstr "" +msgstr "¿Cómo convierto una cadena a un número?" #: ../Doc/faq/programming.rst:853 msgid "" @@ -944,6 +1317,9 @@ msgid "" "``int('144') == 144``. Similarly, :func:`float` converts to floating-point, " "e.g. ``float('144') == 144.0``." msgstr "" +"Para enteros puedes usar la función incorporada constructor de tipos :func:" +"`int`, e.g. ``int('144') == 144``. De forma similar, :func:`float` " +"convierte a un número de coma flotante, e.g. ``float('144') == 144.0``." #: ../Doc/faq/programming.rst:857 msgid "" @@ -954,6 +1330,13 @@ msgid "" "interpreted using Python's rules: a leading '0o' indicates octal, and '0x' " "indicates a hex number." msgstr "" +"Por defecto, estas interpretan el número como decimal de tal forma que " +"``int('0144') == 144`` y ``int('0x144')`` lanzará :exc:`ValueError`. " +"``int(string, base)`` toma la base para convertirlo desde un segundo " +"parámetro opcional, por tanto ``int('0x144', 16) == 324``. Si la base se " +"especifica como 0, el número se interpreta usando las reglas de Python's " +"rules: un prefijo '0o' indica octal y un prefijo '0x' indica un número " +"hexadecimal." #: ../Doc/faq/programming.rst:863 msgid "" @@ -964,6 +1347,12 @@ msgid "" "``__import__('os').system(\"rm -rf $HOME\")`` which would erase your home " "directory." msgstr "" +"No uses la función incorporada :func:`eval` si todo lo que necesitas es " +"convertir cadenas a números. :func:`eval` será considerablemente más lento " +"y presenta riesgos de seguridad: cualquiera podría introducir una exoresión " +"Python que presentara efectos indeseados. Por ejemplo, alguien podría " +"pasar``__import__('os').system(\"rm -rf $HOME\")`` lo cual borraría el " +"directorio home al completo." #: ../Doc/faq/programming.rst:870 msgid "" @@ -971,10 +1360,13 @@ msgid "" "expressions, so that e.g. ``eval('09')`` gives a syntax error because Python " "does not allow leading '0' in a decimal number (except '0')." msgstr "" +":func:`eval` también tiene el efecto de interpretar números como expresiones " +"Python , de tal forma que e.g. ``eval('09')`` dará un error de sintaxis " +"porque Python no permite un '0' inicial en un número decimal (excepto '0')." #: ../Doc/faq/programming.rst:876 msgid "How do I convert a number to a string?" -msgstr "" +msgstr "¿Cómo puedo convertir un número a una cadena?" #: ../Doc/faq/programming.rst:878 msgid "" @@ -985,10 +1377,16 @@ msgid "" "``\"{:04d}\".format(144)`` yields ``'0144'`` and ``\"{:.3f}\"." "format(1.0/3.0)`` yields ``'0.333'``." msgstr "" +"Para convertir, e.g., el número 144 a la cadena '144', usa el constructor de " +"tipos incorporado :func:`str`. Si deseas una representación hexadecimal o " +"octal usa la función incorporada :func:`hex` o :func:`oct`. Para un " +"formateado elaborado puedes ver las secciones de :ref:`f-strings` y :ref:" +"`formatstrings`, e.g. ``\"{:04d}\".format(144)`` produce ``'0144'`` y ``" +"\"{:.3f}\".format(1.0/3.0)`` produce ``'0.333'``." #: ../Doc/faq/programming.rst:887 msgid "How do I modify a string in place?" -msgstr "" +msgstr "¿Cómo puedo modificar una cadena en el mismo lugar?" #: ../Doc/faq/programming.rst:889 msgid "" @@ -998,14 +1396,19 @@ msgid "" "unicode data, try using an :class:`io.StringIO` object or the :mod:`array` " "module::" msgstr "" +"No puedes debido a que las cadenas son inmutables. En la mayoría de " +"situaciones solo deberías crear una nueva cadena a partir de varias partes " +"que quieras usar para crearla. Sin embargo, si necesitas un objeto con la " +"habilidad de modificar en el mismo lugar datos unicode prueba usando el " +"objeto :class:`io.StringIO` o el módulo :mod:`array`::" #: ../Doc/faq/programming.rst:919 msgid "How do I use strings to call functions/methods?" -msgstr "" +msgstr "¿Cómo puedo usar cadenas para invocar funciones/métodos?" #: ../Doc/faq/programming.rst:921 msgid "There are various techniques." -msgstr "" +msgstr "Existen varias técnicas." #: ../Doc/faq/programming.rst:923 msgid "" @@ -1014,24 +1417,31 @@ msgid "" "names of the functions. This is also the primary technique used to emulate " "a case construct::" msgstr "" +"Lo mejor sería usar un diccionario que mapee cadenas a funciones. La " +"principal ventaja de esta técnica es que las cadenas no necesitan ser " +"iguales que los nombres de las funciones. Esta es también la principal " +"técnica que se usa para emular una forma *case*::" #: ../Doc/faq/programming.rst:938 msgid "Use the built-in function :func:`getattr`::" -msgstr "" +msgstr "Usa la función incorporada :func:`getattr`::" #: ../Doc/faq/programming.rst:943 msgid "" "Note that :func:`getattr` works on any object, including classes, class " "instances, modules, and so on." msgstr "" +"Nótese que :func:`getattr` funciona en cualquier objeto, incluido clases, " +"instancias de clases, módulos, etc." #: ../Doc/faq/programming.rst:946 msgid "This is used in several places in the standard library, like this::" -msgstr "" +msgstr "Esto se usa en varios lugares de la biblioteca estándar, como esto::" #: ../Doc/faq/programming.rst:959 msgid "Use :func:`locals` or :func:`eval` to resolve the function name::" msgstr "" +"Usa :func:`locals` o :func:`eval` para resolver el nombre de la función::" #: ../Doc/faq/programming.rst:972 msgid "" @@ -1039,12 +1449,17 @@ msgid "" "control over the contents of the string, someone could pass a string that " "resulted in an arbitrary function being executed." msgstr "" +"Nota: Usar :func:`eval` es lento y peligroso. Si no tienes el control " +"absoluto del contenido de la cadena cualquiera podría introducir una cadena " +"que resulte en la ejecución de código arbitrario." #: ../Doc/faq/programming.rst:977 msgid "" "Is there an equivalent to Perl's chomp() for removing trailing newlines from " "strings?" msgstr "" +"¿Existe un equivalente a chomp() en Perl para eliminar nuevas líneas al " +"final de las cadenas?" #: ../Doc/faq/programming.rst:979 msgid "" @@ -1054,20 +1469,27 @@ msgid "" "empty lines at the end, the line terminators for all the blank lines will be " "removed::" msgstr "" +"Puedes usar ``S.rstrip(\"\\r\\n\")`` para eliminar todas las ocurrencias de " +"cualquier terminación de línea desde el final de la cadena ``S`` sin " +"eliminar el resto de espacios en blanco que le siguen. Si la cadena ``S`` " +"representa más de una línea con varias líneas vacias al final, las " +"terminaciones de línea para todas las líneas vacias se eliminarán::" #: ../Doc/faq/programming.rst:991 msgid "" "Since this is typically only desired when reading text one line at a time, " "using ``S.rstrip()`` this way works well." msgstr "" +"Ya que esto solo sería deseable, típicamente, cuando lees texto línea a " +"línea, usar ``S.rstrip()`` de esta forma funcionaría bien." #: ../Doc/faq/programming.rst:996 msgid "Is there a scanf() or sscanf() equivalent?" -msgstr "" +msgstr "¿Existe un equivalente a scanf() o a sscanf() ?" #: ../Doc/faq/programming.rst:998 msgid "Not as such." -msgstr "" +msgstr "No de la misma forma." #: ../Doc/faq/programming.rst:1000 msgid "" @@ -1078,58 +1500,79 @@ msgid "" "parameter which is useful if the line uses something other than whitespace " "as a separator." msgstr "" +"Para análisis sintáctico simple de la entrada, el método más sencillo es, " +"usualmente, el separar la línea en palabras delimitadas por espacios usando " +"el método :meth:`~str.split` de los objetos *string* y, posteriormente, " +"convertir cadenas decimales a valores usando :func:`int` o :func:`float`. " +"``split()`` permite un parámetro opcional \"sep\" que es útil si la línea " +"usa algo diferente a espacios en blanco como separador." #: ../Doc/faq/programming.rst:1006 msgid "" "For more complicated input parsing, regular expressions are more powerful " "than C's :c:func:`sscanf` and better suited for the task." msgstr "" +"Para análisis sintáctico de la entrada más complejo, las expresiones " +"regulares son más poderosas que :c:func:`sscanf` de C y se ajustan mejor a " +"esta tarea." #: ../Doc/faq/programming.rst:1011 msgid "What does 'UnicodeDecodeError' or 'UnicodeEncodeError' error mean?" -msgstr "" +msgstr "¿Qué significa 'UnicodeDecodeError' o 'UnicodeEncodeError'?" #: ../Doc/faq/programming.rst:1013 msgid "See the :ref:`unicode-howto`." -msgstr "" +msgstr "Ver :ref:`unicode-howto`." #: ../Doc/faq/programming.rst:1017 msgid "Performance" -msgstr "" +msgstr "Rendimiento" #: ../Doc/faq/programming.rst:1020 msgid "My program is too slow. How do I speed it up?" -msgstr "" +msgstr "Mi programa es muy lento. ¿Cómo puedo acelerarlo?" #: ../Doc/faq/programming.rst:1022 msgid "" "That's a tough one, in general. First, here are a list of things to " "remember before diving further:" msgstr "" +"Esa es una pregunta difícil, en general. Primero, aquí tienes una lista de " +"cosas a recordar antes de ir más allá:" #: ../Doc/faq/programming.rst:1025 msgid "" "Performance characteristics vary across Python implementations. This FAQ " "focusses on :term:`CPython`." msgstr "" +"Las características del rendimiento varían entre las distintas " +"implementaciones de Python. Estas preguntas frecuentes se enfocan en :term:" +"`CPython`." #: ../Doc/faq/programming.rst:1027 msgid "" "Behaviour can vary across operating systems, especially when talking about I/" "O or multi-threading." msgstr "" +"El comportamiento puede variar entre distintos sistemas operativos, " +"especialmente cuando se habla de tareas I/O o multi-tarea." #: ../Doc/faq/programming.rst:1029 msgid "" "You should always find the hot spots in your program *before* attempting to " "optimize any code (see the :mod:`profile` module)." msgstr "" +"Siempre deberías encontrar las partes importantes en tu programa *antes* de " +"intentar optimizar el código (ver el módulo :mod:`profile`)." #: ../Doc/faq/programming.rst:1031 msgid "" "Writing benchmark scripts will allow you to iterate quickly when searching " "for improvements (see the :mod:`timeit` module)." msgstr "" +"Escribir programas de comparación del rendimiento te permitirá iterar " +"rápidamente cuando te encuentres buscando mejoras (ver el módulo :mod:" +"`timeit`)." #: ../Doc/faq/programming.rst:1033 msgid "" @@ -1137,6 +1580,9 @@ msgid "" "any other technique) before potentially introducing regressions hidden in " "sophisticated optimizations." msgstr "" +"Es altamente recomendable disponer de una buena cobertura de código (a " +"partir de pruebas unitarias o cualquier otra técnica) antes de introducir " +"potenciales regresiones ocultas en sofisticadas optimizaciones." #: ../Doc/faq/programming.rst:1037 msgid "" @@ -1144,6 +1590,9 @@ msgid "" "some general principles which go a long way towards reaching acceptable " "performance levels:" msgstr "" +"Dicho lo anterior, existen muchos trucos para acelerar código Python. Aquí " +"tienes algunos principios generales que te permitirán llegar a alcanzar " +"niveles de rendimiento aceptables:" #: ../Doc/faq/programming.rst:1041 msgid "" @@ -1151,12 +1600,17 @@ msgid "" "larger benefits than trying to sprinkle micro-optimization tricks all over " "your code." msgstr "" +"El hacer más rápido tu algoritmo (o cambiarlo por alguno más rápido) puede " +"provocar mayores beneficios que intentar unos pocos trucos de micro-" +"optimización a través de todo tu código." #: ../Doc/faq/programming.rst:1045 msgid "" "Use the right data structures. Study documentation for the :ref:`bltin-" "types` and the :mod:`collections` module." msgstr "" +"Utiliza las estructuras de datos correctas. Estudia la documentación para " +"los :ref:`bltin-types` y el módulo :mod:`collections`." #: ../Doc/faq/programming.rst:1048 msgid "" @@ -1168,6 +1622,13 @@ msgid "" "do sorting (and see the :ref:`sortinghowto` for examples of moderately " "advanced usage)." msgstr "" +"Cuando la biblioteca estándar proporciona una primitiva de hacer algo, esta " +"supuestamente será (aunque no se garantiza) más rápida que cualquier otra " +"alternativa que se te ocurra. Esto es doblemente cierto si las primitivas " +"han sido escritas en C, como los *builtins* y algunos tipos extendidos. Por " +"ejemplo, asegúrate de usar el método integrado :meth:`list.sort`o la función " +"relacionada :func:`sorted` para ordenar (y ver :ref:`sortinghowto` para ver " +"ejemplos de uso moderadamente avanzados)." #: ../Doc/faq/programming.rst:1056 msgid "" @@ -1177,6 +1638,11 @@ msgid "" "especially under the form of tiny functions or methods (which are also often " "detrimental to readability)." msgstr "" +"Las abstracciones tienden a crear rodeos y fuerzan al intérpreta a trabajar " +"más. Si el nivel de rodeos sobrepasa el trabajo útil realizado tu programa " +"podría ser más lento. Deberías evitar abstracciones excesivas, " +"especialmente, en forma de pequeñas funciones o métodos (que también va en " +"detrimento de la legibilidad)." #: ../Doc/faq/programming.rst:1062 msgid "" @@ -1189,16 +1655,28 @@ msgid "" "skills, you can also :ref:`write a C extension module ` " "yourself." msgstr "" +"Si has alcanzado el límite de lo que permite el uso de Python puro, existen " +"otras herramientas que te permiten ir más allá. Por ejemplo, `Cython " +"`_ puede compilar una versión ligeramente modificada del " +"código Python en una extensión en C y se podría usar en muchas plataformas " +"diferentes. Cython puede obtener ventaja de la compilación (y anotaciones " +"de tipos opcionales) para hacer que tu código sea significativamente más " +"rápido cuando se ejecuta. Si confías en tus habilidades de programar en C " +"también puedes escribir :ref:`un módulo de extensión en C ` " +"tú mismo." #: ../Doc/faq/programming.rst:1072 msgid "" "The wiki page devoted to `performance tips `_." msgstr "" +"La página de la wiki dedicada a `trucos de rendimiento `_." #: ../Doc/faq/programming.rst:1078 msgid "What is the most efficient way to concatenate many strings together?" msgstr "" +"¿Cuál es la forma más eficiente de concatenar muchas cadenas conjuntamente?" #: ../Doc/faq/programming.rst:1080 msgid "" From dbd897b288fd5835852909fdad951f00b27949db Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 13:48:31 +0200 Subject: [PATCH 02/36] Update faq/programming.po Co-authored-by: Manuel Kaufmann --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index dd819b919f..6742883dba 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -59,7 +59,7 @@ msgid "" "Library Reference Manual `. You can also write your own debugger by " "using the code for pdb as an example." msgstr "" -"El módulo pdf es en depurador en modo consola simple pero conveniente para " +"El módulo pdb es en depurador en modo consola simple pero conveniente para " "Python. Es parte de la biblioteca estándar de Python y está :mod:" "`documentado en el manual de referencia de la biblioteca `. Puedes " "escribir tu propio depurador usando el código de pdb como ejemplo." From d5cf885039a64f3995c736e7fbb20c0ea1acaa41 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 13:51:00 +0200 Subject: [PATCH 03/36] Update faq/programming.po Co-authored-by: Manuel Kaufmann --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 6742883dba..0c621ec2bd 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -122,7 +122,7 @@ msgid "" "https://www.gnu.org/software/ddd." msgstr "" "Pydb es una versión del depurador estándar de Python pdb, modificado para " -"sarse con DDD (Data Display Debugger), un popular frontal gráfico para " +"usarse con DDD (*Data Display Debugger*), un popular frontal gráfico para " "depuradores. Pydb se puede encontrar en http://bashdb.sourceforge.net/pydb/ " "y DDD se puede encontrar en https://www.gnu.org/software/ddd." From 18b6593f4ec9fc6bb7195f2416a9518fe5ea1389 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 13:51:12 +0200 Subject: [PATCH 04/36] Update faq/programming.po Co-authored-by: Manuel Kaufmann --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 0c621ec2bd..bec6cdc4a7 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -173,7 +173,7 @@ msgid "" "https://docs.pylint.org/ provides a full list of Pylint's features." msgstr "" "`Pylint `_ es otra herramienta que comprueba si un " -"módulo satisaface un esttándar de código y, además, también hace posible " +"módulo satisaface un estándar de código y, además, también hace posible " "escribir *plug-ins* para añadir características personalizadas. Además de " "la comprobación de errores que realiza PyChecker, Pylint ofrece algunas " "características adicionales como la comprobación de la longitud de línea, si " From 0a2224a46c78924ccd03428bcfdf0bfab99534d7 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 13:51:29 +0200 Subject: [PATCH 05/36] Update faq/programming.po Co-authored-by: Manuel Kaufmann --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index bec6cdc4a7..429e4d68fe 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -221,7 +221,7 @@ msgid "" "the standard Python modules." msgstr "" "Una forma es usando la herramienta *freeze*, la cual viene incluida con el " -"árbol de código Pythoncomo ``Tools/freeze``. Convierte el byte code Python a " +"árbol de código Python como ``Tools/freeze``. Convierte el byte code Python a " "arrays C; un compilador C compiler permite incrustar todos tus módulos en un " "nuevo programa que, posteriormente se puede enlazar con los módulos estándar " "de Python." From d5d87b967b10f8b31191f8ed136ff92aabfecb11 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 13:51:43 +0200 Subject: [PATCH 06/36] Update faq/programming.po Co-authored-by: Manuel Kaufmann --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 429e4d68fe..d4c7210a35 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -222,7 +222,7 @@ msgid "" msgstr "" "Una forma es usando la herramienta *freeze*, la cual viene incluida con el " "árbol de código Python como ``Tools/freeze``. Convierte el byte code Python a " -"arrays C; un compilador C compiler permite incrustar todos tus módulos en un " +"arrays C; un compilador C permite incrustar todos tus módulos en un " "nuevo programa que, posteriormente se puede enlazar con los módulos estándar " "de Python." From bd7fa478e0fdda9e90ccd1209fe2f07afb2d9277 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 13:52:29 +0200 Subject: [PATCH 07/36] Update faq/programming.po Co-authored-by: Manuel Kaufmann --- faq/programming.po | 3 --- 1 file changed, 3 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index d4c7210a35..743c536313 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -248,9 +248,6 @@ msgstr "" "se usan realmente en el programa. A continuación, compila el código C " "generado y lo enlaza con el resto del intérprete de Python para formar un " "binario autónomo que actúa exactamente igual que su script.\n" -"\n" -"Traducción realizada con la versión gratuita del traductor www.DeepL.com/" -"Translator" #: ../Doc/faq/programming.rst:106 msgid "" From 9111b37f206bd773ff599a64d477ad0e74806733 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 14:25:11 +0200 Subject: [PATCH 08/36] Typo --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 743c536313..18b2ee7211 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -173,7 +173,7 @@ msgid "" "https://docs.pylint.org/ provides a full list of Pylint's features." msgstr "" "`Pylint `_ es otra herramienta que comprueba si un " -"módulo satisaface un estándar de código y, además, también hace posible " +"módulo satisface un estándar de código y, además, también hace posible " "escribir *plug-ins* para añadir características personalizadas. Además de " "la comprobación de errores que realiza PyChecker, Pylint ofrece algunas " "características adicionales como la comprobación de la longitud de línea, si " From d0a7910b10b45c64f293870f37e2bcc25052364a Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 14:26:47 +0200 Subject: [PATCH 09/36] fix typo --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 18b2ee7211..69ba870082 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -255,7 +255,7 @@ msgid "" "which don't. One is Thomas Heller's py2exe (Windows only) at" msgstr "" "Obviamente, freeze necesita un compilador C. Existen otras utilidades que " -"no necesitan un compilador C. Una de ellas es elpy2exe de Thomas Heller " +"no necesitan un compilador C. Una de ellas es py2exe de Thomas Heller " "(solo disponible para Windows) en" #: ../Doc/faq/programming.rst:109 From eacb792af36cf9817f0e01397dd3625b338ff294 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 14:27:52 +0200 Subject: [PATCH 10/36] typo --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 69ba870082..c0e853bf2c 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -273,7 +273,7 @@ msgstr "" #: ../Doc/faq/programming.rst:115 msgid "Are there coding standards or a style guide for Python programs?" msgstr "" -"¿Existen estándares de codigo o una guía de estilo para programas Python?" +"¿Existen estándares de código o una guía de estilo para programas Python?" #: ../Doc/faq/programming.rst:117 msgid "" From 99f34f4b20b48c9b96baa1e7f4e9df8b6131965e Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 14:28:30 +0200 Subject: [PATCH 11/36] typo --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index c0e853bf2c..4691337f41 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -337,7 +337,7 @@ msgid "" "In the example above you can access the outer scope variable by declaring it " "global:" msgstr "" -"En el ejempo anterior puedes acceder al ámbito de aplicación exterior a la " +"En el ejemplo anterior puedes acceder al ámbito de aplicación exterior a la " "variable declarándola como global:" #: ../Doc/faq/programming.rst:171 From 7515cd1683ec66061e526de2f8b7ef9e2eb3aaa7 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 10 May 2020 14:39:47 +0200 Subject: [PATCH 12/36] fix typos --- faq/programming.po | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index 4691337f41..3dc42bd330 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -457,7 +457,7 @@ msgid "" msgstr "" "Aquí, ``n=x`` crea una nueva variable ``n`` local a la función lambda y " "ejecutada cuando la función lambda se define de tal forma que tiene el mismo " -"valor que tenía ``x`` en ese punto en el bucle. Esto significa qie el valor " +"valor que tenía ``x`` en ese punto en el bucle. Esto significa que el valor " "de ``n`` será ``0`` en la primera función lambda, ``1`` en la segunda, ``2`` " "en la tercera y así sucesivamente. Por tanto, ahora cada lambda devolverá el " "resultado correcto::" @@ -467,7 +467,7 @@ msgid "" "Note that this behaviour is not peculiar to lambdas, but applies to regular " "functions too." msgstr "" -"Es de destacar que este comportamiento no es puculiar de las funciones " +"Es de destacar que este comportamiento no es peculiar de las funciones " "lambda sino que aplica también a las funciones regulares." #: ../Doc/faq/programming.rst:263 @@ -512,7 +512,7 @@ msgstr "" #: ../Doc/faq/programming.rst:291 msgid "What are the \"best practices\" for using import in a module?" -msgstr "¿Cuáles son las \"bunas prácticas\" para usar import en un módulo?" +msgstr "¿Cuáles son las \"buenas prácticas\" para usar import en un módulo?" #: ../Doc/faq/programming.rst:293 msgid "" @@ -755,7 +755,7 @@ msgstr "" ":term:`Parámetros ` se definen mediante los nombres que aparecen " "en la definición de una función mientras que :term:`argumentos ` " "son los valores que se pasan a la función cuando la invocamos. Los " -"Parametros definen qué tipos de argumentos puede aceptar una función. por " +"Parámetros definen qué tipos de argumentos puede aceptar una función. por " "ejemplo, dada la definición de la función::" #: ../Doc/faq/programming.rst:428 @@ -854,13 +854,13 @@ msgid "" "copy of ``y``, you'll instead end up with ``None``, which will likely cause " "your program to generate an easily diagnosed error." msgstr "" -"Algunas operaciones (por ejemplo ``y.append(10)`` y ``y.sort()``) mutaa al " +"Algunas operaciones (por ejemplo ``y.append(10)`` y ``y.sort()``) mutan al " "objeto mientras que operaciones que podrían parecer similares (por ejemplo " "``y = y + [10]`` y ``sorted(y)``) crean un nuevo objeto. En general, en " "Python (y en todo momento en la biblioteca estándar) un método que muta un " "objeto devolverá ``None`` para evitar tener dos tipos de operaciones que " "puedan ser confusas. Por tanto, si escribes accidentalmente ``y.sort()`` " -"pensando que te devolverá una copia ordenadade ``y``, obtendrás, en su " +"pensando que te devolverá una copia ordenada de ``y``, obtendrás, en su " "lugar, ``None``, lo cual ayudará a que tu programa genera un error que pueda " "ser diagnosticado fácilmente." @@ -901,7 +901,7 @@ msgid "" "but operations that transform that value into a new value always return a " "new object." msgstr "" -"Si tenemos un objeto immutable (:class:`str`, :class:`int`, :class:`tuple`, " +"Si tenemos un objeto inmutable (:class:`str`, :class:`int`, :class:`tuple`, " "etc.), todas las variables que referencian al mismo verán siempre el mismo " "valor pero las operaciones que transforman ese valor en un nuevo valor " "siempre devuelve un nuevo objeto." @@ -917,7 +917,7 @@ msgstr "" #: ../Doc/faq/programming.rst:512 msgid "How do I write a function with output parameters (call by reference)?" msgstr "" -"¿Cómo pueo escribir una función sin parámetros (invocación mediante " +"¿Cómo puedo escribir una función sin parámetros (invocación mediante " "referencia)?" #: ../Doc/faq/programming.rst:514 @@ -953,7 +953,7 @@ msgstr "Pasando un objeto mutable (intercambiable en el mismo sitio)::" #: ../Doc/faq/programming.rst:544 msgid "By passing in a dictionary that gets mutated::" -msgstr "Pansado un diccionario que muta::" +msgstr "Pasando un diccionario que muta::" #: ../Doc/faq/programming.rst:554 msgid "Or bundle up values in a class instance::" @@ -1004,7 +1004,7 @@ msgid "" msgstr "" "El enfoque del objeto invocable tiene la desventaja que es un ligeramente " "más lento y el resultado es un código levemente más largo. Sin embargo, " -"destacar que una colección de invocables pueden compartirsu firma vía " +"destacar que una colección de invocables pueden compartir su firma vía " "herencia::" #: ../Doc/faq/programming.rst:612 @@ -1029,7 +1029,7 @@ msgid "" "case. Not all objects can be copied, but most can." msgstr "" "En general, prueba :func:`copy.copy` o :func:`copy.deepcopy` para el caso " -"general. No todos los objetos se pueden copiat pero la mayoría sí que pueden " +"general. No todos los objetos se pueden copiar pero la mayoría sí que pueden " "copiarse." #: ../Doc/faq/programming.rst:640 @@ -1057,7 +1057,7 @@ msgstr "" "Para la instancia x de una clase definida por el usuario, ``dir(x)`` " "devuelve una lista de nombres ordenados alfabéticamente que contiene los " "atributos y métodos de la instancia y los atributos definidos mediante su " -"calse." +"clase." #: ../Doc/faq/programming.rst:659 msgid "How can my code discover the name of an object?" @@ -1144,7 +1144,7 @@ msgid "" "above is evaluated as if you had entered::" msgstr "" "Debido a que la coma no es un operador sino un separador entre expresiones " -"lo anterior se evalue como se ha introducido::" +"lo anterior se evalúe como se ha introducido::" #: ../Doc/faq/programming.rst:712 msgid "not::" @@ -1220,7 +1220,7 @@ msgid "" msgstr "" "Un *slash* en la lista de argumentos de una función denota que los " "parámetros previos al mismo son únicamente posicionales. Parámetros " -"únicamente posicionales son aquellos cuyos nombres no son usabels " +"únicamente posicionales son aquellos cuyos nombres no son usables " "internamente. Mediante la llamada a una función que acepta parámetros " "únicamente posicionales, los argumentos se mapean a parámetros basados " "únicamente en su posición. Por ejemplo, :func:`pow` es una función que " @@ -1286,7 +1286,7 @@ msgid "" msgstr "" "entonces la división entera debe devolver el valor base más bajo. C también " "requiere que esa esa identidad se mantenga de tal forma que cuando los " -"compiladores truncan ``i // j`` nacesitan que ``i % j`` tenga el mismo signo " +"compiladores truncan ``i // j`` necesitan que ``i % j`` tenga el mismo signo " "que ``i``." #: ../Doc/faq/programming.rst:839 @@ -1345,7 +1345,7 @@ msgid "" msgstr "" "No uses la función incorporada :func:`eval` si todo lo que necesitas es " "convertir cadenas a números. :func:`eval` será considerablemente más lento " -"y presenta riesgos de seguridad: cualquiera podría introducir una exoresión " +"y presenta riesgos de seguridad: cualquiera podría introducir una expresión " "Python que presentara efectos indeseados. Por ejemplo, alguien podría " "pasar``__import__('os').system(\"rm -rf $HOME\")`` lo cual borraría el " "directorio home al completo." @@ -1468,8 +1468,8 @@ msgstr "" "Puedes usar ``S.rstrip(\"\\r\\n\")`` para eliminar todas las ocurrencias de " "cualquier terminación de línea desde el final de la cadena ``S`` sin " "eliminar el resto de espacios en blanco que le siguen. Si la cadena ``S`` " -"representa más de una línea con varias líneas vacias al final, las " -"terminaciones de línea para todas las líneas vacias se eliminarán::" +"representa más de una línea con varias líneas vacías al final, las " +"terminaciones de línea para todas las líneas vacías se eliminarán::" #: ../Doc/faq/programming.rst:987 msgid "" @@ -1634,7 +1634,7 @@ msgid "" "especially under the form of tiny functions or methods (which are also often " "detrimental to readability)." msgstr "" -"Las abstracciones tienden a crear rodeos y fuerzan al intérpreta a trabajar " +"Las abstracciones tienden a crear rodeos y fuerzan al intérprete a trabajar " "más. Si el nivel de rodeos sobrepasa el trabajo útil realizado tu programa " "podría ser más lento. Deberías evitar abstracciones excesivas, " "especialmente, en forma de pequeñas funciones o métodos (que también va en " From fd7b772dd6b92cf389eeeb65bc1483d38c21b326 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 12 May 2020 23:07:26 +0200 Subject: [PATCH 13/36] =?UTF-8?q?Change=20"puntos=20de=20ruptura"=20with?= =?UTF-8?q?=20"puntos=20de=20interrupci=C3=B3n"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- faq/programming.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index 3dc42bd330..5e899dca41 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -39,7 +39,7 @@ msgid "" "Is there a source code level debugger with breakpoints, single-stepping, " "etc.?" msgstr "" -"¿Existe un depurador a nivel de código fuente con puntos de ruptura, " +"¿Existe un depurador a nivel de código fuente con puntos de interrupción, " "depuración paso a paso, etc?" #: ../Doc/faq/programming.rst:17 ../Doc/faq/programming.rst:63 @@ -84,7 +84,7 @@ msgid "" "activestate.com/activepython\\ )." msgstr "" "PythonWin es un IDE Python que incluye un depurador con GUI basado en pdb. " -"El depurador Pythonwin colorea los puntos de ruptura y dispone de " +"El depurador Pythonwin colorea los puntos de interrupción y dispone de " "características geniales como la depuración de programas no modificados " "mediante Pythonwin. Pythonwin está disponible como parte del proyecto `Las " "extensiones de Python para Windows Date: Sat, 23 May 2020 21:40:04 +0200 Subject: [PATCH 14/36] Traducido archivo faq/programming.po --- .pre-commit-config.yaml | 18 -- faq/programming.po | 485 ++++++++++++++++++++++++++++++++++------ 2 files changed, 422 insertions(+), 81 deletions(-) delete mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index da64388c62..0000000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,18 +0,0 @@ -repos: -- repo: https://github.com/humitos/powrap - rev: pre-commit - hooks: - - id: powrap - -# This one requires package ``hunspell-es_es`` in Archlinux -- repo: https://github.com/humitos/pospell - rev: pre-commit - hooks: - - id: pospell - args: ['--personal-dict', 'dict', '--modified', '--language', 'es_ES', '--language', 'es_AR'] - -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.5.0 - hooks: - - id: file-contents-sorter - files: dict diff --git a/faq/programming.po b/faq/programming.po index 5e899dca41..139fe9fac3 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: 2020-05-09 17:40+0200\n" +"PO-Revision-Date: 2020-05-23 21:36+0200\n" "Last-Translator: Kiko Correoso\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" @@ -19,8 +19,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Last-Translator: \n" "Language: es\n" -"X-Generator: Poedit 1.8.11\n" - +"X-Generator: Poedit 2.0.6\n" #: ../Doc/faq/programming.rst:5 msgid "Programming FAQ" @@ -221,10 +220,10 @@ msgid "" "the standard Python modules." msgstr "" "Una forma es usando la herramienta *freeze*, la cual viene incluida con el " -"árbol de código Python como ``Tools/freeze``. Convierte el byte code Python a " -"arrays C; un compilador C permite incrustar todos tus módulos en un " -"nuevo programa que, posteriormente se puede enlazar con los módulos estándar " -"de Python." +"árbol de código Python como ``Tools/freeze``. Convierte el byte code Python " +"a arrays C; un compilador C permite incrustar todos tus módulos en un nuevo " +"programa que, posteriormente se puede enlazar con los módulos estándar de " +"Python." #: ../Doc/faq/programming.rst:97 msgid "" @@ -247,7 +246,7 @@ msgstr "" "configuración a medida que sólo contiene aquellos módulos incorporados que " "se usan realmente en el programa. A continuación, compila el código C " "generado y lo enlaza con el resto del intérprete de Python para formar un " -"binario autónomo que actúa exactamente igual que su script.\n" +"binario autónomo que actúa exactamente igual que su script." #: ../Doc/faq/programming.rst:106 msgid "" @@ -255,8 +254,8 @@ msgid "" "which don't. One is Thomas Heller's py2exe (Windows only) at" msgstr "" "Obviamente, freeze necesita un compilador C. Existen otras utilidades que " -"no necesitan un compilador C. Una de ellas es py2exe de Thomas Heller " -"(solo disponible para Windows) en" +"no necesitan un compilador C. Una de ellas es py2exe de Thomas Heller (solo " +"disponible para Windows) en" #: ../Doc/faq/programming.rst:109 msgid "http://www.py2exe.org/" @@ -1681,16 +1680,24 @@ msgid "" "creates a new object. In the general case, the total runtime cost is " "quadratic in the total string length." msgstr "" +"Objetos :class:`str` y :class:`bytes` son inmutables, por tanto, concatenar " +"muchas cadenas en una sola es ineficiente debido a que cada concatenación " +"crea un nuevo objeto. En el caso más general, el coste total en tiempo de " +"ejecución es cuadrático en relación a la longitud de la cadena final." #: ../Doc/faq/programming.rst:1081 msgid "" "To accumulate many :class:`str` objects, the recommended idiom is to place " "them into a list and call :meth:`str.join` at the end::" msgstr "" +"Para acumular muchos objetos :class:`str`, la forma recomendada sería " +"colocarlos en una lista y llamar al método :meth:`str.join` al final::" #: ../Doc/faq/programming.rst:1089 msgid "(another reasonably efficient idiom is to use :class:`io.StringIO`)" msgstr "" +"(otra forma que sería razonable en términos de eficiencia sería usar :class:" +"`io.StringIO`)" #: ../Doc/faq/programming.rst:1091 msgid "" @@ -1698,20 +1705,26 @@ msgid "" "extend a :class:`bytearray` object using in-place concatenation (the ``+=`` " "operator)::" msgstr "" +"Para acumular muchos objetos :class:`bytes`, la forma recomendada sería " +"extender un objeto :class:`bytearray` usando el operador de concatenación en " +"el lugar, \"in-place\" (el operador ``+=``)::" #: ../Doc/faq/programming.rst:1100 msgid "Sequences (Tuples/Lists)" -msgstr "" +msgstr "Secuencias (Tuplas/Listas)" #: ../Doc/faq/programming.rst:1103 msgid "How do I convert between tuples and lists?" -msgstr "" +msgstr "¿Cómo convertir entre tuplas y listas?" #: ../Doc/faq/programming.rst:1105 msgid "" "The type constructor ``tuple(seq)`` converts any sequence (actually, any " "iterable) into a tuple with the same items in the same order." msgstr "" +"El constructor ``tuple(seq)`` convierte cualquier secuencia (en realidad, " +"cualquier iterable) en una tupla con los mismos elementos y en el mismo " +"orden." #: ../Doc/faq/programming.rst:1108 msgid "" @@ -1720,6 +1733,11 @@ msgid "" "copy but returns the same object, so it is cheap to call :func:`tuple` when " "you aren't sure that an object is already a tuple." msgstr "" +"Por ejemplo, ``tuple([1, 2, 3])`` lo convierte en ``(1, 2, 3)`` y " +"``tuple('abc')`` lo convierte en ``('a', 'b', 'c')``. Si el argumento es " +"una tupla no creará una nueva copia y devolverá el mismo objeto, por tanto, " +"llamar a :func:`tuple` no tendrá mucho coste si no estás seguro si un objeto " +"ya es una tupla." #: ../Doc/faq/programming.rst:1113 msgid "" @@ -1728,10 +1746,15 @@ msgid "" "3))`` yields ``[1, 2, 3]`` and ``list('abc')`` yields ``['a', 'b', 'c']``. " "If the argument is a list, it makes a copy just like ``seq[:]`` would." msgstr "" +"El constructor ``list(seq)`` convierte cualquier secuencia o iterable en una " +"lista con los mismos elementos y en el mismo orden. Por ejemplo, ``list((1, " +"2, 3))`` lo convierte a ``[1, 2, 3]`` y ``list('abc')`` lo convierte a " +"``['a', 'b', 'c']``. Si el argumento es una lista, hará una copia como lo " +"haría ``seq[:]``." #: ../Doc/faq/programming.rst:1120 msgid "What's a negative index?" -msgstr "" +msgstr "¿Qué es un índice negativo?" #: ../Doc/faq/programming.rst:1122 msgid "" @@ -1741,6 +1764,10 @@ msgid "" "(next to last) index and so forth. Think of ``seq[-n]`` as the same as " "``seq[len(seq)-n]``." msgstr "" +"Las secuencias en Python están indexadas con números positivos y negativos. " +"Para los números positivos el 0 será el primer índice, el 1 el segundo y " +"así en adelante. Para los índices negativos el -1 el último índice, el -2 " +"el penúltimo, etc. Piensa en ``seq[-n]`` como si fuera ``seq[len(seq)-n]``." #: ../Doc/faq/programming.rst:1127 msgid "" @@ -1748,63 +1775,78 @@ msgid "" "all of the string except for its last character, which is useful for " "removing the trailing newline from a string." msgstr "" +"El uso de índices negativos puede ser muy conveniente. Por ejemplo " +"``S[:-1]`` se usa para todo la cadena excepto para su último carácter, lo " +"cual es útil para eliminar el salto de línea final de una cadena." #: ../Doc/faq/programming.rst:1133 msgid "How do I iterate over a sequence in reverse order?" -msgstr "" +msgstr "¿Cómo puedo iterar sobre una secuencia en orden inverso?" #: ../Doc/faq/programming.rst:1135 msgid "" "Use the :func:`reversed` built-in function, which is new in Python 2.4::" msgstr "" +"Usa la función incorporada :func:`reversed`, la cual se introdujo en la " +"versión de 2.4 de Python::" #: ../Doc/faq/programming.rst:1140 msgid "" "This won't touch your original sequence, but build a new copy with reversed " "order to iterate over." msgstr "" +"Esto no transformará la secuencia original sino que creará una nueva copia " +"en orden inverso por la que se puede iterar." #: ../Doc/faq/programming.rst:1143 msgid "With Python 2.3, you can use an extended slice syntax::" -msgstr "" +msgstr "Desde Python 2.3 puedes usar la sintaxis extendida de rebanado::" #: ../Doc/faq/programming.rst:1150 msgid "How do you remove duplicates from a list?" -msgstr "" +msgstr "¿Cómo eliminar duplicados de una lista?" #: ../Doc/faq/programming.rst:1152 msgid "See the Python Cookbook for a long discussion of many ways to do this:" msgstr "" +"Puedes echar un vistazo al recetario de Python para ver una gran discusión " +"mostrando muchas formas de hacer esto:" #: ../Doc/faq/programming.rst:1154 msgid "https://code.activestate.com/recipes/52560/" -msgstr "" +msgstr "https://code.activestate.com/recipes/52560/" #: ../Doc/faq/programming.rst:1156 msgid "" "If you don't mind reordering the list, sort it and then scan from the end of " "the list, deleting duplicates as you go::" msgstr "" +"Si no te preocupa que la lista se reordene la puedes ordenar y, después, y " +"después escanearla desde el final borrando duplicados a medida que avanzas::" #: ../Doc/faq/programming.rst:1168 msgid "" "If all elements of the list may be used as set keys (i.e. they are all :term:" "`hashable`) this is often faster ::" msgstr "" +"Si todos los elementos de la lista pueden ser usados como claves (i.e. son " +"todos :term:`hashable`) esto será, en general, más rápido ::" #: ../Doc/faq/programming.rst:1173 msgid "" "This converts the list into a set, thereby removing duplicates, and then " "back into a list." msgstr "" +"Esto convierte la lista en un conjunto eliminando, por tanto, los duplicados " +"y, posteriormente, puedes volver a una lista." #: ../Doc/faq/programming.rst:1178 msgid "How do you make an array in Python?" -msgstr "" +msgstr "¿Cómo se puede hacer un array en Python?" #: ../Doc/faq/programming.rst:1180 msgid "Use a list::" -msgstr "" +msgstr "Usa una lista::" #: ../Doc/faq/programming.rst:1184 msgid "" @@ -1812,6 +1854,9 @@ msgid "" "primary difference is that a Python list can contain objects of many " "different types." msgstr "" +"Las listas son equivalentes en complejidad temporal a arrays en C o Pascal; " +"La principal diferencia es que una lista en Python puede contener objetos de " +"diferentes tipos." #: ../Doc/faq/programming.rst:1187 msgid "" @@ -1820,11 +1865,17 @@ msgid "" "lists. Also note that the Numeric extensions and others define array-like " "structures with various characteristics as well." msgstr "" +"El módulo ``array`` proporciona, también, métodos para crear arrays de tipo " +"fijo con representaciones compactas pero son más lentos de indexar que las " +"listas. Además, debes tener en cuenta que las extensiones Numeric y otras " +"permiten definen estructuras de tipo array con diversas características." #: ../Doc/faq/programming.rst:1192 msgid "" "To get Lisp-style linked lists, you can emulate cons cells using tuples::" msgstr "" +"Para obtener listas enlazadas al estilo de las de Lisp, puedes emular celdas " +"cons usando tuplas::" #: ../Doc/faq/programming.rst:1196 msgid "" @@ -1833,22 +1884,29 @@ msgid "" "``lisp_list[1]``. Only do this if you're sure you really need to, because " "it's usually a lot slower than using Python lists." msgstr "" +"Se deseas que haya mutabilidad podrías usar listas en lugar de tuplas. El " +"análogo a un car de Lisp es ``lisp_list[0]`` y al análogo a cdr es " +"``lisp_list[1]``. Haz esto solo si estás seguro que es lo que necesitas " +"debido a que, normalmente, será bastante más lento que el usar listas " +"Python." #: ../Doc/faq/programming.rst:1205 msgid "How do I create a multidimensional list?" -msgstr "" +msgstr "¿Cómo puedo crear una lista multidimensional?" #: ../Doc/faq/programming.rst:1207 msgid "You probably tried to make a multidimensional array like this::" msgstr "" +"Seguramente hayas intentado crear un array multidimensional de la siguiente " +"forma::" #: ../Doc/faq/programming.rst:1211 msgid "This looks correct if you print it:" -msgstr "" +msgstr "Esto parece correcto si lo muestras en pantalla:" #: ../Doc/faq/programming.rst:1222 msgid "But when you assign a value, it shows up in multiple places:" -msgstr "" +msgstr "Pero cuando asignas un valor, se muestra en múltiples sitios:" #: ../Doc/faq/programming.rst:1234 msgid "" @@ -1857,37 +1915,50 @@ msgid "" "containing 3 references to the same list of length two. Changes to one row " "will show in all rows, which is almost certainly not what you want." msgstr "" +"La razón es que replicar una lista con ``*`` no crea copias, solo crea " +"referencias a los objetos existentes. El ``*3`` crea una lista conteniendo " +"3 referencias a la misma lista de longitud dos. Cambios a una fila se " +"mostrarán en todas las filas, lo cual, seguramente, no es lo que deseas." #: ../Doc/faq/programming.rst:1239 msgid "" "The suggested approach is to create a list of the desired length first and " "then fill in each element with a newly created list::" msgstr "" +"El enfoque recomendado sería crear, primero, una lista de la longitud " +"deseada y, después, rellenar cada elemento con una lista creada en ese " +"momento::" #: ../Doc/faq/programming.rst:1246 msgid "" "This generates a list containing 3 different lists of length two. You can " "also use a list comprehension::" msgstr "" +"Esto genera una lista conteniendo 3 listas distintas de longitud dos. " +"También puedes usar una comprensión de lista::" #: ../Doc/faq/programming.rst:1252 msgid "" "Or, you can use an extension that provides a matrix datatype; `NumPy `_ is the best known." msgstr "" +"O puedes usar una extensión que proporcione un tipo de dato para matrices; " +"`NumPy `_ es la más conocida." #: ../Doc/faq/programming.rst:1257 msgid "How do I apply a method to a sequence of objects?" -msgstr "" +msgstr "¿Cómo puedo aplicar un método a una secuencia de objetos?" #: ../Doc/faq/programming.rst:1259 msgid "Use a list comprehension::" -msgstr "" +msgstr "Usa una comprensión de listas::" #: ../Doc/faq/programming.rst:1266 msgid "" "Why does a_tuple[i] += ['item'] raise an exception when the addition works?" msgstr "" +"¿Por qué hacer lo siguiente, a_tuple[i] += ['item'], lanza una excepción " +"cuando la suma funciona?" #: ../Doc/faq/programming.rst:1268 msgid "" @@ -1895,6 +1966,9 @@ msgid "" "operators are *assignment* operators, and the difference between mutable and " "immutable objects in Python." msgstr "" +"Esto es debido a la combinación del hecho de que un operador de asignación " +"aumentada es un operador de *asignación* y a la diferencia entre objetos " +"mutables e inmutable en Python." #: ../Doc/faq/programming.rst:1272 msgid "" @@ -1902,10 +1976,13 @@ msgid "" "applied to elements of a tuple that point to mutable objects, but we'll use " "a ``list`` and ``+=`` as our exemplar." msgstr "" +"Esta discusión aplica, en general, cuando los operadores de asignación " +"aumentada se aplican a elementos de una tupla que apuntan a objetos " +"mutables. Pero vamos a usar una ``lista`` y ``+=`` para el ejemplo." #: ../Doc/faq/programming.rst:1276 msgid "If you wrote::" -msgstr "" +msgstr "Si escribes::" #: ../Doc/faq/programming.rst:1284 msgid "" @@ -1915,28 +1992,39 @@ msgid "" "to element ``0`` of the tuple, we get an error because we can't change what " "an element of a tuple points to." msgstr "" +"La razón por la que se produce la excepción debería ser evidente: ``1`` se " +"añade al objeto ``a_tuple[0]`` que apunta a (``1``), creando el objeto " +"resultante, ``2``, pero cuando intentamos asignar el resultado del cálculo, " +"``2``, al elemento ``0`` de la tupla, obtenemos un error debido a que no " +"podemos cambiar el elemento al que apunta la tupla." #: ../Doc/faq/programming.rst:1290 msgid "" "Under the covers, what this augmented assignment statement is doing is " "approximately this::" msgstr "" +"En realidad, lo que esta declaración de asignación aumentada está haciendo " +"es, aproximadamente, lo siguiente::" #: ../Doc/faq/programming.rst:1299 msgid "" "It is the assignment part of the operation that produces the error, since a " "tuple is immutable." msgstr "" +"Es la parte de asignación de la operación la que provoca el error, debido a " +"que una tupla es inmutable." #: ../Doc/faq/programming.rst:1302 msgid "When you write something like::" -msgstr "" +msgstr "Cuando escribes algo como lo siguiente::" #: ../Doc/faq/programming.rst:1310 msgid "" "The exception is a bit more surprising, and even more surprising is the fact " "that even though there was an error, the append worked::" msgstr "" +"La excepción es un poco más sorprendente e, incluso, más sorprendente es el " +"hecho que aunque hubo un error, la agregación funcionó::" #: ../Doc/faq/programming.rst:1316 msgid "" @@ -1947,10 +2035,16 @@ msgid "" "calling ``extend`` on the list and returning the list. That's why we say " "that for lists, ``+=`` is a \"shorthand\" for ``list.extend``::" msgstr "" +"Para ver lo que sucede necesitas saber que (a) si un objeto implementa un " +"método mágico ``__iadd__`` , se le llama cuando se ejecuta la asignación " +"aumentada ``+=`` y el valor devuelto es lo que se usa en la declaración de " +"asignación; y (b) para listas, ``__iadd__`` es equivalente a llamar a " +"``extend`` en la lista y devolver la lista. Es por esto que decimos que " +"para listas, ``+=`` es un atajo para ``list.extend``::" #: ../Doc/faq/programming.rst:1328 msgid "This is equivalent to::" -msgstr "" +msgstr "Esto es equivalente a ::" #: ../Doc/faq/programming.rst:1333 msgid "" @@ -1959,10 +2053,16 @@ msgid "" "assignment is a no-op, since it is a pointer to the same object that " "``a_list`` was previously pointing to, but the assignment still happens." msgstr "" +"El objeto al que apunta a_list ha mutado y el puntero al objeto mutado es " +"asignado de vuelta a ``a_list``. El resultado final de la asignación no es " +"opción debido a que es un puntero al mismo objeto al que estaba apuntando " +"``a_list`` pero la asignación sí que ocurre." #: ../Doc/faq/programming.rst:1338 msgid "Thus, in our tuple example what is happening is equivalent to::" msgstr "" +"Por tanto, en nuestro ejemplo con tupla lo que está pasando es equivalente " +"a::" #: ../Doc/faq/programming.rst:1346 msgid "" @@ -1971,12 +2071,18 @@ msgid "" "that final assignment still results in an error, because tuples are " "immutable." msgstr "" +"El ``__iadd__`` se realiza con éxito y la lista se extiende pero, incluso " +"aunque ``result`` apunta al mismo objeto al que ya está apuntando " +"``a_tuple[0]`` la asignación final sigue resultando en un error, debido a " +"que las tuplas son inmutables." #: ../Doc/faq/programming.rst:1352 msgid "" "I want to do a complicated sort: can you do a Schwartzian Transform in " "Python?" msgstr "" +"Quiero hacer una ordenación compleja: ¿Puedes hacer una transformada " +"Schwartziana (Schwartzian Transform) en Python?" #: ../Doc/faq/programming.rst:1354 msgid "" @@ -1985,20 +2091,26 @@ msgid "" "value\". In Python, use the ``key`` argument for the :meth:`list.sort` " "method::" msgstr "" +"La técnica, atribuida a Randal Schwartz, miembro de la comunidad Perl, " +"ordena los elementos de una lista mediante una métrica que mapea cada " +"elemento a su \"valor orden\". En Python, usa el argumento ``key`` par el " +"método :meth:`list.sort`::" #: ../Doc/faq/programming.rst:1363 msgid "How can I sort one list by values from another list?" -msgstr "" +msgstr "¿Cómo puedo ordenar una lista a partir de valores de otra lista?" #: ../Doc/faq/programming.rst:1365 msgid "" "Merge them into an iterator of tuples, sort the resulting list, and then " "pick out the element you want. ::" msgstr "" +"Las puedes unir en un iterador de tuplas, ordena la lista resultando y " +"después extrae el elemento que deseas. ::" #: ../Doc/faq/programming.rst:1379 msgid "An alternative for the last step is::" -msgstr "" +msgstr "Una alternativa para el último paso es::" #: ../Doc/faq/programming.rst:1384 msgid "" @@ -2010,14 +2122,22 @@ msgid "" "\"result.append\" requires an extra attribute lookup, and third, there's a " "speed reduction from having to make all those function calls." msgstr "" +"Si encuentras esto más legible, podrías preferir usar esto en lugar de una " +"comprensión de lista final. Sin embargo, es casi el doble de lento para " +"listas largas. ¿Por qué? Primero, la operación ``append()`` necesita " +"reasignar memoria y, aunque usa algunos trucos para evitar hacerlo en todo " +"momento, sigue teniéndolo que hacer ocasionalmente y eso tiene un poco de " +"coste. Segundo, la expresión \"result.append\" requiere una búsqueda " +"adicional de atributos y, tercero, hay una reducción de velocidad de tener " +"que hacer todas esas llamadas a funciones." #: ../Doc/faq/programming.rst:1394 msgid "Objects" -msgstr "" +msgstr "Objetos" #: ../Doc/faq/programming.rst:1397 msgid "What is a class?" -msgstr "" +msgstr "¿Qué es una clase?" #: ../Doc/faq/programming.rst:1399 msgid "" @@ -2026,6 +2146,10 @@ msgid "" "which embody both the data (attributes) and code (methods) specific to a " "datatype." msgstr "" +"Una clase es un tipo de objeto particular creado mediante la ejecución de la " +"declaración class. Los objetos class se usan como plantillas para crear " +"instancias de objetos que son tanto los datos (atributos) como el código " +"(métodos) específicos para un tipo de dato." #: ../Doc/faq/programming.rst:1403 msgid "" @@ -2036,10 +2160,17 @@ msgid "" "for a mailbox, and subclasses such as ``MboxMailbox``, ``MaildirMailbox``, " "``OutlookMailbox`` that handle various specific mailbox formats." msgstr "" +"Una clase puede estar basada en una o más clases diferentes, llamadas su(s) " +"clase(s). Hereda los atributos y métodos de sus clases base. Esto permite " +"que se pueda refinar un objeto modelo de forma sucesiva mediante herencia. " +"Puedes tener una clase genérica ``Mailbox`` que proporciona métodos de " +"acceso básico para un buzón de correo y subclases como ``MboxMailbox``, " +"``MaildirMailbox``, ``OutlookMailbox`` que gestionan distintos formatos " +"específicos de buzón de correos." #: ../Doc/faq/programming.rst:1412 msgid "What is a method?" -msgstr "" +msgstr "¿Qué es un método?" #: ../Doc/faq/programming.rst:1414 msgid "" @@ -2047,10 +2178,13 @@ msgid "" "name(arguments...)``. Methods are defined as functions inside the class " "definition::" msgstr "" +"Un método es una función de un objeto ``x`` que puedes llamar, normalmente, " +"de la forma ``x.name(arguments...)``. Los métodos se definen como " +"funciones dentro de la definición de la clase::" #: ../Doc/faq/programming.rst:1424 msgid "What is self?" -msgstr "" +msgstr "¿Qué es self?" #: ../Doc/faq/programming.rst:1426 msgid "" @@ -2059,16 +2193,23 @@ msgid "" "c)`` for some instance ``x`` of the class in which the definition occurs; " "the called method will think it is called as ``meth(x, a, b, c)``." msgstr "" +"Self es, básicamente, un nombre que se usa de forma convencional como primer " +"argumento de un método. Un método definido como ``meth(self, a, b, c)`` se " +"le llama como ``x.meth(a, b, c)`` para una instancia ``x`` de la clase es " +"que se definió; el método invocado pensará que se le ha invocado como " +"``meth(x, a, b, c)``." #: ../Doc/faq/programming.rst:1431 msgid "See also :ref:`why-self`." -msgstr "" +msgstr "Ver también :ref:`why-self`." #: ../Doc/faq/programming.rst:1435 msgid "" "How do I check if an object is an instance of a given class or of a subclass " "of it?" msgstr "" +"¿Cómo puedo comprobar si un objeto es una instancia de una clase dada o de " +"una subclase de la misma?" #: ../Doc/faq/programming.rst:1437 msgid "" @@ -2078,6 +2219,12 @@ msgid "" "and can also check whether an object is one of Python's built-in types, e.g. " "``isinstance(obj, str)`` or ``isinstance(obj, (int, float, complex))``." msgstr "" +"Usa la función incorporada ``isinstance(obj, cls)``. Puedes comprobar si un " +"objeto es una instancia de cualquier número de clases proporcionando una " +"tupla en lugar de una sola clase, e.g. ``isinstance(obj, (class1, " +"class2, ...))`` y, también, puedes comprobar si un objeto es uno de los " +"tipos incorporados e.g. ``isinstance(obj, str)`` o ``isinstance(obj, (int, " +"float, complex))``." #: ../Doc/faq/programming.rst:1443 msgid "" @@ -2088,16 +2235,24 @@ msgid "" "and doing a different thing based on what class it is. For example, if you " "have a function that does something::" msgstr "" +"Destacar que muchos programas no necesitan usar :func:`isinstance` de forma " +"frecuente en clases definidas por el usuario. Si estás desarrollando clases " +"un mejor estilo orientado a objetos sería el de definir los métodos en las " +"clases que encapsulan un comportamiento en particular en lugar de ir " +"comprobando la clase del objeto e ir haciendo cosas en base a la clase que " +"es. Por ejemplo, si tienes una función que hace lo siguiente::" #: ../Doc/faq/programming.rst:1457 msgid "" "A better approach is to define a ``search()`` method on all the classes and " "just call it::" msgstr "" +"Un enfoque más adecuado sería definir un método ``search()`` en todas las " +"clases e invocarlo::" #: ../Doc/faq/programming.rst:1472 msgid "What is delegation?" -msgstr "" +msgstr "¿Qué es la delegación?" #: ../Doc/faq/programming.rst:1474 msgid "" @@ -2107,6 +2262,11 @@ msgid "" "implementation of the method you're interested in changing and delegates all " "other methods to the corresponding method of ``x``." msgstr "" +"La delegación es una técnica orientada a objetos (también llamado un patrón " +"de diseño). Digamos que tienes un objeto ``x`` y deseas cambiar el " +"comportamiento de solo uno de sus métodos. Puedes crear una nueva clase que " +"proporciona una nueva implementación del método que te interesa cambiar y " +"delega el resto de métodos al método correspondiente de ``x``." #: ../Doc/faq/programming.rst:1480 msgid "" @@ -2114,6 +2274,10 @@ msgid "" "following class implements a class that behaves like a file but converts all " "written data to uppercase::" msgstr "" +"Los programadores Python pueden implementar la delegación de forma muy " +"sencilla. Por ejemplo, la siguiente clase implementa una clase que se " +"comporta como un fichero pero convierte todos los datos escritos a " +"mayúsculas::" #: ../Doc/faq/programming.rst:1495 msgid "" @@ -2124,6 +2288,12 @@ msgid "" "method; consult :ref:`the language reference ` for more " "information about controlling attribute access." msgstr "" +"Aquí, la clase ``UpperOut`` redefine el método ``write()`` para convertir " +"la cadena del argumento a mayúscula antes de invocar al método ``self." +"_outfile.write()``. El resto de métodos han sido delegados al objeto ``self." +"_outfile``. La delegación se consigue mediante el método ``__getattr__``; " +"consulta :ref:`la referencia del lenguaje ` para obtener " +"más información sobre cómo controlar el acceso a atributos." #: ../Doc/faq/programming.rst:1502 msgid "" @@ -2133,22 +2303,32 @@ msgid "" "implementation of :meth:`__setattr__` is roughly equivalent to the " "following::" msgstr "" +"Ten en cuenta que para casos más generales la delegación puede ser algo más " +"complicada. Cuando los atributos se deben colocar y recuperar la clase debe " +"definir, también, un método :meth:`__setattr__` y hay que hacerlo con " +"cuidado. La implementación básica de :meth:`__setattr__` es, " +"aproximadamente, equivalente a lo siguiente::" #: ../Doc/faq/programming.rst:1513 msgid "" "Most :meth:`__setattr__` implementations must modify ``self.__dict__`` to " "store local state for self without causing an infinite recursion." msgstr "" +"Muchas implementaciones de :meth:`__setattr__` deben modificar ``self." +"__dict__`` para almacenar el estado local para self sin provocar una " +"recursión infinita." #: ../Doc/faq/programming.rst:1518 msgid "" "How do I call a method defined in a base class from a derived class that " "overrides it?" msgstr "" +"¿Cómo invoco a un método definido en una clase base desde una clase derivada " +"que lo ha sobreescrito?" #: ../Doc/faq/programming.rst:1520 msgid "Use the built-in :func:`super` function::" -msgstr "" +msgstr "Usa la función incorporada :func:`super`::" #: ../Doc/faq/programming.rst:1526 msgid "" @@ -2158,10 +2338,17 @@ msgid "" "meth(self, arguments...)``. Here, ``Base.meth`` is an unbound method, so " "you need to provide the ``self`` argument." msgstr "" +"Para versiones anteriores a la 3.0, puedes usar clases clásicas: Para la " +"definición de una clase como ``class Derived(Base): ...`` puedes invocar el " +"método ``meth()`` definido en ``Base`` (o una de las clases base de " +"``Base``) como ``Base.meth(self, arguments...)``. Aquí, ``Base.meth`` es un " +"método no ligado y, por tanto, debes proporcionar el argumento ``self``." #: ../Doc/faq/programming.rst:1534 msgid "How can I organize my code to make it easier to change the base class?" msgstr "" +"¿Cómo puedo organizar mi código para hacer que sea más sencillo modificas la " +"clase base?" #: ../Doc/faq/programming.rst:1536 msgid "" @@ -2172,22 +2359,34 @@ msgid "" "g. depending on availability of resources) which base class to use. " "Example::" msgstr "" +"Puedes definir un alias para la clase base, asignar la clase base real al " +"alias antes de la definición de tu clase y usar el alias a lo largo de toda " +"la clase. Entonces, lo único que tienes que cambiar es el valor asignado al " +"alias. Sin pretenderlo, este truco también es útil si desear decidir de " +"forma dinámica (e.g. dependiendo de la disponibilidad de recursos) qué clase " +"base usar. Ejemplo::" #: ../Doc/faq/programming.rst:1551 msgid "How do I create static class data and static class methods?" msgstr "" +"¿Cómo puedo crear datos estáticos de clase y métodos estáticos de clase?" #: ../Doc/faq/programming.rst:1553 msgid "" "Both static data and static methods (in the sense of C++ or Java) are " "supported in Python." msgstr "" +"Tanto los datos estáticos como los métodos estáticos (en el sentido de C++ o " +"Java) están permitidos en Python." #: ../Doc/faq/programming.rst:1556 msgid "" "For static data, simply define a class attribute. To assign a new value to " "the attribute, you have to explicitly use the class name in the assignment::" msgstr "" +"Para datos estáticos simplemente define un atributo de clase. Para asignar " +"un nuevo valor al atributo debes usar de forma explícita el nombre de la " +"clase en la asignación::" #: ../Doc/faq/programming.rst:1568 msgid "" @@ -2195,6 +2394,10 @@ msgid "" "``isinstance(c, C)`` holds, unless overridden by ``c`` itself or by some " "class on the base-class search path from ``c.__class__`` back to ``C``." msgstr "" +"``c.count`` también se refiere a ``C.count`` para cualquier ``c`` de tal " +"forma que se cumpla ``isinstance(c, C)``, a no ser que ``c`` sea " +"sobreescrita por si misma o por alguna clase contenida en la búsqueda de " +"clases base desde``c.__class__`` hasta ``C``." #: ../Doc/faq/programming.rst:1572 msgid "" @@ -2203,58 +2406,76 @@ msgid "" "dict. Rebinding of a class-static data name must always specify the class " "whether inside a method or not::" msgstr "" +"Debes tener cuidado: dentro de un método de C, una asignación como ``self." +"count = 42`` creará una nueva instancia sin relación con la original que se " +"llamará \"count\" en el propio diccionario de ``self``. El reunificar el " +"nombre de datos estáticos de una clase debería llevar, siempre, a " +"especificar la clase tanto si se produce desde dentro de un método como si " +"no::" #: ../Doc/faq/programming.rst:1579 msgid "Static methods are possible::" -msgstr "" +msgstr "Los métodos estáticos son posibles::" #: ../Doc/faq/programming.rst:1587 msgid "" "However, a far more straightforward way to get the effect of a static method " "is via a simple module-level function::" msgstr "" +"Sin embargo, una forma más directa de obtener el efecto de un método " +"estático sería mediante una simple función a nivel de módulo::" #: ../Doc/faq/programming.rst:1593 msgid "" "If your code is structured so as to define one class (or tightly related " "class hierarchy) per module, this supplies the desired encapsulation." msgstr "" +"Si has estructurado tu código para definir una clase única (o una jerarquía " +"de clases altamente relacionadas) por módulo, esto proporcionará la " +"encapsulación deseada." #: ../Doc/faq/programming.rst:1598 msgid "How can I overload constructors (or methods) in Python?" -msgstr "" +msgstr "¿Como puedo sobrecargar constructores (o métodos) en Python?" #: ../Doc/faq/programming.rst:1600 msgid "" "This answer actually applies to all methods, but the question usually comes " "up first in the context of constructors." msgstr "" +"Esta respuesta es aplicable, en realidad, a todos los métodos pero la " +"pregunta suele surgir primero en el contexto de los constructores." #: ../Doc/faq/programming.rst:1603 msgid "In C++ you'd write" -msgstr "" +msgstr "En C++ deberías escribir" #: ../Doc/faq/programming.rst:1612 msgid "" "In Python you have to write a single constructor that catches all cases " "using default arguments. For example::" msgstr "" +"En Python solo debes escribir un único constructor que tenga en cuenta todos " +"los casos usando los argumentos por defecto. Por ejemplo::" #: ../Doc/faq/programming.rst:1622 msgid "This is not entirely equivalent, but close enough in practice." msgstr "" +"Esto no es totalmente equivalente pero, en la práctica, es muy similar." #: ../Doc/faq/programming.rst:1624 msgid "You could also try a variable-length argument list, e.g. ::" msgstr "" +"Podrías intentar, también una lista de argumentos de longitud variable, e." +"g. ::" #: ../Doc/faq/programming.rst:1629 msgid "The same approach works for all method definitions." -msgstr "" +msgstr "El mismo enfoque funciona para todas las definiciones de métodos." #: ../Doc/faq/programming.rst:1633 msgid "I try to use __spam and I get an error about _SomeClassName__spam." -msgstr "" +msgstr "Intento usar __spam y obtengo un error sobre _SomeClassName__spam." #: ../Doc/faq/programming.rst:1635 msgid "" @@ -2265,6 +2486,12 @@ msgid "" "``classname`` is the current class name with any leading underscores " "stripped." msgstr "" +"Nombres de variable con doble guión prefijado se convierten, " +"'enmarañándolos', para proporcionar una forma simple pero efectiva de " +"definir variables de clase privadas Cualquier identificador de la forma " +"``__spam`` (como mínimo dos guiones bajos como prefijo, como máximo un guión " +"bajo como sufijo) se reemplaza con ``_classname__spam``, donde ``classname`` " +"es el nombre de la clase eliminando cualquier guión bajo prefijado." #: ../Doc/faq/programming.rst:1641 msgid "" @@ -2273,14 +2500,19 @@ msgid "" "the object's ``__dict__``. Many Python programmers never bother to use " "private variable names at all." msgstr "" +"Esto no garantiza la privacidad: un usuario externo puede acceder, de forma " +"deliberada y si así lo desea, al atributo \"_classname__spam\", y los " +"valores privados son visibles en el ``__dict__`` del objeto. Muchos " +"programadores Python no se suelen molestar en usar nombres privados de " +"variables." #: ../Doc/faq/programming.rst:1648 msgid "My class defines __del__ but it is not called when I delete the object." -msgstr "" +msgstr "Mi clase define __del__ pero no se le invoca cuando borro el objeto." #: ../Doc/faq/programming.rst:1650 msgid "There are several possible reasons for this." -msgstr "" +msgstr "Existen varias razones posibles para que suceda así." #: ../Doc/faq/programming.rst:1652 msgid "" @@ -2288,6 +2520,9 @@ msgid "" "decrements the object's reference count, and if this reaches zero :meth:" "`__del__` is called." msgstr "" +"La declaración del no invoca, necesariamente, al método :meth:`__del__` -- " +"simplemente reduce el conteo de referencias del objeto y, si se reduce a " +"cero entonces es cuando se invoca a :meth:`__del__`." #: ../Doc/faq/programming.rst:1656 msgid "" @@ -2302,6 +2537,18 @@ msgid "" "run :func:`gc.collect` to force a collection, but there *are* pathological " "cases where objects will never be collected." msgstr "" +"Si tus estructuras de datos contienen enlaces circulares (e.g. un árbol en " +"el cual cada hijo tiene una referencia al padre y cada padre tiene una lista " +"de hijos) el conteo de referencias no alcanzará nunca el valor de cero. De " +"vez en cuando, Python ejecuta un algoritmo para detectar esos ciclos pero el " +"recolector de basura debe ejecutarse un rato después de que se desvanezca la " +"última referencia a tu estructura de datos, de tal forma que tu método :meth:" +"`__del__` se pueda invocar en un momento aleatorio que no resulte " +"inconveniente. Esto no es conveniente si estás intentando reproducir un " +"problema. Peor, el orden en el que se ejecutan los métodos :meth:`__del__` " +"del objeto. es arbitrario Puedes ejecutar :func:`gc.collect` para forzar " +"una recopilación pero *existen* casos patológicos en los cuales los objetos " +"nunca serán recolectados." #: ../Doc/faq/programming.rst:1667 msgid "" @@ -2312,6 +2559,13 @@ msgid "" "``close()`` and ``close()`` should make sure that it can be called more than " "once for the same object." msgstr "" +"A pesar del recolector de ciclos, siempre será buena idea definir un método " +"``close()`` de forma explícita en objetos que debe ser llamado en el momento " +"que has terminado con ellos. El método ``close()`` puede, en ese momento, " +"eliminar atributos que se refieren a subobjetos. No invoques directamente " +"a :meth:`__del__` -- :meth:`__del__` debe invocar a ``close()`` y " +"``close()`` debe asegurarse que puede ser invocado más de una vez en el " +"mismo objeto." #: ../Doc/faq/programming.rst:1674 msgid "" @@ -2320,16 +2574,24 @@ msgid "" "reference count. Tree data structures, for instance, should use weak " "references for their parent and sibling references (if they need them!)." msgstr "" +"Otra forma de evitar referencias cíclicas sería usando el módulo :mod:" +"`weakref`, que permite apuntar hacia objetos sin incrementar su conteo de " +"referencias. Las estructuras de datos en árbol, por ejemplo, deberían usar " +"referencias débiles para las referencias del padre y hermanos (¡si es que " +"las necesitan!)." #: ../Doc/faq/programming.rst:1687 msgid "" "Finally, if your :meth:`__del__` method raises an exception, a warning " "message is printed to :data:`sys.stderr`." msgstr "" +"Finalmente, si tu método :meth:`__del__` lanza una excepción, se manda un " +"mensaje de alerta a :data:`sys.stderr`." #: ../Doc/faq/programming.rst:1692 msgid "How do I get a list of all instances of a given class?" msgstr "" +"¿Cómo puedo obtener una lista de todas las instancias de una clase dada?" #: ../Doc/faq/programming.rst:1694 msgid "" @@ -2337,10 +2599,14 @@ msgid "" "type). You can program the class's constructor to keep track of all " "instances by keeping a list of weak references to each instance." msgstr "" +"Python no hace seguimiento de todas las instancias de una clase (o de los " +"tipos incorporados). Puedes programar el constructor de una clase para que " +"haga seguimiento de todas sus instancias manteniendo una lista de " +"referencias débiles a cada instancia." #: ../Doc/faq/programming.rst:1700 msgid "Why does the result of ``id()`` appear to be not unique?" -msgstr "" +msgstr "¿Por qué el resultado de ``id()`` no parece ser único?" #: ../Doc/faq/programming.rst:1702 msgid "" @@ -2350,6 +2616,12 @@ msgid "" "memory, the next freshly created object is allocated at the same position in " "memory. This is illustrated by this example:" msgstr "" +"La función incorporada :func:`id` devuelve un entero que se garantiza que " +"sea único durante la vida del objeto. Debido a que en CPython esta es la " +"dirección en memoria del objeto, sucede que, frecuentemente, después de que " +"un objeto se elimina de la memoria el siguiente objeto recién creado se " +"localiza en la misma posición en memoria. Esto se puede ver ilustrado en " +"este ejemplo:" #: ../Doc/faq/programming.rst:1713 msgid "" @@ -2358,14 +2630,18 @@ msgid "" "objects whose id you want to examine are still alive, create another " "reference to the object:" msgstr "" +"Las dos ids pertenecen a dos objetos 'entero' diferentes que se crean antes " +"y se eliminan inmediatamente después de la ejecución de la invocación a " +"``id()``. Para estar seguro que los objetos cuya id quieres examinar siguen " +"vivos crea otra referencia al objeto:" #: ../Doc/faq/programming.rst:1726 msgid "Modules" -msgstr "" +msgstr "Módulos" #: ../Doc/faq/programming.rst:1729 msgid "How do I create a .pyc file?" -msgstr "" +msgstr "¿Cómo creo un fichero .pyc?" #: ../Doc/faq/programming.rst:1731 msgid "" @@ -2377,6 +2653,14 @@ msgid "" "file, and ends with ``.pyc``, with a middle component that depends on the " "particular ``python`` binary that created it. (See :pep:`3147` for details.)" msgstr "" +"Cuando se importa un módulo por primera vez (o cuando el código fuente ha " +"cambiado desde que el fichero compilado se creó) un fichero ``.pyc`` que " +"contiene el código compilado se debería crear en la subcarpeta " +"``__pycache__`` del directorio que contiene al fichero``.py``. El fichero " +"``.pyc`` tendrá un nombre que empezará con el mismo nombre que el del " +"fichero ``.py`` y terminará con ``.pyc``, con un componente intermedio que " +"dependerá del binario ``python`` en particular que lo creó. (Ver :pep:" +"`3147` para detalles.)" #: ../Doc/faq/programming.rst:1739 msgid "" @@ -2386,6 +2670,11 @@ msgid "" "example, if you develop as one user but run as another, such as if you are " "testing with a web server." msgstr "" +"Una razón por la que no se cree un fichero ``.pyc`` podría ser debido a un " +"problema de permisos del directorio que contiene al fichero fuente, lo que " +"significa que el subdirectorio ``__pycache__`` no se puede crear. Esto puede " +"suceder, por ejemplo, si desarrollas como un usuario pero lo ejecutas como " +"otro, como si estuvieras probando en un servidor web." #: ../Doc/faq/programming.rst:1744 msgid "" @@ -2395,6 +2684,11 @@ msgid "" "``__pycache__`` subdirectory and write the compiled module to that " "subdirectory." msgstr "" +"Hasta que no definas la variable de entorno :envvar:" +"`PYTHONDONTWRITEBYTECODE`, la creación de un fichero .pyc se hará " +"automáticamente si importas un módulo y Python dispone de la habilidad " +"(permisos, espacio libre, etc...) para crear un subdirectorio " +"``__pycache__`` y escribir un módulo compilado en ese subdirectorio." #: ../Doc/faq/programming.rst:1749 msgid "" @@ -2405,6 +2699,12 @@ msgid "" "``xyz`` because ``xyz`` is imported, but no ``.pyc`` file will be created " "for ``foo`` since ``foo.py`` isn't being imported." msgstr "" +"La ejecución de un script principal Python no se considera una importación y " +"no se crea el fichero ``.pyc``. Por ejemplo, Si tienes un módulo principal " +"``foo.py`` que importa a otro módulo ``xyz.py``, cuando ejecutas ``foo`` " +"(mediante un comando de la shell ``python foo.py``), se creará un fichero ``." +"pyc`` para ``xyz`` porque ``xyz`` ha sido importado, pero no se creará un " +"fichero ``.pyc`` para ``foo`` ya que ``foo.py`` no ha sido importado." #: ../Doc/faq/programming.rst:1756 msgid "" @@ -2412,12 +2712,18 @@ msgid "" "pyc`` file for a module that is not imported -- you can, using the :mod:" "`py_compile` and :mod:`compileall` modules." msgstr "" +"Si necesitas crear un fichero ``.pyc`` también para ``foo`` -- es decir, " +"crear un fichero ``.pyc`` para un módulo que no ha sido importado -- puedes " +"usar los módulos :mod:`py_compile` y :mod:`compileall`." #: ../Doc/faq/programming.rst:1760 msgid "" "The :mod:`py_compile` module can manually compile any module. One way is to " "use the ``compile()`` function in that module interactively::" msgstr "" +"El módulo :mod:`py_compile` puede compilar manualmente cualquier módulo. " +"Una forma sería usando la función ``compile()`` de ese módulo de forma " +"interactiva::" #: ../Doc/faq/programming.rst:1766 msgid "" @@ -2425,6 +2731,9 @@ msgid "" "location as ``foo.py`` (or you can override that with the optional parameter " "``cfile``)." msgstr "" +"Esto escribirá ``.pyc`` en el subdirectorio ``__pycache__`` en la misma " +"localización en la que se encuentre ``foo.py`` (o, puedes sobreescribir ese " +"comportamiento con el parámetro opcional ``cfile``)." #: ../Doc/faq/programming.rst:1770 msgid "" @@ -2433,10 +2742,14 @@ msgid "" "running ``compileall.py`` and providing the path of a directory containing " "Python files to compile::" msgstr "" +"Puedes compilar automáticamente todos los ficheros en un directorio o " +"directorios usando el módulo :mod:`compileall`. Lo puedes hacer desde la " +"línea de comandos ejecutando ``compileall.py`` y proporcionando una ruta al " +"directorio que contiene los ficheros Python a compilar::" #: ../Doc/faq/programming.rst:1779 msgid "How do I find the current module name?" -msgstr "" +msgstr "¿Cómo puedo encontrar el nombre del módulo en uso?" #: ../Doc/faq/programming.rst:1781 msgid "" @@ -2446,75 +2759,88 @@ msgid "" "importing them also provide a command-line interface or a self-test, and " "only execute this code after checking ``__name__``::" msgstr "" +"Un módulo puede encontrar su propio nombre mirando en la variable global " +"predeterminada ``__name__``. Si tiene el valor ``'__main__'``, el programa " +"se está ejecutando como un script. Muchos módulos que se usan, " +"generalmente, importados en otro script proporcionan, además, una interfaz " +"para la línea de comandos o para probarse a si mismos y solo ejecutan código " +"después de comprobar ``__name__``::" #: ../Doc/faq/programming.rst:1796 msgid "How can I have modules that mutually import each other?" -msgstr "" +msgstr "¿Cómo podría tener módulos que se importan mutuamente entre ellos?" #: ../Doc/faq/programming.rst:1798 msgid "Suppose you have the following modules:" -msgstr "" +msgstr "Supón que tienes los siguientes módulos:" #: ../Doc/faq/programming.rst:1800 msgid "foo.py::" -msgstr "" +msgstr "foo.py::" #: ../Doc/faq/programming.rst:1805 msgid "bar.py::" -msgstr "" +msgstr "bar.py::" #: ../Doc/faq/programming.rst:1810 msgid "The problem is that the interpreter will perform the following steps:" -msgstr "" +msgstr "El problema es que el intérprete realizará los siguientes pasos:" #: ../Doc/faq/programming.rst:1812 msgid "main imports foo" -msgstr "" +msgstr "main importa a foo" #: ../Doc/faq/programming.rst:1813 msgid "Empty globals for foo are created" -msgstr "" +msgstr "Se crea un *globals* vacío para foo" #: ../Doc/faq/programming.rst:1814 msgid "foo is compiled and starts executing" -msgstr "" +msgstr "foo se compila y se comienza a ejecutar" #: ../Doc/faq/programming.rst:1815 msgid "foo imports bar" -msgstr "" +msgstr "foo importa a bar" #: ../Doc/faq/programming.rst:1816 msgid "Empty globals for bar are created" -msgstr "" +msgstr "Se crea un *globals* vacío para bar" #: ../Doc/faq/programming.rst:1817 msgid "bar is compiled and starts executing" -msgstr "" +msgstr "bar se compila y se comienza a ejecutar" #: ../Doc/faq/programming.rst:1818 msgid "" "bar imports foo (which is a no-op since there already is a module named foo)" msgstr "" +"bar importa a foo (lo cual no es una opción ya que ya hay un módulo que se " +"llama foo)" #: ../Doc/faq/programming.rst:1819 msgid "bar.foo_var = foo.foo_var" -msgstr "" +msgstr "bar.foo_var = foo.foo_var" #: ../Doc/faq/programming.rst:1821 msgid "" "The last step fails, because Python isn't done with interpreting ``foo`` yet " "and the global symbol dictionary for ``foo`` is still empty." msgstr "" +"El último paso falla debido a que Python todavía no ha terminado de " +"interpretar a ``foo`` y el diccionario de símbolos global para ``foo`` " +"todavía se encuentra vacío." #: ../Doc/faq/programming.rst:1824 msgid "" "The same thing happens when you use ``import foo``, and then try to access " "``foo.foo_var`` in global code." msgstr "" +"Lo mismo ocurre cuando usas ``import foo`` y luego tratas de acceder a ``foo." +"foo_var`` en un código global." #: ../Doc/faq/programming.rst:1827 msgid "There are (at least) three possible workarounds for this problem." -msgstr "" +msgstr "Existen (al menos) tres posibles soluciones para este problema." #: ../Doc/faq/programming.rst:1829 msgid "" @@ -2524,58 +2850,77 @@ msgid "" "only. This means everything from an imported module is referenced as " "``.``." msgstr "" +"Guido van Rossum recomienda evitar todos los usos de ``from " +"import ...``, y colocar todo el código dentro de funciones. La " +"inicialización de variables globales y variables de clase debería usar " +"únicamente constantes o funciones incorporadas . Esto significa que todo se " +"referenciará como ``.`` desde un módulo importado." #: ../Doc/faq/programming.rst:1834 msgid "" "Jim Roskind suggests performing steps in the following order in each module:" msgstr "" +"Jim Roskind sugiere realizar los siguientes pasos en el siguiente orden en " +"cada módulo:" #: ../Doc/faq/programming.rst:1836 msgid "" "exports (globals, functions, and classes that don't need imported base " "classes)" msgstr "" +"exportar (*globals*, funciones y clases que no necesitan clases bases " +"importadas)" #: ../Doc/faq/programming.rst:1838 msgid "``import`` statements" -msgstr "" +msgstr "``import`` declaraciones" #: ../Doc/faq/programming.rst:1839 msgid "" "active code (including globals that are initialized from imported values)." msgstr "" +"código activo (incluyendo *globals* que han sido inicializados desde valores " +"importados)." #: ../Doc/faq/programming.rst:1841 msgid "" "van Rossum doesn't like this approach much because the imports appear in a " "strange place, but it does work." msgstr "" +"este enfoque no le gusta mucho a van Rossum debido a que los import aparecen " +"en lugares extraños, pero funciona." #: ../Doc/faq/programming.rst:1844 msgid "" "Matthias Urlichs recommends restructuring your code so that the recursive " "import is not necessary in the first place." msgstr "" +"Matthias Urlichs recomienda reestructurar tu código de tal forma que un " +"import recursivo no sea necesario." #: ../Doc/faq/programming.rst:1847 msgid "These solutions are not mutually exclusive." -msgstr "" +msgstr "Estas soluciones no son mutuamente excluyentes." #: ../Doc/faq/programming.rst:1851 msgid "__import__('x.y.z') returns ; how do I get z?" -msgstr "" +msgstr "__import__('x.y.z') devuelve ; ¿cómo puedo obtener z?" #: ../Doc/faq/programming.rst:1853 msgid "" "Consider using the convenience function :func:`~importlib.import_module` " "from :mod:`importlib` instead::" msgstr "" +"Considera, en su lugar, usa la función de conveniencia :func:`~importlib." +"import_module` de :mod:`importlib`::" #: ../Doc/faq/programming.rst:1860 msgid "" "When I edit an imported module and reimport it, the changes don't show up. " "Why does this happen?" msgstr "" +"Cuando edito un módulo importado y lo reimporto los cambios no tienen " +"efecto. ¿Por qué sucede esto?" #: ../Doc/faq/programming.rst:1862 msgid "" @@ -2585,6 +2930,12 @@ msgid "" "module, the basic module would be parsed and re-parsed many times. To force " "re-reading of a changed module, do this::" msgstr "" +"Por razones de consistencia además de por consistencia, Python solo lee el " +"fichero del módulo la primera vez que el módulo se importa. Si no lo " +"hiciera así, un programa escrito en muchos módulos donde cada módulo importa " +"al mismo módulo básico estaría analizando sintácticamente el mismo módulo " +"básico muchas veces. Para forzar una relectura de un módulo que ha sido " +"modificado haz lo siguiente::" #: ../Doc/faq/programming.rst:1872 #, python-format @@ -2592,6 +2943,8 @@ msgid "" "Warning: this technique is not 100% fool-proof. In particular, modules " "containing statements like ::" msgstr "" +"Alerta: esta técnica no es 100% segura. En particular, los módulos que " +"contienen declaraciones como ::" #: ../Doc/faq/programming.rst:1877 msgid "" @@ -2600,9 +2953,15 @@ msgid "" "updated to use the new class definition. This can result in the following " "paradoxical behaviour::" msgstr "" +"continuarán funcionando con la versión antigua de los objetos importados. " +"Si el módulo contiene definiciones de clase, instancias de clase ya " +"existentes *no* se actualizarán para usar la nueva definición de la clase. " +"Esto podría resultar en el comportamiento paradójico siguiente::" #: ../Doc/faq/programming.rst:1890 msgid "" "The nature of the problem is made clear if you print out the \"identity\" of " "the class objects::" msgstr "" +"La naturaleza del problema se hace evidente si muestras la \"identity\" de " +"los objetos clase::" From 0615ac4dff4f9f9cf223f83ff0eeb21f2b4410c9 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 21 Jun 2020 11:52:09 +0200 Subject: [PATCH 15/36] =?UTF-8?q?actualizaci=C3=B3n=20de=20dict=20y=20erra?= =?UTF-8?q?tas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dict | 83 ++++++++++++++++++++++++++++++++++++++++++++++ faq/programming.po | 18 +++++----- 2 files changed, 92 insertions(+), 9 deletions(-) diff --git a/dict b/dict index 435c700487..34213b1f20 100644 --- a/dict +++ b/dict @@ -1,15 +1,18 @@ API ASCII Aahz +ActivePython Adam Adler Ahlstrom Alex Android +Anthony Associates Autocompletado Awk B +Bartelt BSD Boddie Brian @@ -25,6 +28,7 @@ Compaq Cookbook Ctrl Cython +DateTime Distutils FLTK Fibonacci @@ -34,13 +38,16 @@ Flying Fortran Foundation Fourier +Fredrik GIL Google +Gordon Greg Gtk+ HTML Hammond Hat +Heller Henstridge Hewlett Hugunin @@ -59,20 +66,25 @@ Kivy L Laird Linux +Lisp Lloyd Ltd Lucasfilm +Lundh Mac MacOS Macintosh Mandrake Mark +Matthias +McMillan Microsoft Mitch Monty N NaN NumPy +Numeric Numerical Octales Olsen @@ -86,13 +98,17 @@ Paul Perl Phil Pillow +PyChecker +Pydb PyFLTK PyGtk +Pylint PyQt PyRun PySide Python Pythónico +PythonWin Qt Randal Refactorizados @@ -100,25 +116,39 @@ Refactorizar redireccionamiento Reilly Rezinsky +Roskind Rossum Ruby SYSV Schwartz +Scintilla SciPy SimpleFileExFlags Smalltalk Sobreescriben Solaris +SomeClassName Spot Stein +Schwartzian +Schwartziana TCP Tcl +Thomas Tix Tk Tkinter +Tools +Transform +Tuininga Tutorial +Ulf +UnboundLocalError Unicode +UnicodeDecodeError +UnicodeEncodeError Unix +Urlichs Usenet VM WWW @@ -126,6 +156,7 @@ Windows X Xt Zip +Zope aleatoriamente append aproximarla @@ -161,9 +192,14 @@ bytes búfer búferes bzip +c cargable cargables +cdr +cfg +chomp class +classname coerción collector coleccionable @@ -172,15 +208,20 @@ comilla command compilada computacionales +config +cons conversor +code códec códecs configúrelo +comp computacionalmente consolelib correlacionan corrutina corrutinas +count criptográficamente curses customización @@ -216,6 +257,7 @@ docstring docstrings ecualizadora else +encapsulación encriptada enrutamiento entendible @@ -226,6 +268,7 @@ especificadores estáticamente except exclude +exe explícitamente exponenciación exit @@ -235,6 +278,7 @@ finalizadores flag flags float +foo format formateador formateadores @@ -242,6 +286,7 @@ fraccional freeze from future +g garbage gcc gid @@ -252,10 +297,14 @@ hardware hash hashables host +html i identación +identity idiomáticas idiomático +idle +ids if implementación implementaciones @@ -298,6 +347,7 @@ intérpreter invocable invocables isinstance +item iterador iteradores j @@ -306,13 +356,16 @@ kernel Latin latin l +lang letter lexicográfica lexicográfico libtclsam libtksam +list lowecase m +main manejador manejadores manifesto @@ -321,6 +374,8 @@ map mapear mapeo mapeos +marshal +memoizing metaclase metaclases metadatos @@ -338,9 +393,13 @@ mortem muestrea multi multicast +multidimensional multihilo multilínea +mutarlo +mx naif +name nonlocal object obsérvese @@ -354,6 +413,7 @@ mxBase naíf naífs ncurses +octal octales normalización operando @@ -366,10 +426,13 @@ parsea parseada parsear pasándole +pdb +per permitiéndole permutación permutaciones personalizadamente +personitas pip podés polimórfica @@ -407,6 +470,7 @@ recompilación recompilada recompilar recompilarse +recursión recursivamente redefinido redefinidos @@ -431,16 +495,23 @@ referencian referenciarse reinicializador reinicializar +relectura remove renombramiento reordenar repr request +result +reunificar +rf +rm root reubicar run s +safe str +scanf script scripting scripts @@ -450,6 +521,7 @@ secuencialmente seguirle self semánticamente +sep serializa serialización serializados @@ -463,12 +535,16 @@ situ sobreescriban sobreescribe sobreescriben +sobreescribir +sobreescrita +sobreescrito socket sockets solucionadores sorprendentemente sort spam +sscanf stderr stdin stdout @@ -478,6 +554,7 @@ subárbol subárboles subcadena subcadenas +subcarpeta subcarpetas subclasificar subcomandos @@ -485,6 +562,7 @@ subdirectorio subdirectorios submódulo submódulos +subobjetos subpaquete subpaquetes subsecuencias @@ -492,6 +570,7 @@ subíndices subtipable subtiparse sys +system t tab tabulación @@ -500,6 +579,7 @@ tar tarball termcap testeo +thread timestamp tipado tipear @@ -508,6 +588,7 @@ tokens tty tupla tuplas +tuple tutorial txt uid @@ -515,6 +596,7 @@ unario unices unicode uninstall +usables urllib utf UTF @@ -533,6 +615,7 @@ wxwidgets x xz ydel +z zip zipimporter zlib diff --git a/faq/programming.po b/faq/programming.po index 139fe9fac3..98a4d21ca0 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: 2020-05-23 21:36+0200\n" +"PO-Revision-Date: 2020-06-21 11:48+0200\n" "Last-Translator: Kiko Correoso\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" @@ -76,16 +76,16 @@ msgstr "" #: ../Doc/faq/programming.rst:31 msgid "" "PythonWin is a Python IDE that includes a GUI debugger based on pdb. The " -"Pythonwin debugger colors breakpoints and has quite a few cool features such " -"as debugging non-Pythonwin programs. Pythonwin is available as part of the " +"PythonWin debugger colors breakpoints and has quite a few cool features such " +"as debugging non-PythonWin programs. PythonWin is available as part of the " "`Python for Windows Extensions `__ project and as a part of the ActivePython distribution (see https://www." "activestate.com/activepython\\ )." msgstr "" "PythonWin es un IDE Python que incluye un depurador con GUI basado en pdb. " -"El depurador Pythonwin colorea los puntos de interrupción y dispone de " +"El depurador PythonWin colorea los puntos de interrupción y dispone de " "características geniales como la depuración de programas no modificados " -"mediante Pythonwin. Pythonwin está disponible como parte del proyecto `Las " +"mediante PythonWin. PythonWin está disponible como parte del proyecto `Las " "extensiones de Python para Windows `__ y como parte de la distribución ActivePython (ver https://www." "activestate.com/activepython\\ )." @@ -101,7 +101,7 @@ msgstr "" "`Boa Constructor `_ es un IDE y " "creador de GUIs que usa wxWidgets. Ofrece creación y manipulación visual de " "marcos, un inspector de objetos, muchas vistas sobre la fuente como los " -"navegadores de objetos, jerarquías de herencia, documentación doc string " +"navegadores de objetos, jerarquías de herencia, documentación docstring " "generada como html, un depurador avanzado, ayuda integrada y soporte para " "Zope." @@ -2486,12 +2486,12 @@ msgid "" "``classname`` is the current class name with any leading underscores " "stripped." msgstr "" -"Nombres de variable con doble guión prefijado se convierten, " +"Nombres de variable con doble guion prefijado se convierten, " "'enmarañándolos', para proporcionar una forma simple pero efectiva de " "definir variables de clase privadas Cualquier identificador de la forma " -"``__spam`` (como mínimo dos guiones bajos como prefijo, como máximo un guión " +"``__spam`` (como mínimo dos guiones bajos como prefijo, como máximo un guion " "bajo como sufijo) se reemplaza con ``_classname__spam``, donde ``classname`` " -"es el nombre de la clase eliminando cualquier guión bajo prefijado." +"es el nombre de la clase eliminando cualquier guion bajo prefijado." #: ../Doc/faq/programming.rst:1641 msgid "" From 662662d11f9f7b1a88b6ea30d8f002545d21304e Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Thu, 9 Jul 2020 10:32:39 +0200 Subject: [PATCH 16/36] 'Core Language' improvement --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 98a4d21ca0..ef04cdcc5c 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -284,7 +284,7 @@ msgstr "" #: ../Doc/faq/programming.rst:122 msgid "Core Language" -msgstr "Lenguaje principal" +msgstr "Núcleo del lenguaje" #: ../Doc/faq/programming.rst:125 msgid "Why am I getting an UnboundLocalError when the variable has a value?" From 46d90e431fc44eaa11068ab8933b2ef6a8d7eec4 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 26 Jul 2020 11:17:53 +0200 Subject: [PATCH 17/36] update tuple issue --- faq/programming.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index ef04cdcc5c..24baca37c0 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-06 11:59-0400\n" -"PO-Revision-Date: 2020-06-21 11:48+0200\n" +"PO-Revision-Date: 2020-07-26 11:04+0200\n" "Last-Translator: Kiko Correoso\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" @@ -1957,7 +1957,7 @@ msgstr "Usa una comprensión de listas::" msgid "" "Why does a_tuple[i] += ['item'] raise an exception when the addition works?" msgstr "" -"¿Por qué hacer lo siguiente, a_tuple[i] += ['item'], lanza una excepción " +"¿Por qué hacer lo siguiente, ``a_tuple[i] += ['item']``, lanza una excepción " "cuando la suma funciona?" #: ../Doc/faq/programming.rst:1268 From b54acfa7b78008edb3876b9d0083e861d062b755 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Sun, 26 Jul 2020 12:39:01 +0200 Subject: [PATCH 18/36] update dict --- dict | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dict b/dict index 14248844de..5e2cd17ba3 100644 --- a/dict +++ b/dict @@ -832,6 +832,7 @@ RedHat redefinida recursivo recurrencia +redefine redefinido redefinidos redefinir @@ -860,6 +861,7 @@ referenciado referenciados referencian referenciar +referenciará referenciarse reintenta reintentar @@ -872,6 +874,7 @@ reintentar remove renombramiento reordenar +reordene repr reposicionamiento reproducibles From f32169db688cf16bfa6d9a4e6996ecae28188287 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:03:56 +0200 Subject: [PATCH 19/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 24baca37c0..38e08bc9d5 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -2930,7 +2930,7 @@ msgid "" "module, the basic module would be parsed and re-parsed many times. To force " "re-reading of a changed module, do this::" msgstr "" -"Por razones de consistencia además de por consistencia, Python solo lee el " +"Por razones de eficiencia además de por consistencia, Python solo lee el " "fichero del módulo la primera vez que el módulo se importa. Si no lo " "hiciera así, un programa escrito en muchos módulos donde cada módulo importa " "al mismo módulo básico estaría analizando sintácticamente el mismo módulo " From d0be6ff295fba2a194061a581a306274967f8d92 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:30:40 +0200 Subject: [PATCH 20/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 38e08bc9d5..69e1c971d6 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -724,7 +724,7 @@ msgstr "" #: ../Doc/faq/programming.rst:397 msgid "" "How can I pass optional or keyword parameters from one function to another?" -msgstr "¿Cómo puedo pasar parámetros clave u opcionales de una función a otra?" +msgstr "¿Cómo puedo pasar parámetros por palabra clave u opcionales de una función a otra?" #: ../Doc/faq/programming.rst:399 msgid "" From 9f8147b880c8c26ae0c30d8940de3e4c27e5aa30 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:32:08 +0200 Subject: [PATCH 21/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 69e1c971d6..e167316d1c 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -734,7 +734,7 @@ msgid "" "arguments when calling another function by using ``*`` and ``**``::" msgstr "" "Recopila los argumentos usando los especificadores ``*`` y ``**`` " -"especificadores en la lista de parámetros de la función; esto te proporciona " +"en la lista de parámetros de la función; esto te proporciona " "los argumentos posicionales como una tupla y los argumentos con palabras " "clave como un diccionario. Puedes, entonces, pasar estos argumentos cuando " "invoques a otra función usando ``*`` y ``**``::" From f2b3e1247c0cbc88e83d28a7f078fd50ba2a82b4 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:32:46 +0200 Subject: [PATCH 22/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index e167316d1c..e5f19a9340 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -903,7 +903,7 @@ msgstr "" "Si tenemos un objeto inmutable (:class:`str`, :class:`int`, :class:`tuple`, " "etc.), todas las variables que referencian al mismo verán siempre el mismo " "valor pero las operaciones que transforman ese valor en un nuevo valor " -"siempre devuelve un nuevo objeto." +"siempre retornan un nuevo objeto." #: ../Doc/faq/programming.rst:507 msgid "" From 7f964e3a1327d86aa85645c750a835fbb83b9b45 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:34:14 +0200 Subject: [PATCH 23/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index e5f19a9340..5a59e1d503 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -910,7 +910,7 @@ msgid "" "If you want to know if two variables refer to the same object or not, you " "can use the :keyword:`is` operator, or the built-in function :func:`id`." msgstr "" -"Si deseas saber si dos variables referencian o no al mismo objeto podrías " +"Si deseas saber si dos variables referencian o no al mismo objeto puedes " "usar el operador :keyword:`is` o la función incorporada :func:`id`." #: ../Doc/faq/programming.rst:512 From 4d3d28286cc5b22d111631d8b5a0e458766b5f32 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:34:32 +0200 Subject: [PATCH 24/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 5a59e1d503..6f63ef0a04 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -1060,7 +1060,7 @@ msgstr "" #: ../Doc/faq/programming.rst:659 msgid "How can my code discover the name of an object?" -msgstr "¿Cómo puedo descubrir el nombre de un objeto?" +msgstr "¿Cómo puede mi código descubrir el nombre de un objeto?" #: ../Doc/faq/programming.rst:661 msgid "" From 4f82ee1a2869dea9a5979192056b7502b7053d8c Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:37:12 +0200 Subject: [PATCH 25/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 6f63ef0a04..b97ba591d1 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -1680,7 +1680,7 @@ msgid "" "creates a new object. In the general case, the total runtime cost is " "quadratic in the total string length." msgstr "" -"Objetos :class:`str` y :class:`bytes` son inmutables, por tanto, concatenar " +"Los objetos :class:`str` y :class:`bytes` son inmutables, por tanto, concatenar " "muchas cadenas en una sola es ineficiente debido a que cada concatenación " "crea un nuevo objeto. En el caso más general, el coste total en tiempo de " "ejecución es cuadrático en relación a la longitud de la cadena final." From 2a5175c4cab6b6e3f476d105287dd6aa72dc5847 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:37:43 +0200 Subject: [PATCH 26/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index b97ba591d1..f639177e87 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -1706,8 +1706,8 @@ msgid "" "operator)::" msgstr "" "Para acumular muchos objetos :class:`bytes`, la forma recomendada sería " -"extender un objeto :class:`bytearray` usando el operador de concatenación en " -"el lugar, \"in-place\" (el operador ``+=``)::" +"extender un objeto :class:`bytearray` usando el operador de concatenación " +" in situ (el operador ``+=``)::" #: ../Doc/faq/programming.rst:1100 msgid "Sequences (Tuples/Lists)" From 4ba812cb70e441d013e8f1b1441b832b4d94d31e Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:38:04 +0200 Subject: [PATCH 27/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index f639177e87..4f05fcc613 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -1884,7 +1884,7 @@ msgid "" "``lisp_list[1]``. Only do this if you're sure you really need to, because " "it's usually a lot slower than using Python lists." msgstr "" -"Se deseas que haya mutabilidad podrías usar listas en lugar de tuplas. El " +"Si deseas que haya mutabilidad podrías usar listas en lugar de tuplas. El " "análogo a un car de Lisp es ``lisp_list[0]`` y al análogo a cdr es " "``lisp_list[1]``. Haz esto solo si estás seguro que es lo que necesitas " "debido a que, normalmente, será bastante más lento que el usar listas " From f5e6b0c87f6d368e4680c3ab484c396224ef2d68 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:38:22 +0200 Subject: [PATCH 28/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 4f05fcc613..42f9ff7d80 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -2347,7 +2347,7 @@ msgstr "" #: ../Doc/faq/programming.rst:1534 msgid "How can I organize my code to make it easier to change the base class?" msgstr "" -"¿Cómo puedo organizar mi código para hacer que sea más sencillo modificas la " +"¿Cómo puedo organizar mi código para hacer que sea más sencillo modificar la " "clase base?" #: ../Doc/faq/programming.rst:1536 From 8a4ba036dfc496eb23444a8e7dcd91cd52e1181f Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:39:21 +0200 Subject: [PATCH 29/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 42f9ff7d80..ce460a7616 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -2363,7 +2363,7 @@ msgstr "" "alias antes de la definición de tu clase y usar el alias a lo largo de toda " "la clase. Entonces, lo único que tienes que cambiar es el valor asignado al " "alias. Sin pretenderlo, este truco también es útil si desear decidir de " -"forma dinámica (e.g. dependiendo de la disponibilidad de recursos) qué clase " +"forma dinámica (por ejemplo dependiendo de la disponibilidad de recursos) qué clase " "base usar. Ejemplo::" #: ../Doc/faq/programming.rst:1551 From 2d361f6c3025610cdca705aa8e85783990c4497f Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:40:28 +0200 Subject: [PATCH 30/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index ce460a7616..0618270e4a 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -2545,8 +2545,8 @@ msgstr "" "última referencia a tu estructura de datos, de tal forma que tu método :meth:" "`__del__` se pueda invocar en un momento aleatorio que no resulte " "inconveniente. Esto no es conveniente si estás intentando reproducir un " -"problema. Peor, el orden en el que se ejecutan los métodos :meth:`__del__` " -"del objeto. es arbitrario Puedes ejecutar :func:`gc.collect` para forzar " +"problema. Peor aún, el orden en el que se ejecutan los métodos :meth:`__del__` " +"del objeto es arbitrario. Puedes ejecutar :func:`gc.collect` para forzar " "una recopilación pero *existen* casos patológicos en los cuales los objetos " "nunca serán recolectados." From 2b506ca07155cb0f50ad8c66db6a6ab2d2d29e19 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 12:40:42 +0200 Subject: [PATCH 31/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index 0618270e4a..b904bfd14f 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -2547,7 +2547,7 @@ msgstr "" "inconveniente. Esto no es conveniente si estás intentando reproducir un " "problema. Peor aún, el orden en el que se ejecutan los métodos :meth:`__del__` " "del objeto es arbitrario. Puedes ejecutar :func:`gc.collect` para forzar " -"una recopilación pero *existen* casos patológicos en los cuales los objetos " +"una recolección pero *existen* casos patológicos en los cuales los objetos " "nunca serán recolectados." #: ../Doc/faq/programming.rst:1667 From 39f2008ac228f3b50faca911e147c5c0e1f7bd4e Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 13:05:36 +0200 Subject: [PATCH 32/36] =?UTF-8?q?Modificaciones=20extra=20(e.g.,=20enmara?= =?UTF-8?q?=C3=B1ar,=20slash,...)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- faq/programming.po | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index b904bfd14f..f9348eea20 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -408,7 +408,7 @@ msgid "" "functions), e.g.::" msgstr "" "Considera que usas un bucle *for* para crear unas pocas funciones lambda (o, " -"incluso, funciones normales), e.g.::" +"incluso, funciones normales), por ejemplo.::" #: ../Doc/faq/programming.rst:220 msgid "" @@ -544,7 +544,7 @@ msgstr "Es una buena práctica si importas los módulos en el orden siguiente:" #: ../Doc/faq/programming.rst:304 msgid "standard library modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``" msgstr "" -"módulos de la biblioteca estándar -- e.g. ``sys``, ``os``, ``getopt``, ``re``" +"módulos de la biblioteca estándar -- por ejemplo, ``sys``, ``os``, ``getopt``, ``re``" #: ../Doc/faq/programming.rst:305 msgid "" @@ -552,7 +552,7 @@ msgid "" "directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc." msgstr "" "módulos de bibliotecas de terceros (cualquier cosa instalada en el " -"directorio *site-packages* de Python) -- e.g. mx.DateTime, ZODB, PIL.Image, " +"directorio *site-packages* de Python) -- por ejemplo, mx.DateTime, ZODB, PIL.Image, " "etc." #: ../Doc/faq/programming.rst:307 @@ -1206,7 +1206,7 @@ msgstr "¡No probéis esto en casa, personitas!" #: ../Doc/faq/programming.rst:776 msgid "What does the slash(/) in the parameter list of a function mean?" msgstr "" -"¿Qué hace el *slash* (/) en medio de la lista de parámetros de una función?" +"¿Qué hace la barra (/) en medio de la lista de parámetros de una función?" #: ../Doc/faq/programming.rst:778 msgid "" @@ -1313,8 +1313,8 @@ msgid "" "e.g. ``float('144') == 144.0``." msgstr "" "Para enteros puedes usar la función incorporada constructor de tipos :func:" -"`int`, e.g. ``int('144') == 144``. De forma similar, :func:`float` " -"convierte a un número de coma flotante, e.g. ``float('144') == 144.0``." +"`int`, por ejemplo ``int('144') == 144``. De forma similar, :func:`float` " +"convierte a un número de coma flotante, por ejemplo ``float('144') == 144.0``." #: ../Doc/faq/programming.rst:853 msgid "" @@ -1356,7 +1356,7 @@ msgid "" "does not allow leading '0' in a decimal number (except '0')." msgstr "" ":func:`eval` también tiene el efecto de interpretar números como expresiones " -"Python , de tal forma que e.g. ``eval('09')`` dará un error de sintaxis " +"Python , de tal forma que, por ejemplo, ``eval('09')`` dará un error de sintaxis " "porque Python no permite un '0' inicial en un número decimal (excepto '0')." #: ../Doc/faq/programming.rst:872 @@ -1372,16 +1372,16 @@ msgid "" "``\"{:04d}\".format(144)`` yields ``'0144'`` and ``\"{:.3f}\"." "format(1.0/3.0)`` yields ``'0.333'``." msgstr "" -"Para convertir, e.g., el número 144 a la cadena '144', usa el constructor de " +"Para convertir, por ejemplo, el número 144 a la cadena '144', usa el constructor de " "tipos incorporado :func:`str`. Si deseas una representación hexadecimal o " "octal usa la función incorporada :func:`hex` o :func:`oct`. Para un " "formateado elaborado puedes ver las secciones de :ref:`f-strings` y :ref:" -"`formatstrings`, e.g. ``\"{:04d}\".format(144)`` produce ``'0144'`` y ``" +"`formatstrings`, por ejemplo ``\"{:04d}\".format(144)`` produce ``'0144'`` y ``" "\"{:.3f}\".format(1.0/3.0)`` produce ``'0.333'``." #: ../Doc/faq/programming.rst:883 msgid "How do I modify a string in place?" -msgstr "¿Cómo puedo modificar una cadena en el mismo lugar?" +msgstr "¿Cómo puedo modificar una cadena in situ?" #: ../Doc/faq/programming.rst:885 msgid "" @@ -1415,7 +1415,7 @@ msgstr "" "Lo mejor sería usar un diccionario que mapee cadenas a funciones. La " "principal ventaja de esta técnica es que las cadenas no necesitan ser " "iguales que los nombres de las funciones. Esta es también la principal " -"técnica que se usa para emular una forma *case*::" +"técnica que se usa para emular un constructo *case*::" #: ../Doc/faq/programming.rst:934 msgid "Use the built-in function :func:`getattr`::" @@ -1829,7 +1829,7 @@ msgid "" "If all elements of the list may be used as set keys (i.e. they are all :term:" "`hashable`) this is often faster ::" msgstr "" -"Si todos los elementos de la lista pueden ser usados como claves (i.e. son " +"Si todos los elementos de la lista pueden ser usados como claves (por ejemplo son " "todos :term:`hashable`) esto será, en general, más rápido ::" #: ../Doc/faq/programming.rst:1173 @@ -2221,9 +2221,9 @@ msgid "" msgstr "" "Usa la función incorporada ``isinstance(obj, cls)``. Puedes comprobar si un " "objeto es una instancia de cualquier número de clases proporcionando una " -"tupla en lugar de una sola clase, e.g. ``isinstance(obj, (class1, " +"tupla en lugar de una sola clase, por ejemplo ``isinstance(obj, (class1, " "class2, ...))`` y, también, puedes comprobar si un objeto es uno de los " -"tipos incorporados e.g. ``isinstance(obj, str)`` o ``isinstance(obj, (int, " +"tipos incorporados por ejemplo ``isinstance(obj, str)`` o ``isinstance(obj, (int, " "float, complex))``." #: ../Doc/faq/programming.rst:1443 @@ -2466,8 +2466,8 @@ msgstr "" #: ../Doc/faq/programming.rst:1624 msgid "You could also try a variable-length argument list, e.g. ::" msgstr "" -"Podrías intentar, también una lista de argumentos de longitud variable, e." -"g. ::" +"Podrías intentar, también una lista de argumentos de longitud variable, por " +"ejemplo ::" #: ../Doc/faq/programming.rst:1629 msgid "The same approach works for all method definitions." @@ -2487,8 +2487,8 @@ msgid "" "stripped." msgstr "" "Nombres de variable con doble guion prefijado se convierten, " -"'enmarañándolos', para proporcionar una forma simple pero efectiva de " -"definir variables de clase privadas Cualquier identificador de la forma " +"con una modificación de nombres, para proporcionar una forma simple pero efectiva de " +"definir variables de clase privadas. Cualquier identificador de la forma " "``__spam`` (como mínimo dos guiones bajos como prefijo, como máximo un guion " "bajo como sufijo) se reemplaza con ``_classname__spam``, donde ``classname`` " "es el nombre de la clase eliminando cualquier guion bajo prefijado." @@ -2537,7 +2537,7 @@ msgid "" "run :func:`gc.collect` to force a collection, but there *are* pathological " "cases where objects will never be collected." msgstr "" -"Si tus estructuras de datos contienen enlaces circulares (e.g. un árbol en " +"Si tus estructuras de datos contienen enlaces circulares (por ejemplo un árbol en " "el cual cada hijo tiene una referencia al padre y cada padre tiene una lista " "de hijos) el conteo de referencias no alcanzará nunca el valor de cero. De " "vez en cuando, Python ejecuta un algoritmo para detectar esos ciclos pero el " From 8530f576cf49ea0eafcfce209e4132d4491c2916 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 15:52:55 +0200 Subject: [PATCH 33/36] Added constructo --- dict | 1 + 1 file changed, 1 insertion(+) diff --git a/dict b/dict index 801cf6a647..959cfaf2c1 100644 --- a/dict +++ b/dict @@ -419,6 +419,7 @@ conceptualmente consolelib contravariante contravariantes +constructo constructos conversor correlacionan From aea222871fbfe3263ad6e546187e4fc37d6da370 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 15:53:26 +0200 Subject: [PATCH 34/36] Update faq/programming.po MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Claudia Millán --- faq/programming.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faq/programming.po b/faq/programming.po index f9348eea20..8e407fcd7e 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -1621,7 +1621,7 @@ msgstr "" "supuestamente será (aunque no se garantiza) más rápida que cualquier otra " "alternativa que se te ocurra. Esto es doblemente cierto si las primitivas " "han sido escritas en C, como los *builtins* y algunos tipos extendidos. Por " -"ejemplo, asegúrate de usar el método integrado :meth:`list.sort`o la función " +"ejemplo, asegúrate de usar el método integrado :meth:`list.sort` o la función " "relacionada :func:`sorted` para ordenar (y ver :ref:`sortinghowto` para ver " "ejemplos de uso moderadamente avanzados)." From fa1ea41fc963945434bad5ea4002cf37ed9aa5b9 Mon Sep 17 00:00:00 2001 From: kikocorreoso Date: Tue, 25 Aug 2020 16:14:06 +0200 Subject: [PATCH 35/36] Mensaje faltante por traducir --- faq/programming.po | 2 ++ 1 file changed, 2 insertions(+) diff --git a/faq/programming.po b/faq/programming.po index 8e407fcd7e..52656fccc4 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -50,6 +50,8 @@ msgid "" "Several debuggers for Python are described below, and the built-in function :" "func:`breakpoint` allows you to drop into any of them." msgstr "" +"Debajo se describen algunos depuradores para Python y la función integrada :" +"func:`breakpoint` te permite ejecutar alguno de ellos." #: ../Doc/faq/programming.rst:22 msgid "" From 851db7b8697a68fd13bcb9c7d594a5df3a765b08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Claudia=20Mill=C3=A1n?= Date: Tue, 25 Aug 2020 22:07:07 +0200 Subject: [PATCH 36/36] fixing build for programming faq --- faq/programming.po | 100 ++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 47 deletions(-) diff --git a/faq/programming.po b/faq/programming.po index 52656fccc4..513509782f 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -546,7 +546,8 @@ msgstr "Es una buena práctica si importas los módulos en el orden siguiente:" #: ../Doc/faq/programming.rst:304 msgid "standard library modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``" msgstr "" -"módulos de la biblioteca estándar -- por ejemplo, ``sys``, ``os``, ``getopt``, ``re``" +"módulos de la biblioteca estándar -- por ejemplo, ``sys``, ``os``, " +"``getopt``, ``re``" #: ../Doc/faq/programming.rst:305 msgid "" @@ -554,8 +555,8 @@ msgid "" "directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc." msgstr "" "módulos de bibliotecas de terceros (cualquier cosa instalada en el " -"directorio *site-packages* de Python) -- por ejemplo, mx.DateTime, ZODB, PIL.Image, " -"etc." +"directorio *site-packages* de Python) -- por ejemplo, mx.DateTime, ZODB, PIL." +"Image, etc." #: ../Doc/faq/programming.rst:307 msgid "locally-developed modules" @@ -726,7 +727,9 @@ msgstr "" #: ../Doc/faq/programming.rst:397 msgid "" "How can I pass optional or keyword parameters from one function to another?" -msgstr "¿Cómo puedo pasar parámetros por palabra clave u opcionales de una función a otra?" +msgstr "" +"¿Cómo puedo pasar parámetros por palabra clave u opcionales de una función a " +"otra?" #: ../Doc/faq/programming.rst:399 msgid "" @@ -735,11 +738,11 @@ msgid "" "tuple and the keyword arguments as a dictionary. You can then pass these " "arguments when calling another function by using ``*`` and ``**``::" msgstr "" -"Recopila los argumentos usando los especificadores ``*`` y ``**`` " -"en la lista de parámetros de la función; esto te proporciona " -"los argumentos posicionales como una tupla y los argumentos con palabras " -"clave como un diccionario. Puedes, entonces, pasar estos argumentos cuando " -"invoques a otra función usando ``*`` y ``**``::" +"Recopila los argumentos usando los especificadores ``*`` y ``**`` en la " +"lista de parámetros de la función; esto te proporciona los argumentos " +"posicionales como una tupla y los argumentos con palabras clave como un " +"diccionario. Puedes, entonces, pasar estos argumentos cuando invoques a " +"otra función usando ``*`` y ``**``::" #: ../Doc/faq/programming.rst:418 msgid "What is the difference between arguments and parameters?" @@ -1316,7 +1319,8 @@ msgid "" msgstr "" "Para enteros puedes usar la función incorporada constructor de tipos :func:" "`int`, por ejemplo ``int('144') == 144``. De forma similar, :func:`float` " -"convierte a un número de coma flotante, por ejemplo ``float('144') == 144.0``." +"convierte a un número de coma flotante, por ejemplo ``float('144') == " +"144.0``." #: ../Doc/faq/programming.rst:853 msgid "" @@ -1358,8 +1362,9 @@ msgid "" "does not allow leading '0' in a decimal number (except '0')." msgstr "" ":func:`eval` también tiene el efecto de interpretar números como expresiones " -"Python , de tal forma que, por ejemplo, ``eval('09')`` dará un error de sintaxis " -"porque Python no permite un '0' inicial en un número decimal (excepto '0')." +"Python , de tal forma que, por ejemplo, ``eval('09')`` dará un error de " +"sintaxis porque Python no permite un '0' inicial en un número decimal " +"(excepto '0')." #: ../Doc/faq/programming.rst:872 msgid "How do I convert a number to a string?" @@ -1374,12 +1379,12 @@ msgid "" "``\"{:04d}\".format(144)`` yields ``'0144'`` and ``\"{:.3f}\"." "format(1.0/3.0)`` yields ``'0.333'``." msgstr "" -"Para convertir, por ejemplo, el número 144 a la cadena '144', usa el constructor de " -"tipos incorporado :func:`str`. Si deseas una representación hexadecimal o " -"octal usa la función incorporada :func:`hex` o :func:`oct`. Para un " -"formateado elaborado puedes ver las secciones de :ref:`f-strings` y :ref:" -"`formatstrings`, por ejemplo ``\"{:04d}\".format(144)`` produce ``'0144'`` y ``" -"\"{:.3f}\".format(1.0/3.0)`` produce ``'0.333'``." +"Para convertir, por ejemplo, el número 144 a la cadena '144', usa el " +"constructor de tipos incorporado :func:`str`. Si deseas una representación " +"hexadecimal o octal usa la función incorporada :func:`hex` o :func:`oct`. " +"Para un formateado elaborado puedes ver las secciones de :ref:`f-strings` y :" +"ref:`formatstrings`, por ejemplo ``\"{:04d}\".format(144)`` produce " +"``'0144'`` y ``\"{:.3f}\".format(1.0/3.0)`` produce ``'0.333'``." #: ../Doc/faq/programming.rst:883 msgid "How do I modify a string in place?" @@ -1623,9 +1628,9 @@ msgstr "" "supuestamente será (aunque no se garantiza) más rápida que cualquier otra " "alternativa que se te ocurra. Esto es doblemente cierto si las primitivas " "han sido escritas en C, como los *builtins* y algunos tipos extendidos. Por " -"ejemplo, asegúrate de usar el método integrado :meth:`list.sort` o la función " -"relacionada :func:`sorted` para ordenar (y ver :ref:`sortinghowto` para ver " -"ejemplos de uso moderadamente avanzados)." +"ejemplo, asegúrate de usar el método integrado :meth:`list.sort` o la " +"función relacionada :func:`sorted` para ordenar (y ver :ref:`sortinghowto` " +"para ver ejemplos de uso moderadamente avanzados)." #: ../Doc/faq/programming.rst:1052 msgid "" @@ -1682,10 +1687,11 @@ msgid "" "creates a new object. In the general case, the total runtime cost is " "quadratic in the total string length." msgstr "" -"Los objetos :class:`str` y :class:`bytes` son inmutables, por tanto, concatenar " -"muchas cadenas en una sola es ineficiente debido a que cada concatenación " -"crea un nuevo objeto. En el caso más general, el coste total en tiempo de " -"ejecución es cuadrático en relación a la longitud de la cadena final." +"Los objetos :class:`str` y :class:`bytes` son inmutables, por tanto, " +"concatenar muchas cadenas en una sola es ineficiente debido a que cada " +"concatenación crea un nuevo objeto. En el caso más general, el coste total " +"en tiempo de ejecución es cuadrático en relación a la longitud de la cadena " +"final." #: ../Doc/faq/programming.rst:1081 msgid "" @@ -1708,8 +1714,8 @@ msgid "" "operator)::" msgstr "" "Para acumular muchos objetos :class:`bytes`, la forma recomendada sería " -"extender un objeto :class:`bytearray` usando el operador de concatenación " -" in situ (el operador ``+=``)::" +"extender un objeto :class:`bytearray` usando el operador de concatenación " +"in situ (el operador ``+=``)::" #: ../Doc/faq/programming.rst:1100 msgid "Sequences (Tuples/Lists)" @@ -1831,8 +1837,8 @@ msgid "" "If all elements of the list may be used as set keys (i.e. they are all :term:" "`hashable`) this is often faster ::" msgstr "" -"Si todos los elementos de la lista pueden ser usados como claves (por ejemplo son " -"todos :term:`hashable`) esto será, en general, más rápido ::" +"Si todos los elementos de la lista pueden ser usados como claves (por " +"ejemplo son todos :term:`hashable`) esto será, en general, más rápido ::" #: ../Doc/faq/programming.rst:1173 msgid "" @@ -2225,8 +2231,8 @@ msgstr "" "objeto es una instancia de cualquier número de clases proporcionando una " "tupla en lugar de una sola clase, por ejemplo ``isinstance(obj, (class1, " "class2, ...))`` y, también, puedes comprobar si un objeto es uno de los " -"tipos incorporados por ejemplo ``isinstance(obj, str)`` o ``isinstance(obj, (int, " -"float, complex))``." +"tipos incorporados por ejemplo ``isinstance(obj, str)`` o ``isinstance(obj, " +"(int, float, complex))``." #: ../Doc/faq/programming.rst:1443 msgid "" @@ -2365,8 +2371,8 @@ msgstr "" "alias antes de la definición de tu clase y usar el alias a lo largo de toda " "la clase. Entonces, lo único que tienes que cambiar es el valor asignado al " "alias. Sin pretenderlo, este truco también es útil si desear decidir de " -"forma dinámica (por ejemplo dependiendo de la disponibilidad de recursos) qué clase " -"base usar. Ejemplo::" +"forma dinámica (por ejemplo dependiendo de la disponibilidad de recursos) " +"qué clase base usar. Ejemplo::" #: ../Doc/faq/programming.rst:1551 msgid "How do I create static class data and static class methods?" @@ -2488,8 +2494,8 @@ msgid "" "``classname`` is the current class name with any leading underscores " "stripped." msgstr "" -"Nombres de variable con doble guion prefijado se convierten, " -"con una modificación de nombres, para proporcionar una forma simple pero efectiva de " +"Nombres de variable con doble guion prefijado se convierten, con una " +"modificación de nombres, para proporcionar una forma simple pero efectiva de " "definir variables de clase privadas. Cualquier identificador de la forma " "``__spam`` (como mínimo dos guiones bajos como prefijo, como máximo un guion " "bajo como sufijo) se reemplaza con ``_classname__spam``, donde ``classname`` " @@ -2539,18 +2545,18 @@ msgid "" "run :func:`gc.collect` to force a collection, but there *are* pathological " "cases where objects will never be collected." msgstr "" -"Si tus estructuras de datos contienen enlaces circulares (por ejemplo un árbol en " -"el cual cada hijo tiene una referencia al padre y cada padre tiene una lista " -"de hijos) el conteo de referencias no alcanzará nunca el valor de cero. De " -"vez en cuando, Python ejecuta un algoritmo para detectar esos ciclos pero el " -"recolector de basura debe ejecutarse un rato después de que se desvanezca la " -"última referencia a tu estructura de datos, de tal forma que tu método :meth:" -"`__del__` se pueda invocar en un momento aleatorio que no resulte " -"inconveniente. Esto no es conveniente si estás intentando reproducir un " -"problema. Peor aún, el orden en el que se ejecutan los métodos :meth:`__del__` " -"del objeto es arbitrario. Puedes ejecutar :func:`gc.collect` para forzar " -"una recolección pero *existen* casos patológicos en los cuales los objetos " -"nunca serán recolectados." +"Si tus estructuras de datos contienen enlaces circulares (por ejemplo un " +"árbol en el cual cada hijo tiene una referencia al padre y cada padre tiene " +"una lista de hijos) el conteo de referencias no alcanzará nunca el valor de " +"cero. De vez en cuando, Python ejecuta un algoritmo para detectar esos " +"ciclos pero el recolector de basura debe ejecutarse un rato después de que " +"se desvanezca la última referencia a tu estructura de datos, de tal forma " +"que tu método :meth:`__del__` se pueda invocar en un momento aleatorio que " +"no resulte inconveniente. Esto no es conveniente si estás intentando " +"reproducir un problema. Peor aún, el orden en el que se ejecutan los " +"métodos :meth:`__del__` del objeto es arbitrario. Puedes ejecutar :func:`gc." +"collect` para forzar una recolección pero *existen* casos patológicos en los " +"cuales los objetos nunca serán recolectados." #: ../Doc/faq/programming.rst:1667 msgid ""