• 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
  • Herramientas
    • Método D’Hondt – Atribución de escaños
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

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

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.

Consistencia en nombres y orden en TypeScript: la base de un código mantenible aplicado a tslane
En Analytics Lane
Consistencia en nombres y orden en TypeScript: la base de un código mantenible aplicado a tslane

Publicidad


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

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.

Publicidad


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).

Publicidad


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.

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)

Publicidad


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

  • Consistencia en nombres y orden en TypeScript: la base de un código mantenible aplicado a tslane
  • Análisis de Redes con Python
  • Nuevo calendario de publicaciones: más calidad, mejor ritmo
  • Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Publicaciones de verano 2025: los trucos más populares, ahora en vídeo
  • Cómo enviar correos desde PowerShell utilizando Brevo: Guía paso a paso para automatizar tus notificaciones
  • Nueva herramienta disponible: Calculadora del Método D’Hondt para la atribución de escaños
  • Cómo enviar correos desde Python utilizando Brevo: Automatiza tus notificaciones con scripts eficientes

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 video! Gráficos de barras en Matplotlib sin complicarte

julio 17, 2025 Por Daniel Rodríguez

¡Nuevo video! Iterar filas en Pandas sin romperte la cabeza

julio 15, 2025 Por Daniel Rodríguez

¡Nuevo video! Encuentra la posición en listas como un PRO

julio 10, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Obtención de valores únicos de una columna con Pandas publicado el mayo 8, 2019 | en Python
  • Cómo encontrar la posición de elementos en una lista de Python publicado el abril 12, 2021 | en Python
  • Combinar varios archivos Jupyter Notebook en uno publicado el noviembre 21, 2022 | en Python
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • pandas Pandas: Cómo iterar sobre las filas de un DataFrame en Pandas publicado el septiembre 13, 2021 | en Python

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.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes
  • Javier en Tutorial de Mypy para Principiantes
  • javier en Problemas con listas mutables en Python: Cómo evitar efectos inesperados
  • soldado en Numpy básico: encontrar la posición de un elemento en un Array de Numpy

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-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto