• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Simulador FIRE (Financial Independence, Retire Early)
    • Herramientas
      • Formateador / Minificador de JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Funciones en Julia (5ª parte – ¡Hola Julia!)

julio 28, 2020 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 6 minutos

A la hora de estructura un programa las funciones son clave, ya que permiten reutilizar pequeños trozos de código capaces de realizar tareas concretas. Hoy vamos a ver cómo son definir las funciones en Julia y algunas de sus características más interesantes.

Tabla de contenidos

  • 1 Definición de una función básica en Julia
    • 1.1 Simplificación de las funciones
  • 2 Devolver nada
  • 3 Múltiples parámetros de entrada
  • 4 Variables opcionales
  • 5 Retornar múltiples valores
  • 6 Parámetros dinámicos
  • 7 Indicar el tipo de dato
  • 8 Paso por valor o referencia
  • 9 Macros
  • 10 Funciones en Julia un gran potencial
  • 11 Publicaciones de la serie ¡Hola Julia!

Definición de una función básica en Julia

Las funciones en Julia se crean con la palabra clave function seguida del nombre de la función y, entre paréntesis, los parámetros de entrada de la función. En las siguientes líneas se pueden escribir tantas instrucciones como sean necesarias para implementar la tarea de esta. Finalizando la función con la palabra clave return, la cual puede devolver o no variables. Una función básica puede ser la elevar al cuadrado un valor que se puede implementar como:

function potencia(x)
    potencia = x^2
    return potencia
end

La función se ha llamado potencia y así es como se puede llamar en el resto del código. Tiene un único parámetro de entrada que es x, parámetro que se puede usar dentro de la función. En la primera línea de código se ha asignado el resultado de x al cuadrado a una nueva variable potencia y finalmente se ha devuelto el valor. Así al escribir en Julia potencia(3) se obtendrá como resultado 9, pero si se escribe potencia(5) el resultado será 25.

Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
En Analytics Lane
Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane

Simplificación de las funciones

Las funciones se pueden simplificar. En este caso no es necesario guardar el resultado en una variable intermedia ya que el valor se puede calcular en la línea de final return. Así es posible escribir esta función de una forma más compacta.

function potencia(x)
    return x^2
end

Aunque aún se puede reducir más, si no se incluye la palabra reservada return la función de Julia devolverá como valor el resultado de la última línea. Por lo que en este caso se puede omitir el return.

function potencia(x)
    x^2
end

Desde mi punto de vista en este caso se puede perder algo de legibilidad ya que puede causar confusión que se devuelve, por lo que prefiero usar return.

Finalmente, las funciones que se escribe en una línea aún se pueden resumir todavía más. Omitiendo la palabra clave function y asignado la operación a esta. Por lo que se puede dejar la función solamente como

potencia(x) = x^2

Publicidad


Devolver nada

En una función de Julia también es posible no devolver nada (el dato nothing), para lo que se puede usar return sin ningún valor. Algo que también sucede si no se ejecuta ninguna línea de código. En la siguiente función si el valor que se pasa es positivo o cero, el resultado es el número, en caso contrario la función devolverá nothing.

function positivo(x)
    if x ≥ 0
        return x
    end
end

Esto es así porque si no se cumple que el parámetro de entrada sea positivo o cero nunca se ejecuta ninguna línea en el código anterior.

Múltiples parámetros de entrada

Las funciones de Julia pueden admitir más de un parámetro que se han de separar por comas. Así para calcular la distancia euclídea entre dos puntos se puede hacer escribir la función

function distancia(x₁, y₁, x₂, y₂)
    δx² = (x₁ - x₂)^2
    δy² = (y₁ - y₂)^2
    δ² = δx² + δy²
    δ = sqrt(δ²)
    return δ
end

Lo primero que se puede apreciar es la ventaja de usar Unicode, ya que los nombres de variables con subíndice y superíndice son perfectamente validas. Por ejemplo, el subíndice de 1 se puede obtener escribiendo \_1 y posteriormente tabulador.

