Está en la página 1de 1
e ° Funciones (1) Fancones (1) eos En esta leccon se tala la creacion de funciones en Python y el uso de vaables en las funclones, Otos conceptos relatvos alas unciones se Conticer Pron _Definir funciones en Python virco Las funcones se pueden crear en cualquier punto de un programa, escrbiendo su detinion, La primera linea de la defricion de una funcén coniene + Inpalabra reserva + eh nombre. a tuncion (la gula de esto &e Pyton recom esenbrtodos ls carateres en minuse as separando ls palabras por gulones + paresis (que pueden incu los argumentos de ta uncin, como se expea ma adelante) us insuccones que forman la funeién se esriben con sangta con respecte aa primera linea. Por comadicod. se puede indica l final de a func con la palabra reserva stu (mas adelante e explica el uso de esta palabra reservada), Para poder utilzar una funein en un programa se ene que haber dene ants. Pr ello, normalmente las defnicones dels funclones se suelen serra prncpi dels programas El sjempla siguiente muestra un programa que contin una funny el resultado dea eecuciin de eee programa, Ejemplo de funeién are eer cree ge eee preeeaettg) Puede: ia elacucion paso a paso de este programa uizando lo ecnos de avance yrtroceso stuados abo ala derecha, © E jemple squiente muestra un programs incerecto que intent ulizar una funcién antes de haberla denice Ejemplo de funcién incorrecta pera = a rere sr errs) Traceback (nost recent call last): pate gece Pree cna ne Recents 0) erate ceeen et] Pele ver la elecuion paso a paso de este programs utlizande los iconos de avancey rere Variables en funciones Confictos de nombres de variables Come se ha comentado antes, una de las principale ventaas de la eubrutinas es que permiten reutzar ol ebdigo. Pro capa’ y pagar subrutinas de un programa a otro puede prosuir lo que se lima un eonfllte de nombres de variables. En efacio, sla subruina que pegamos en wn programa utlza alguna variable aula para algin calcu Intermed y resita que el programa ya uzaba una variable con el mismo nomére que sa variable aula. los cambios en fa variable que se hagan en la subeutina pecan aectay al esto del programa de forma imprevsa, Para resolver el problema de los confctos de nombres, ls lenguajes de propramacion lmitan lo que se lama el alcance o ol ambit de las variables. E= dec, que ls lengusjes de programacon pemmien que una vatiableexista unieamente en el inlror de una subruina y no aecte otras varabies de mismo nombre stuadas fuera de esa subrutna. Como fs subruinas pueden contener a u vez subrutas, se suele hablar de niveles: of nvel mas to sera el programa prepa, el siguiente nvel sean las eubrutnasIncludas en el programa punepaly cada vez que hay tna subrtina incuda derzo de ota estariamos Bando un nivel. El problema es mas complcado de lo que parece a primera vsta, porque a menudo también nos interesara que una submutna pueda meditcar vatlables que esten detnigas en tios punts de programa. AS! que los lenguajes de programacon tienen que eslablecer mecanismes para asia las variables y evar los conficios de nombres. pero al mismo tempo deben permit el acceso alas variables en los casos que asl lo quiera el programacer ‘Aunque cada lengua ene sus partcuaridades, el mecanismo mas habtual se basa en los siguientes principio: + cada variable pertenece un Ambo determinado: al programa principal © una subrutna, + las variables son completamente inaccesbias en los ambos superiores al ambit al que partanecen + tas variables pueden ser accesibles oro en dimbits infriores al mbito al que petenecen (el lenguaje puede permit al programadr alegire no 8a accesibildad) + en cada subvutna la variables que se ulizan pueden ser entonces: variables locales: as que pertecen al ambito de a subeutna (y que pueden ser accesibles a niveesinferires) © varabes libres las que pertenecen a émbos superires pero son accesites ena subrtina Confictos de nombres de variables en Python Pynon sigue estos rncpios generals, pero con algunas particlarcades: + Enos lenguajes tpticados, como se debe declarar las variables que se utlzan, la decaracén se aprovecha para indica sila variable petonece 4 la subrtina 9 procede de un dbo superior. Pero como Python no e3 un lengua tpticado, el ambi de pertenencia de la variable debe deduce del programa siguendo unas regias que se detalan mas adeante (aunque Python también permite decarar exlictamente el ambto fen los casos en que se quera un dbo distino al determinada por las reqlas). Python dstingue tes tips de variables: Is variables locals y dos tpos de valaes ites (global yno locales) © varabes locales las que pertenecen al amo dela subcutna ( que pueden ser accesible a nivel infeeres) variables globales: las que pertonecen al ambito del programa principal variables no locales: las que partanecen aun dmb superior a de la subrutina, pro que no son global, ‘ie programa conten solamente funciones que no contienen a su vez funclones, todas las varabes litres son variables globales. Pero sie progfama contiene una funcn que a su ve2 contlene una Tuncion, las varables Hotes de esas “subfundones™ pueden ser globaes (8 perlenecen al programa principal) ono locales (si pertenecen ala func), + Para identiicarexplictamente ls variables global y no locales se uiizan las palabras reservadas otal y Las variables locales no necestan ideniicacon. La palabra reservada 5@ Inodyo en Python 3 (PEP 3104 Acontnuacien, ce detalan as reqlas y stuacones posible, acomparadas de eempios Variables locales + Sino 60 han daclarado como global © no locales, las variables a las que se signa valor en una funcion se consderan variables locales, 25 decr, 680 existen en la propa func, incluso cuando en el programa exsia una varable con el mismo nombre, como muesta e siguerte Elemplo de variable local 1 subrutina() Puede vera elecuicn paso a paso de este programa uiizando ls lconos de avance y retraces situades abajo ala derecha, © + Las variables locales seo ensten on propia tuncion y no son acgeebles desde niveles superoves, como puede verse en siguiente ejemol Elomplo de variable local 2 Ce ere) ara) Se or eee URL am print(a) crete print(a) unde vera ejecuicn paso a paso de este programa uiizando ls iconos de vance y etoceso eas abajo ala derecha, © + Sien el interior de una funcion se asigna Valor a una variable que nose ha deciarado como global 6 no lea es variable es local a todos los efectos, Por elt elsquinte programa da ero Ejemplo de variable loeal 3 ara Drees antes Tine meter a peers) renin Crs ee eae eo) fein prant(a) Puede vera jecucicn paso a pasa de este programa uiizanco ls conos de vance y reoceso situados abajo ala derecha, © Variables libres globales 0 no locales Sia una variable no se le asigna valor on una funcion, Python la considera libre busca su valor on os iveles superiores de esa funcio, empezando poral inmediatamentasupercry continuando hasta el programa principal. lala varable se le asigna valor en alg nivel interme a vatlabe 2 considera no loealy 3 3e easigna en e programa principal variable se considera glebal, como muesian los sigulntes ejemplos: + Enel ejemplo siguiente, variable ibe a” de afuncién subrutinad) se consicera global porque obliene su valor del programa principal Puede vera ejacuicn paso a paso de este programa ulizando ls \conos de vance y eoceso stuades abajo ala derecha, + En el ejemplo siguiente, Ia Variable lire "a" de Ia funcin sub_subutnal) $2 considera no local porque abtiene su valor de una funcin intermedia Eemplo de variable libre global arent Puede ver a ejecucién paso a paso de ete programa uiizando le conos de avance y reoceso stad abajo ala derecha + Sia una variable que Python considera libre (porque no se le ssigna valor en la fncén)tampeco se le asgna valor en niveles superioes, Python dara un mensaje de ero, como mugsta el programa siguonte: lemple de variable libre no loc print(a) ea) ar) Elomplo de variable litre no definida 0. errr res te aie Enea tes pete 7 File “ejemplo.py", line 2, in subrutina svbratina() pay nea) eer terra ste] Puede ver la ejecucin paso a paso de este programa ulizando fs lcones de vance y reroceso stuados abajo ala derecha, © Variables declaradas global 0 1 queremos asigar valor a una variable en una subeutina, pero no queremas que Python a consider local, debemos decararia en f unc com ° ‘come muesran los ejemplos siuiontes: Enel eomplo siquiente la varable se decara como cota), para que su valor sea al de programa principal jecucicn paso a pasa de este programa ulizano ls iconos de avance reoceso stuados abajo ala derecha, Elemplo de variable dectarada preety Puede ver + Enel ejemplo siquente la variable sa declara como, ata que su valor sea e de a funn interme Puede vera elecuicn paso a paso de este programa uiizando fos lconos de vance y retraces situades abajo ala derecha, Ejemplo de variable declarada araeretrte) pert) + Sian variable deciarada global o| fen una funcion nose Ie signa valor en el nivel superior cortesponaiente, Python dard un ear de ‘shlaks, como musstia el programa siquente Ejemplo de variable declarada no define print(a) : ean) prant(a) art) Puede ver a ejecucién paso a paso de ete programa uiizando le conos de avance y eoceso stuades abajo ala derecha, ‘itma moaiicacn de esta pagina 20 de marzo de 2018 Esta pagina forma parte dl curso Introduccién ala programacién con Python por Bartolome Sintes Marco que se distrbuye bajo una Lcencia Ciealve Commons Reconocmentc-Comnafilgual 4.0 inlemacional (CC BY-SA4.0)

También podría gustarte