Después de python3.8, / y * están permitidos en los parámetros de función. / Se usa para indicar que ciertos parámetros de función deben usar parámetros posicionales en lugar de parámetros de palabras clave. El primer significado de * aparece en los parámetros de función se puede expresar como parámetros variables generalmente se escriben como * args; para los * parámetros que aparecen solos en los parámetros, significa que los parámetros después de * deben estar en forma de parámetros de palabra clave. A continuación, explicaremos el uso en detalle:
1 / Uso de parámetros
Si desea que la persona que llama a la función use solo parámetros posicionales en una determinada posición de parámetro y no use parámetros de palabras clave para pasar parámetros, entonces solo necesita poner / después de la posición deseada.
def f1(a, b, /):
return a + b
Para la función anterior, al llamar a f1, los parámetros ayb solo pueden ser valores específicos y no pueden ser pasados por palabras clave, es decir, f1 (2, 3) se ejecuta correctamente y f1 (a = 2, 3) y f1 (2, b = 3) Se ejecutará un error.
2 * Uso de parámetros
El primer uso de * es más común, por lo que no entraré en detalles aquí, y principalmente explicaré el segundo uso de * en detalle aquí. Si desea forzar a la persona que llama a usar ciertos parámetros, y debe pasarlos en forma de parámetros de palabras clave, solo necesita colocar un * en la posición antes de la posición deseada.
def f1(a, *, b, c):
return a + b + c
Para la función anterior, el parámetro a puede ser cualquier valor al llamar, pero los parámetros byc deben pasarse como parámetros de palabra clave, como f1 (1, b = 4, c = 5); de lo contrario, se informará un error.
def f2(a, *, b, c=5):
return a + b + c
Si se llama a la función en este caso, el parámetro a puede ser cualquier valor, pero el parámetro b debe pasarse como un parámetro de palabra clave, como f2 (2, b = 3), pero si desea pasar el parámetro c , luego el parámetro c. Los requisitos de y los parámetros b están en forma de parámetros de palabra clave, como f2 (2, b = 3, c = 4).
3 / y * ambos aparecen en los parámetros de función
Por ejemplo, definimos una función f
def f(a, b, /, c, *, d, e):
print(a, b, c, d, e)
Cuando llamamos a la función f, los parámetros ayb pueden ser los valores admitidos por cualquier tipo de python, es decir, los parámetros no se pueden pasar en forma de palabras clave; c pueden ser los valores admitidos por cualquier tipo de python, y d, e solo se pueden parametrizar mediante palabras clave Pasar la referencia. Los siguientes métodos de llamada arrojarán excepciones
f(a=1, 2, c=3, d=4, e=5) # a不能以关键字参数传参
f(1, 2, 3, 4, e=5) # d只能以关键字参数传参
4 resumen
Si desea que la persona que llama use la función para no usar parámetros de palabras clave para pasar parámetros, entonces solo necesita poner estos parámetros delante de /; si desea que la persona que llama use la función, se deben usar ciertos parámetros, y deben be palabras clave Los parámetros se pasan, entonces solo necesita poner estos parámetros después de *.
Autor: Yang Hangfeng
Enlace: https: //www.zhihu.com/question/287097169/answer/453193254
Fuente: saber casi con
derechos de autor del autor. Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.