2011-09-10 12 views
5

Así que estoy leyendo este viejo módulo de alrededor de 2002 y tiene esta línea de "cadena de importación". ¿Necesitó Python que importara un módulo de cadena explícitamente antes para poder usar variables de tipo cadena o algo así? No veo que utiliza como esto en el código:python "módulo de cadena"?

string.something 
+1

Todavía se encuentra en: http://docs.python.org/library/string.html – NullUserException

Respuesta

2

Si ve un import string pero nunca ver string.something, alguien se olvidó de quitar una importación sin utilizar.

Si bien no hicieron uso a haber algunas cosas en string que ahora son métodos estándar de str objetos, todavía tenían que sea

  1. prefijo con string. después de importar la biblioteca, o el uso
  2. from string import <whatever> sintaxis.

Por lo general, las únicas veces que se verá algo adecuadamente importada pero nunca "utiliza explícitamente" se from __future__ import with_statement o similar - la adelante/atrás compatibilidad desencadena utilizado por Python para nuevas características del lenguaje.

0

así, en las versiones anteriores del módulo string era de hecho mucho más útil, pero en las versiones recientes la mayoría de las funciones del módulo de cadena están disponibles también como métodos de las cadenas ..

esta página le dará un mejor aspecto: http://effbot.org/librarybook/string.htm

-1

Como Ambar dicho esto, parece ser una importación redundante, y RoeeeK también tiene razón al decir que la mayor parte de las funciones del módulo string son por su parte métodos de cadena, es decir, que puede hacer en lugar de "foobar".method()string.function("foobar"). Sin embargo, a veces aún es útil importar explícitamente el módulo; por ejemplo, en el caso de devoluciones de llamada:

map(string.strip, [' foo ', ' bar ']).

Tenga en cuenta que lo anterior también se puede lograr por [chunk.strip() for chunk in [' foo ', ' bar ']], por lo que no es necesario importar string en este caso.

+1

'map (str.strip, ['foo', 'bar'])' –

+0

Ah, bien. Siento que debería haber sabido esto, pero de alguna manera, no lo hice. Gracias por señalar eso, a pesar de que hace que mi respuesta no tenga sentido. :) – jena

1

El módulo string contiene a set of useful constants, como ascii_letters y digits, y el módulo a menudo todavía se importa por ese motivo.