- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
Funciones incorporadas de Python (2)
Esta sección continúa con más funciones incorporadas de Python.

Operación IO
input([prompt])
Si hay un argumento de solicitud, se escribe en la salida estándar sin saltos de línea al final. A continuación, la función lee una línea de la entrada, la convierte en una cadena (excepto la nueva línea al final) y la devuelve. Cuando se lee EOF, se activa EOFError.Por ejemplo:
Si hay un argumento de solicitud, se escribe en la salida estándar sin saltos de línea al final. A continuación, la función lee una línea de la entrada, la convierte en una cadena (excepto la nueva línea al final) y la devuelve. Cuando se lee EOF, se activa EOFError.Por ejemplo:
In [25]: s = input('>>') >>learnpython In [26]: s Out[26]: 'learnpython'
Si se carga el módulo readline, input () lo usará para proporcionar funciones complejas de edición de líneas e historial.
open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Abra el archivo y devuelva el objeto de archivo correspondiente. Si el archivo no se puede abrir, se activa un OSError.
Abra el archivo y devuelva el objeto de archivo correspondiente. Si el archivo no se puede abrir, se activa un OSError.
El archivo es un objeto similar a una ruta que representa la ruta al archivo que se abrirá (ruta absoluta o ruta relativa al directorio de trabajo actual), o un descriptor de archivo de tipo entero que se debe encapsular. (Si es un descriptor de archivo, se cerrará cuando se cierre el objeto de E / S devuelto, a menos que closefd esté establecido en False).
El modo es una cadena opcional que especifica el modo en el que se abre el archivo. El valor predeterminado es 'r', lo que significa que se abre y se lee en modo de texto. Otros modos comunes son: escriba 'w' (truncar archivos existentes); cree exclusivamente 'x'; agregue 'a' (en algunos sistemas Unix, dondequiera que esté el puntero del archivo actual, todas las escrituras Se adjuntará al final del archivo). En el modo de texto, si no se especifica la codificación, la codificación utilizada depende de la plataforma: use locale.getpreferredencoding (False) para obtener la codificación local. (Para leer y escribir bytes sin procesar, use el modo binario y no especifique la codificación). Los modos disponibles son:
Significado del personaje
'r' leer (por defecto)
'w' escribe y primero trunca el archivo
'x' se crea exclusivamente, si el archivo ya existe
'a' está escrito, se adjunta al final si el archivo existe
modo binario 'b'
Modo de texto 't' (predeterminado)
'+' actualizar el archivo de disco (leer y escribir)
Modo de nuevas líneas universal 'U' (obsoleto)
El modo predeterminado es 'r' (abrir y leer texto, igual que 'rt'). Para escrituras binarias, el modo 'w + b' está activado y el archivo se trunca a 0 bytes; 'r + b' no se trunca.
'r' leer (por defecto)
'w' escribe y primero trunca el archivo
'x' se crea exclusivamente, si el archivo ya existe
'a' está escrito, se adjunta al final si el archivo existe
modo binario 'b'
Modo de texto 't' (predeterminado)
'+' actualizar el archivo de disco (leer y escribir)
Modo de nuevas líneas universal 'U' (obsoleto)
El modo predeterminado es 'r' (abrir y leer texto, igual que 'rt'). Para escrituras binarias, el modo 'w + b' está activado y el archivo se trunca a 0 bytes; 'r + b' no se trunca.
Como se mencionó en la Descripción general, Python distingue entre E / S binarias y de texto. El archivo abierto en modo binario (incluida 'b' en el parámetro de modo) devuelve el contenido del bytes
Objeto, no se realiza decodificación. En modo texto (de forma predeterminada, o incluido en el parámetro * modo *
't' ), el contenido del archivo se devuelve como str, primero utilizando la codificación especificada (si se proporciona) o utilizando la decodificación de bytecode predeterminada de la plataforma. .
Tenga en cuenta que Python no se basa en el concepto de archivo de texto del sistema operativo subyacente, todo el procesamiento lo realiza Python, por lo que es independiente de la plataforma.
El almacenamiento en búfer es un entero opcional utilizado para establecer la estrategia de almacenamiento en búfer. Pase 0 para desactivar el búfer (solo permitido en modo binario), 1 búfer de fila de selección (disponible solo en modo de texto) y un entero> 1 para indicar el tamaño del búfer de bloque de tamaño fijo (en bytes) . Si no se proporciona ningún parámetro de almacenamiento en búfer, la estrategia de almacenamiento en búfer predeterminada funciona de la siguiente manera:
El almacenamiento en búfer es un entero opcional utilizado para establecer la estrategia de almacenamiento en búfer. Pase 0 para desactivar el búfer (solo permitido en modo binario), 1 búfer de fila de selección (disponible solo en modo de texto) y un entero> 1 para indicar el tamaño del búfer de bloque de tamaño fijo (en bytes) . Si no se proporciona ningún parámetro de almacenamiento en búfer, la estrategia de almacenamiento en búfer predeterminada funciona de la siguiente manera:
El binario se almacena en búfer con un bloque de tamaño fijo; use una heurística para seleccionar el tamaño del búfer, intente determinar el "tamaño de bloque" del dispositivo subyacente o use io.DEFAULT_BUFFER_SIZE. En muchos sistemas, la longitud del búfer es típicamente de 4096 u 8192 bytes.
El archivo de texto "interactivo" (isatty () devuelve un archivo True) utiliza el búfer de línea. Otros archivos de texto utilizan la estrategia anterior para archivos binarios.
Codificación es el nombre de la codificación utilizada para decodificar o codificar el archivo. Esto solo debe ser usado en el modo de texto. La codificación predeterminada depende de la plataforma (independientemente del valor devuelto por locale.getpreferredencoding ()), pero se puede usar cualquier codificación de texto compatible con Python. Consulte el módulo de códecs para obtener una lista de las codificaciones compatibles.
El archivo de texto "interactivo" (isatty () devuelve un archivo True) utiliza el búfer de línea. Otros archivos de texto utilizan la estrategia anterior para archivos binarios.
Codificación es el nombre de la codificación utilizada para decodificar o codificar el archivo. Esto solo debe ser usado en el modo de texto. La codificación predeterminada depende de la plataforma (independientemente del valor devuelto por locale.getpreferredencoding ()), pero se puede usar cualquier codificación de texto compatible con Python. Consulte el módulo de códecs para obtener una lista de las codificaciones compatibles.
Errores es un parámetro de cadena opcional que especifica cómo se manejan los errores de codificación y decodificación, esto no se puede usar en modo binario. Se pueden usar varios manejadores de errores estándar (enumerados en los manejadores de errores), pero cualquier nombre de manejo de errores registrado con codecs.register_error () también es válido. Los nombres estándar incluyen:
Si hay un error de codificación, "estricto" generará una excepción ValueError. El valor predeterminado de Ninguno tiene el mismo efecto.
'ignorar' ignora el error. Tenga en cuenta que ignorar los errores de codificación puede provocar la pérdida de datos.
'reemplazar' insertará una etiqueta de reemplazo (como '?') en el lugar con los datos incorrectos.
'surrogateescape' representará los bytes incorrectos como puntos de código en el área privada de Unicode, desde U + DC80 hasta U + DCFF. Al utilizar el controlador de errores surrogateescape al escribir datos, estos puntos de código privado se transferirán de nuevo al mismo byte. Esto es útil para trabajar con archivos con codificación desconocida.
'xmlcharrefreplace' solo se admite cuando se escribe en un archivo. Los caracteres no admitidos por la codificación se reemplazarán con la referencia de caracteres XML correspondiente & # nnn ;.
'backslashreplace' reemplaza los datos mal formados con la secuencia de escape inversa de Python.
'namereplace' (también se admite solo en tiempo de compilación) reemplaza los caracteres no compatibles con la secuencia de escape \ N {...}.
Newline controla cómo funciona el modo de líneas nuevas universales (solo funciona en modo de texto). Puede ser Ninguno, ", '\ n', '\ r' y '\ r \ n'. Cómo funciona:
'ignorar' ignora el error. Tenga en cuenta que ignorar los errores de codificación puede provocar la pérdida de datos.
'reemplazar' insertará una etiqueta de reemplazo (como '?') en el lugar con los datos incorrectos.
'surrogateescape' representará los bytes incorrectos como puntos de código en el área privada de Unicode, desde U + DC80 hasta U + DCFF. Al utilizar el controlador de errores surrogateescape al escribir datos, estos puntos de código privado se transferirán de nuevo al mismo byte. Esto es útil para trabajar con archivos con codificación desconocida.
'xmlcharrefreplace' solo se admite cuando se escribe en un archivo. Los caracteres no admitidos por la codificación se reemplazarán con la referencia de caracteres XML correspondiente & # nnn ;.
'backslashreplace' reemplaza los datos mal formados con la secuencia de escape inversa de Python.
'namereplace' (también se admite solo en tiempo de compilación) reemplaza los caracteres no compatibles con la secuencia de escape \ N {...}.
Newline controla cómo funciona el modo de líneas nuevas universales (solo funciona en modo de texto). Puede ser Ninguno, ", '\ n', '\ r' y '\ r \ n'. Cómo funciona:
Al leer la entrada de un flujo, si la nueva línea es Ninguna, se habilita el modo de ajuste universal. Las líneas en la entrada pueden terminar con '\ n', '\ r' o '\ r \ n', que se traducen como '\ n' antes de regresar a la persona que llama. Si es ", entonces el modo de salto de línea universal está habilitado, pero el final de la línea se devolverá a la persona que llama sin traducir. Si tiene cualquier otro valor legal, la línea de entrada solo termina con la cadena dada, y el final de la línea se devolverá a la línea no llamada Llamador
Al escribir la salida en una secuencia, si la nueva línea es Ninguna, cualquier '\ n' de los caracteres escritos se convertirá en el separador de línea predeterminado del sistema os.linesep. Si newline es "o '\ n', no se realiza ninguna traducción. Si newline es cualquier otro valor legal, cualquier '\ n' escrito se convertirá a la cadena dada.
Si closefd es False y se proporciona un descriptor de archivo en lugar de un nombre de archivo, el descriptor de archivo subyacente permanecerá abierto cuando se cierre el archivo. Si se da el nombre del archivo, entonces closefd debe ser True (el valor predeterminado), de lo contrario se generará un error.
Al escribir la salida en una secuencia, si la nueva línea es Ninguna, cualquier '\ n' de los caracteres escritos se convertirá en el separador de línea predeterminado del sistema os.linesep. Si newline es "o '\ n', no se realiza ninguna traducción. Si newline es cualquier otro valor legal, cualquier '\ n' escrito se convertirá a la cadena dada.
Si closefd es False y se proporciona un descriptor de archivo en lugar de un nombre de archivo, el descriptor de archivo subyacente permanecerá abierto cuando se cierre el archivo. Si se da el nombre del archivo, entonces closefd debe ser True (el valor predeterminado), de lo contrario se generará un error.
Puede utilizar un abridor personalizado pasando un abridor que se pueda llamar. El descriptor de archivo base del objeto de archivo se obtiene luego llamando al abridor con el argumento (archivo, indicadores). El abridor debe devolver un descriptor de archivo abierto (el uso de os.open como abridor tiene el mismo efecto que pasar Ninguno).
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
Imprima
objects
en el file
flujo de texto, separando varios objetos con el separador sep
y terminando con el final.Correlación gramatical
breakpoint(*args, **kwargs)
Esta función lo atrapará en el depurador cuando se le llame. Específicamente, llama a
sys.breakpointhook()
, pasando args
y kws
directamente. De forma predeterminada, sys.breakpointhook()
llama a pdb.set_trace()
sin argumentos. En este caso, es puramente una función de conveniencia, por lo que no tiene que importar pdb
explícitamente y escribir el menor código posible para ingresar al depurador. Sin embargo, sys.breakpointhook()
puede configurarse para alguna otra función y ser llamado automáticamente por breakpoint()
para permitir el acceso al depurador que desea usar.
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
Compilar la fuente en código u objetos AST. Los objetos de código pueden ser ejecutados por exec () o eval (). El origen puede ser una cadena normal, una cadena de bytes o un objeto AST.
Compilar la fuente en código u objetos AST. Los objetos de código pueden ser ejecutados por exec () o eval (). El origen puede ser una cadena normal, una cadena de bytes o un objeto AST.
ascii(object)
Devuelve un objeto que solo está representado en ASCII. Una función similar repr () devuelve una representación de cadena imprimible de un objeto, pero los caracteres no ASCII se escapan con
Devuelve un objeto que solo está representado en ASCII. Una función similar repr () devuelve una representación de cadena imprimible de un objeto, pero los caracteres no ASCII se escapan con
\x
, \u
, \U
Por ejemplo:In [23]: ascii([1,2,3]) Out[23]: '[1, 2, 3]' In [24]: ascii('编程') Out[24]: "'\\u7f16\\u7a0b'" In [25]: ascii('a\nb') Out[25]: "'a\\nb'"
repr(object)
Devuelve una cadena que contiene la representación imprimible del objeto. Para muchos tipos, esta función intenta devolver una cadena que producirá un objeto con el mismo valor cuando se pasa a
Devuelve una cadena que contiene la representación imprimible del objeto. Para muchos tipos, esta función intenta devolver una cadena que producirá un objeto con el mismo valor cuando se pasa a
eval()
, de lo contrario, la representación es una cadena encerrada entre paréntesis angulares que contiene el nombre del tipo de objeto. La información adicional generalmente incluye el nombre y la dirección del objeto. Una clase puede controlar lo que esta función devuelve para su instancia definiendo un método repr().In [54]: repr({'a': 1, 'b':2, 'c':3}) Out[54]: "{'a': 1, 'b': 2, 'c': 3}" In [55]: s = repr({'a': 1, 'b':2, 'c':3}) In [56]: eval(s) Out[56]: {'a': 1, 'b': 2, 'c': 3}
eval(expression, globals=None, locals=None)
El argumento es una cadena, junto con globales opcionales y locales. El argumento global debe ser un diccionario. Los locales pueden ser cualquier objeto de mapeo.
Esta función también se puede utilizar para ejecutar cualquier objeto de código (según lo creado por compile ()). En este caso, el argumento es un objeto de código, no una cadena. Si el argumento de modo al compilar el objeto es 'exec', el valor de retorno de eval () es Ninguno.
El argumento es una cadena, junto con globales opcionales y locales. El argumento global debe ser un diccionario. Los locales pueden ser cualquier objeto de mapeo.
Esta función también se puede utilizar para ejecutar cualquier objeto de código (según lo creado por compile ()). En este caso, el argumento es un objeto de código, no una cadena. Si el argumento de modo al compilar el objeto es 'exec', el valor de retorno de eval () es Ninguno.
In [17]: a = 2 In [18]: eval('a+2') Out[18]: 4 In [19]: eval('3*3') Out[19]: 9 In [20]: d = ascii({'a':1, 'b':2}) In [21]: d Out[21]: "{'a': 1, 'b': 2}" In [22]: eval(d) Out[22]: {'a': 1, 'b': 2}
Sugerencia: la función exec () admite la ejecución dinámica de sentencias. Las funciones globals () y locals () devuelven el diccionario global y local actual, por lo que puede pasarlas a eval () o exec () para su uso.
exec(object[, globals[, locals]])
Esta función es compatible con la ejecución dinámica de código Python. El objeto debe ser una cadena o un objeto de código. Si es una cadena, la cadena se analizará en una serie de sentencias de Python y se ejecutará (a menos que se produzca un error de sintaxis). [1] Si es un objeto de código, se ejecutará directamente. En cualquier caso, el código que se está ejecutando debe ser tan válido como la entrada del archivo (consulte la sección sobre la entrada del archivo en el Manual de referencia). Tenga en cuenta que incluso en el contexto del código pasado a la función exec (), las declaraciones de rendimiento y rendimiento no se pueden usar fuera de la definición de la función. El valor de retorno de esta función es Ninguno.
Esta función es compatible con la ejecución dinámica de código Python. El objeto debe ser una cadena o un objeto de código. Si es una cadena, la cadena se analizará en una serie de sentencias de Python y se ejecutará (a menos que se produzca un error de sintaxis). [1] Si es un objeto de código, se ejecutará directamente. En cualquier caso, el código que se está ejecutando debe ser tan válido como la entrada del archivo (consulte la sección sobre la entrada del archivo en el Manual de referencia). Tenga en cuenta que incluso en el contexto del código pasado a la función exec (), las declaraciones de rendimiento y rendimiento no se pueden usar fuera de la definición de la función. El valor de retorno de esta función es Ninguno.
In [24]: exec('a=2;x=a*3;print(x)') 6
globals()
Devuelve un diccionario que representa la tabla de símbolos global actual. Este es siempre el diccionario del módulo actual (en una función o método, no el módulo que lo llamó, sino el módulo que lo define).
Devuelve un diccionario que representa la tabla de símbolos global actual. Este es siempre el diccionario del módulo actual (en una función o método, no el módulo que lo llamó, sino el módulo que lo define).
locals()
Actualiza y devuelve un diccionario que representa la tabla de símbolos local actual. Las variables libres se devuelven cuando se llama a locals () en un bloque de función en lugar de un bloque de clase.
Actualiza y devuelve un diccionario que representa la tabla de símbolos local actual. Las variables libres se devuelven cuando se llama a locals () en un bloque de función en lugar de un bloque de clase.
Nota No modifique el contenido de este diccionario, ya que los cambios no afectan los valores de las variables locales o libres utilizadas por el intérprete.
help([object])
Inicie el sistema de ayuda incorporado (esta función se utiliza principalmente en forma interactiva). Si no hay argumentos, el sistema de ayuda interactivo se iniciará en la consola del intérprete. Si el argumento es una cadena, busque la cadena en un módulo, función, clase, método, palabra clave o tema del documento e imprima la información de ayuda en la consola. Si el argumento es cualquier otro objeto, se genera una página de ayuda para ese objeto.
Inicie el sistema de ayuda incorporado (esta función se utiliza principalmente en forma interactiva). Si no hay argumentos, el sistema de ayuda interactivo se iniciará en la consola del intérprete. Si el argumento es una cadena, busque la cadena en un módulo, función, clase, método, palabra clave o tema del documento e imprima la información de ayuda en la consola. Si el argumento es cualquier otro objeto, se genera una página de ayuda para ese objeto.
Esta función se agrega al espacio de nombres incorporado a través del módulo del sitio.
memoryview(obj)
Devuelve el objeto de vista de memoria creado por el argumento dado. Para obtener más información, consulte Vistas de memoria.
Devuelve el objeto de vista de memoria creado por el argumento dado. Para obtener más información, consulte Vistas de memoria.
Clase relacionada
@ classmethod
Envuelve un método en un método de clase.
Envuelve un método en un método de clase.
Un método de clase toma la clase como el primer argumento, al igual que un método de instancia toma la instancia como el primer argumento. Por favor use los siguientes hábitos para declarar los métodos de clase:
class A: @classmethod def func(cls, arg1, ...): ...
@classmethod
forma @classmethod
es una función decoradora.Puede invocarse en ambas clases (como Cf ()) e instancias (como C (). F ()). La instancia se ignora a excepción de su información de clase. Si se llama a un método de clase en una subclase, la subclase se pasa como el primer argumento.
Los métodos de clase difieren de los métodos estáticos en C ++ y Java. Si quieres métodos estáticos, mira staticmethod ().
@staticmethod
Convertir el método a un método estático.
Los métodos estáticos no reciben el primer argumento implícito. Para declarar un método estático, use esta sintaxis
Los métodos estáticos no reciben el primer argumento implícito. Para declarar un método estático, use esta sintaxis
class A: @staticmethod def func(arg1, arg2, ...): ...
La función formal de @staticmethod es una función decoradora. Se puede llamar en una clase como Cf () o en una instancia (como C (). F ()). Las instancias se ignoran y solo se necesita la clase en sí.
Los métodos estáticos en Python son similares a los métodos estáticos en Java o C ++.Vea también classmethod () para crear variantes del constructor de clase alternativo.
Como todos los decoradores, puede llamar a staticmodod como una función regular y realizar algunas operaciones en su resultado. Por ejemplo, en algunos casos necesita hacer referencia a una función de un cuerpo de clase y desea evitar la conversión automática a un método de instancia. Para estas situaciones, usa esta sintaxis:
class A: buildin_open = staticmethod(open)
Issubclass (class, classinfo)
Devuelve verdadero si la clase es una subclase de classinfo (directa, indirecta o virtual).Classinfo puede ser una tupla de objetos de clase, en cuyo punto se verificará cada elemento de classinfo. En otros casos, se desencadena una excepción TypeError.
Devuelve verdadero si la clase es una subclase de classinfo (directa, indirecta o virtual).Classinfo puede ser una tupla de objetos de clase, en cuyo punto se verificará cada elemento de classinfo. En otros casos, se desencadena una excepción TypeError.
class property(fget=None, fset=None, fdel=None, doc=None)
Devuelve la propiedad de la propiedad.
Devuelve la propiedad de la propiedad.
Fget es una función que obtiene el valor de una propiedad. Fset es una función para establecer valores de propiedad. Fdel es una función para borrar valores de atributo. Y doc crea una cadena de documento para el objeto de propiedad.
Un uso típico es definir una propiedad administrada x:
class A: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
Si a es una instancia de A, ax llamará al captador, ax = value llamará al configurador y del ax llamará al eliminador.
Si se proporciona el parámetro
doc
, es la cadena de documentos para esta propiedad.De lo contrario, esta propiedad copiará la cadena de fget
de fget
.
Las propiedades legibles se implementan fácilmente con un decorador:
class Point: def __init__(self): self._x = 0 self._y = 0 @property def x(self): """Get the current x""" return self._x
El decorador
@property
convierte el método x()
en una propiedad de solo lectura "getter" del mismo nombre, y utiliza la cadena de documentación x
"Obtener la x actual" como la cadena de documentación de la propiedad.
Los objetos de propiedad tienen métodos de obtención, establecimiento y eliminación que se pueden usar como decoradores para crear una copia de la propiedad y establecer la función de acceso correspondiente como decorador. Consulte el siguiente ejemplo:
class A: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Este código es completamente equivalente al primer ejemplo. Asegúrese de que otras funciones especifiquen el mismo nombre que el atributo original (en este caso, x).
El objeto de propiedad devuelto también tiene las propiedades fget, fset y fdel correspondientes a los argumentos del constructor.
Cambios en Python 3.5: la cadena de documentación del objeto de propiedad ahora se puede escribir.
super([type[, object-or-type]])
Devuelve un objeto proxy que delega una llamada de método a un tipo de clase padre o hermana. Esto es útil para acceder a los métodos heredados que se han anulado en una clase. El orden de búsqueda es el mismo que el orden de búsqueda utilizado por getattr (), excepto que el tipo en sí se omite.
Este tipo de atributo mro enumera los métodos utilizados por getattr () y super () para resolver el orden de búsqueda. Esta propiedad es dinámica y se puede cambiar siempre que se actualice la jerarquía de herencia.
Si se omite el segundo argumento, el superobjeto devuelto se desvincula. Si el segundo argumento es un objeto, isinstance (obj, type) debe ser verdadero. Si el segundo argumento es un tipo, issubclass (type2, type) debe ser verdadero (esto es útil para classmethods).
Super tiene dos casos de uso típicos. En una jerarquía de clases con herencia única, se puede usar super para hacer referencia a clases primarias sin nombrarlas explícitamente, lo que hace que el código sea más fácil de mantener. Este uso está estrechamente relacionado con el uso de super en otros lenguajes de programación.
El segundo caso de uso es admitir la herencia múltiple colaborativa en un entorno de ejecución dinámico. Este caso de uso es exclusivo de Python y no se encuentra en idiomas compilados de forma estática o en idiomas que solo admiten herencia simple.Esto hace posible implementar un "mapa de diamante" en el que varias clases base implementan el mismo método. Un buen diseño requiere que este método tenga la misma firma de llamada en cada caso (porque el orden de las llamadas se determina en tiempo de ejecución porque el orden se adapta a los cambios en la jerarquía de clases y porque el orden se puede incluir antes del tiempo de ejecución Clase de hermano desconocido).
Para ambos casos de uso, una llamada típica de superclase es la siguiente:
class B(A): def method(self, arg): super().method(arg) # Equivalente:super(B, self).method(arg)
Tenga en cuenta que super () se implementa como parte del proceso de enlace para búsquedas explícitas de atributos tipo punto, como super (). Getitem (nombre). Lo hace implementando su propio método getattribute (), que busca clases en un orden predecible y admite la herencia múltiple colaborativa. Por lo tanto, para una búsqueda implícita que usa una declaración u operador como super () [nombre], super () no está definido.
También tenga en cuenta que super () no se limita a usar métodos internos, excepto para la forma de parámetro cero. Las dos formas de parámetros especifican completamente los parámetros y hacen las referencias apropiadas. El formulario de parámetro cero se aplica solo a las definiciones de clase porque el compilador completa los detalles necesarios para recuperar correctamente la clase que se está definiendo y para acceder a la instancia actual del método normal.
Operación de objeto
callable(object)
Devuelve True si el objeto argumento es llamable, de lo contrario devuelve False. Si devuelve verdadero, la llamada puede fallar, pero si devuelve falso, el objeto que llama definitivamente fallará. Tenga en cuenta que la clase es invocable (llamar a la clase devolverá una nueva instancia). Si la clase de la instancia tiene un método call (), se puede llamar .
Devuelve True si el objeto argumento es llamable, de lo contrario devuelve False. Si devuelve verdadero, la llamada puede fallar, pero si devuelve falso, el objeto que llama definitivamente fallará. Tenga en cuenta que la clase es invocable (llamar a la clase devolverá una nueva instancia). Si la clase de la instancia tiene un método call (), se puede llamar .
delattr(object, name)
Función relacionada con setattr (). El argumento es un objeto y una cadena. La cadena debe ser un atributo del objeto. Esta función eliminará el atributo especificado si el objeto lo permite. Por ejemplo, delattr (x, 'foobar') es equivalente a del x.foobar.
Función relacionada con setattr (). El argumento es un objeto y una cadena. La cadena debe ser un atributo del objeto. Esta función eliminará el atributo especificado si el objeto lo permite. Por ejemplo, delattr (x, 'foobar') es equivalente a del x.foobar.
dir([object])
Si no hay ningún argumento, devuelve una lista de nombres en el ámbito local actual. Si hay un argumento, intentará devolver una lista de propiedades válidas para ese objeto.
Si no hay ningún argumento, devuelve una lista de nombres en el ámbito local actual. Si hay un argumento, intentará devolver una lista de propiedades válidas para ese objeto.
Si el objeto tiene un método llamado dir (), se llamará al método y se debe devolver una lista de propiedades. Esto permite que los objetos que implementan las funcionespersonalizadas getattr () o getattribute () personalicen dir () para informar sus propiedades.
Si el objeto no proporciona dir (), esta función intentará recopilar información del atributo dict y el tipo de objeto definidos del objeto. La lista de resultados no siempre está completa, y si el objeto tiene un getattr () personalizado, el resultado puede ser inexacto.
El mecanismo de dir () predeterminado se comporta de manera diferente para diferentes tipos de objetos, y trata de devolver la información más relevante, no la más completa:
- Si el objeto es un objeto de módulo, la lista contiene el nombre de propiedad del módulo.
- Si el objeto es un objeto de tipo o clase, la lista contiene sus nombres de propiedades y busca recursivamente las propiedades de todas las clases base.
- De lo contrario, la lista contiene el nombre de propiedad del objeto, su nombre de propiedad de clase, y recursivamente encuentra las propiedades de todas las clases base de su clase.
La lista devuelta está ordenada por alfabeto.
getattr(object, name[, default])
Devuelve el valor del atributo de nombre de objeto. El nombre debe ser una cadena. Si la cadena es una de las propiedades de un objeto, se devuelve el valor de la propiedad. Por ejemplo, getattr (x, 'foobar') es equivalente a x.foobar. Si la propiedad especificada no existe y se proporciona el valor predeterminado, se devuelve, de lo contrario se desencadena AttributeError.
Devuelve el valor del atributo de nombre de objeto. El nombre debe ser una cadena. Si la cadena es una de las propiedades de un objeto, se devuelve el valor de la propiedad. Por ejemplo, getattr (x, 'foobar') es equivalente a x.foobar. Si la propiedad especificada no existe y se proporciona el valor predeterminado, se devuelve, de lo contrario se desencadena AttributeError.
setattr(object, name, value)
Es la función correspondiente de
Es la función correspondiente de
getattr()
. Los argumentos son objetos, cadenas y valores arbitrarios. La cadena puede ser el nombre de un atributo existente o nuevo. Esta función asigna valor a la propiedad. Por ejemplo, setattr(x, 'foobar', 123)
equivalente a x.foobar = 123
.
hasattr(object, name)
El argumento es un objeto y una cadena. Devuelve True si la cadena es el nombre de una de las propiedades del objeto; de lo contrario, devuelve False. (Esta función se implementa llamando a getattr (objeto, nombre) para ver si hay una excepción AttributeError.)
El argumento es un objeto y una cadena. Devuelve True si la cadena es el nombre de una de las propiedades del objeto; de lo contrario, devuelve False. (Esta función se implementa llamando a getattr (objeto, nombre) para ver si hay una excepción AttributeError.)
hash(object)
Devuelve el hash de este objeto (si tiene uno). El valor de hash es un entero. Se utilizan para comparar rápidamente las claves del diccionario cuando el diccionario busca elementos. Las variables numéricas del mismo tamaño tienen el mismo valor de hash (incluso si son de diferentes tipos, como 1 y 1.0).
Devuelve el hash de este objeto (si tiene uno). El valor de hash es un entero. Se utilizan para comparar rápidamente las claves del diccionario cuando el diccionario busca elementos. Las variables numéricas del mismo tamaño tienen el mismo valor de hash (incluso si son de diferentes tipos, como 1 y 1.0).
Nota: si el objeto implementa su propio método hash (), tenga en cuenta que hash () trunca el valor de retorno según la longitud de palabra de la máquina. Véase también hash ().
id(object)
Devuelve el "valor de identidad" del objeto. Este valor es un número entero que se garantiza que es único y constante durante toda la vida útil de este objeto. Los objetos cuyas vidas no se superponen pueden tener el mismo valor id ().
Devuelve el "valor de identidad" del objeto. Este valor es un número entero que se garantiza que es único y constante durante toda la vida útil de este objeto. Los objetos cuyas vidas no se superponen pueden tener el mismo valor id ().
isinstance(object, classinfo)
Devuelve verdadero si el argumento de objeto es una instancia de un argumento de información de clase o una instancia de una subclase (directa, indirecta o virtual). Si el objeto no es un objeto del tipo dado, la función siempre devuelve falso. Si classinfo es una tupla de un tipo de objeto (o múltiples tuplas recursivas), verdadero si el objeto es una instancia de cualquiera de ellos. Se dispara una excepción TypeError si classinfo no es un tipo ni una tupla recursiva de tipo tuple o type.
Devuelve verdadero si el argumento de objeto es una instancia de un argumento de información de clase o una instancia de una subclase (directa, indirecta o virtual). Si el objeto no es un objeto del tipo dado, la función siempre devuelve falso. Si classinfo es una tupla de un tipo de objeto (o múltiples tuplas recursivas), verdadero si el objeto es una instancia de cualquiera de ellos. Se dispara una excepción TypeError si classinfo no es un tipo ni una tupla recursiva de tipo tuple o type.
len(s)
Devuelve la longitud del objeto (el número de elementos). Un argumento puede ser una secuencia (como cadena, bytes, tupla, lista o rango) o una colección (como un diccionario, conjunto o conjunto congelado).
Devuelve la longitud del objeto (el número de elementos). Un argumento puede ser una secuencia (como cadena, bytes, tupla, lista o rango) o una colección (como un diccionario, conjunto o conjunto congelado).
vars([object])
Devuelve el atributo dict de un módulo, clase, instancia o cualquier otro objeto con un atributo dict .
Los objetos como módulos e instancias tienen atributos de dictado actualizables, sin embargo, otros objetos pueden tener restricciones de escritura en su atributo de dictado (por ejemplo, las clases usan tipos.
Sin argumentos, vars () es como locals (). Tenga en cuenta que el diccionario local solo es útil para leer porque las actualizaciones del diccionario local se ignoran.
Resumen
Las funciones integradas de Python proporcionan una funcionalidad común, y el uso de estas funciones integradas es muy útil para la programación.
留言
張貼留言