La primera línea de esta función calcula la distancia al cuadrado en eje x, la segunda la distancia al cuadrado en el eje y, la tercera la distancia al cuadrado, la quinta tiene la distancia y finalmente se retorna el valor en la quinta.

Variables opcionales

Una opción interesante son los parámetros opcionales que puede no indicarse en la función. Tomando en estos casos un valor por defecto. Valor que se asigna en la definición de las funciones con operador =. Por ejemplo, la función anterior se puede redefinir para calcular la distancia al origen de ordenadas cuando solamente se indique un par de valores.

function distancia(x₁, y₁, x₂=0, y₂=0)
    δx² = (x₁ - x₂)^2
    δy² = (y₁ - y₂)^2
    δ² = δx² + δy²
    δ = sqrt(δ²)
    return δ
end

Siendo x₂ y y₂ por defecto 0 cuando no se indique nada.

Publicidad


Retornar múltiples valores

Las funciones de Julia pueden devolver más de un valor, para lo que solamente hay que separar estos con comas después de la palabra return. Así para devolver también la distancia en el eje x e y en la función anterior, solamente hay que hacer.

function distancia(x₁, y₁, x₂=0, y₂=0)
    δx² = (x₁ - x₂)^2
    δy² = (y₁ - y₂)^2
    δ² = δx² + δy²
    δ = sqrt(δ²)
    return δ, δx², δy²
end

Parámetros dinámicos

En algunas situaciones puede ser de interés tener parámetros dinámicos, es decir, que se puede indicar tantos parámetros como se desee. Por ejemplo, una función que sume cualquier cantidad de números. Esto se puede hacer con parámetros opcionales que se indica con el nombre del parámetro seguido de .... Los parámetros adicionales aparecerán como una dupla dentro de este parámetro

function valores(x...)
    @show(x)
end

valores(1,2,3)

Este es un código que devuelve una tupla con los tres valores, esto es x = (1,2,3). Aunque es posible indicar parámetros antes, lo que hará que el primer parámetro se pase normalmente y el resto en una tupla.

function valores(x, y...)
    @show(x)
    @show(y)
end

valores(1,2,3)

Lo que asigna al primer parámetro x = 1 y al segundo y = (2,3).

Indicar el tipo de dato

Julia admite que se indique el tipo de dato para una función. Lo que permite sobrecargar las funciones creando una para cada tipo de dato diferente. Así podemos crear una función factorial que solamente funcione con enteros.

function fact(n::Int64)
    if n == 0
        return 1
    else
        return n * fact(n-1)
    end
end

En la función se ha indicado que el parámetro de entrada sea solamente de tipo entero. Para lo que se ha usado :: seguido del tipo de dato. En el caso de que se pase otro tipo la función no será llamada, generando un error. Por ejemplo, si se ejecuta llama a la función con fact(10.5) obtendremos el siguiente error MethodError: no method matching fact(::Float64). Aunque se puede crear una función específicamente para tipos de datos reales.

function fact(n::Float64)
    return "Has pasado un float"
end

Ahora cuando los parámetros sean enteros se ejecutará la primera función y cuando sean reales la segundo. Apareciendo un error en el resto de los casos.

Publicidad


Paso por valor o referencia

Esta siempre es una duda a la hora de trabajar con funciones, lo parámetros se pasan por valor o referencia. Aquí el truco está en saber si los datos son mutables o no. En caso de que no sean mutables los parámetros se pasan por valor, por lo tanto, se puede modificar sin peligro en la función. Por otro lado, cuando son mutables, como un vector, estos se pasan por referencia, por los que si se modifican dentro de la función también se modificarán fuera. Así en el siguiente código la variable x mantiene el valor 2.

function valores(x)
    x = 10
end

x = 2
valores(x)

Pero en este caso no, el vector [1, 2] se transformará en [3, 2].

function valores(x)
    x[1] = 3
end

x = [1, 2]
valores(x)

Macros

Cuando es necesario evaluar código dentro de una función se pueden usar los macros. La sintaxis es similar, solo que en lugar de la palabra function se tiene que usar macro. Además de estos, para llamar a un macro se tiene que usar @ antes del nombre. Por ejemplo, un simple macro con el mensaje “¡Hola Julia!”.

macro holaJulia()
    return :( println("¡Hola, Julia!") )
end

@holaJulia

Los macros también admiten parámetros. Para incluirlos en la evaluación es necesario usar $ antes del nombre. Por ejemplo, si queremos cambiar el norme de Julia.

macro holaJulia(nombre)
    return :( println("¡Hola, $($nombre)!") )
end

@holaJulia("Daniel")

Funciones en Julia un gran potencial

Las funciones en Julia ofrecen muchas posibilidades, de las cuales solamente hemos visto una parte, entre las que se encuentra sobrecarga de funciones y tipificado de datos. Lo que permite expresar implementar cualquier los algoritmos que deseemos.

Publicidad


Publicaciones de la serie ¡Hola Julia!

  1. ¡Hola Julia!
  2. Primeros pasos con Julia
  3. Cadenas de texto en Julia
  4. Bucles en Julia
  5. Funciones en Julia
  6. Vectores, tuplas y diccionarios en Julia
  7. Estructuras en Julia
  8. Utilizar los tipos en Julia
  9. Tipos de datos en Julia
  10. Tipos y funciones paramétricos en Julia
  11. Introducción a los DataFrames en Julia
  12. Obtener información básica de los DataFrames de Julia
  13. El tipo de dato Missing de Julia
  14. Columnas en DataFrames de Julia
  15. Filas en DataFrames de Julia
  16. Combinar DataFrames en Julia
  17. Guardar y leer archivos CSV en Julia
  18. Guardar y leer archivos Excel en Julia
  19. Introducción a Genie
  20. Libros sobre Julia

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Nuevo simulador FIRE en el laboratorio de aplicaciones de Analytics Lane
  • Nueva calculadora de préstamos e hipotecas en el laboratorio de aplicaciones de Analytics Lane
  • Hardening avanzado de NGINX: CSP, OCSP Stapling y defensa en profundidad
  • Nuevo generador y verificador de hashes en el laboratorio de aplicaciones de Analytics Lane
  • Nueva simulación de la estrategia Martingala en ruleta en el laboratorio de aplicaciones de Analytics Lane
  • Exactitud, precisión, recall… y los errores que cometemos al interpretarlas en proyectos reales
  • Nuevo simulador del problema de Monty Hall en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo simulador interactivo de K-Means en el laboratorio de aplicaciones de Analytics Lane
  • Por qué los chatbots de inteligencia artificial parecen estar siempre de acuerdo contigo – Conversar con una inteligencia artificial – Parte I

Publicado en: Julia

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Nuevo Inspector de JWT en el laboratorio de aplicaciones de Analytics Lane

abril 20, 2026 Por Daniel Rodríguez

Nuevo simulador de regresión logística en el laboratorio de aplicaciones de Analytics Lane

abril 17, 2026 Por Daniel Rodríguez

Nuevo simulador de regresión lineal con ruido en el laboratorio de aplicaciones de Analytics Lane

abril 16, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Nuevo Inspector de JWT en el laboratorio de aplicaciones de Analytics Lane publicado el abril 20, 2026 | en Noticias
  • Creación de gráficos de barras y gráficos de columnas con Seaborn publicado el julio 18, 2023 | en Python
  • El método de Muller e implementación en Python publicado el marzo 24, 2023 | en Ciencia de datos
  • El método de la bisección e implementación en Python publicado el marzo 11, 2022 | en Ciencia de datos
  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto