<a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Funció &lt;!-- wp:heading --&gt;Definició bàsica de &lt;strong&gt;Funció&lt;/strong&gt;&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;33.33%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:6688,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;,&quot;style&quot;:{&quot;color&quot;:{}}} --&gt;&lt;figure class=&quot;wp-block-image size-medium&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;66.66%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt; Una &lt;strong&gt;funció&lt;/strong&gt; és una &lt;strong&gt;relació matemàtica&lt;/strong&gt; entre dos conjunts de nombres: a &lt;strong&gt;cada element del primer conjunt&lt;/strong&gt; (anomenat &lt;em&gt;domini&lt;/em&gt;) li correspon &lt;strong&gt;un únic element del segon conjunt&lt;/strong&gt; (anomenat &lt;em&gt;codomini&lt;/em&gt; o conjunt d’arribada).&lt;br/&gt; &lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt; &lt;em&gt;Dit d’una altra manera:&lt;/em&gt;&lt;br/&gt; &lt;!-- wp:quote --&gt;&lt;blockquote class=&quot;wp-block-quote&quot;&gt; Una funció és com una &lt;strong&gt;màquina&lt;/strong&gt;: rep un valor d’entrada, fa una operació i retorna un únic resultat.&lt;br/&gt; &lt;/blockquote&gt;&lt;!-- /wp:quote --&gt; &lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:6640,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;&lt;figure class=&quot;wp-block-image size-medium&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading --&gt;Notació&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; [pmath]f: X right Y[/pmath] &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; on &lt;strong&gt;f&lt;/strong&gt; és la funció, &lt;strong&gt;X&lt;/strong&gt; és el &lt;em&gt;domini&lt;/em&gt; i &lt;strong&gt;Y&lt;/strong&gt; és el &lt;em&gt;codomini&lt;/em&gt;.&lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; Si a la funció li donem un valor &lt;em&gt;x&lt;/em&gt;, ens retorna un valor:&lt;br/&gt; &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; [pmath]y = f(x)[/pmath] on &lt;strong&gt;y&lt;/strong&gt; és el resultat corresponent a &lt;strong&gt;x&lt;/strong&gt;.&lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading --&gt;Exemple senzill&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt; [pmath]f(x) = 2x + 3[/pmath] &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt; Si entrem [pmath]x = 1[/pmath], surt [pmath]f(1) = 5[/pmath].&lt;br/&gt; Si entrem [pmath]x = 4[/pmath], surt [pmath]f(4) = 11[/pmath].&lt;br/&gt; &lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:separator --&gt;&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot;/&gt;&lt;!-- /wp:separator --&gt;&lt;!-- wp:heading --&gt;Exemple gràfic&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; En representar una funció en el pla, cada valor de &lt;em&gt;x&lt;/em&gt; té un únic punt de sortida &lt;em&gt;y&lt;/em&gt;.&lt;br/&gt; Per comprovar-ho s’utilitza el &lt;strong&gt;test de la recta vertical&lt;/strong&gt;: si una recta vertical talla la gràfica en més d’un punt, &lt;strong&gt;no és una funció&lt;/strong&gt;.&lt;br/&gt; &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; &lt;!-- wp:image {&quot;id&quot;:6649,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;&lt;figure class=&quot;wp-block-image size-large&quot;&gt; &lt;/figure&gt;&lt;!-- /wp:image --&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:media-text {&quot;mediaId&quot;:6670,&quot;mediaLink&quot;:&quot;https://degalalab.com/glossary/funcio/icon-function-2/&quot;,&quot;mediaType&quot;:&quot;image&quot;} --&gt;&lt;div class=&quot;wp-block-media-text is-stacked-on-mobile&quot;&gt;&lt;figure class=&quot;wp-block-media-text__media&quot;&gt;&lt;/figure&gt;&lt;div class=&quot;wp-block-media-text__content&quot;&gt;&lt;!-- wp:paragraph {&quot;placeholder&quot;:&quot;Contingut...&quot;} --&gt;&lt;strong&gt;En resum&lt;/strong&gt;:&lt;br/&gt; &lt;blockquote class=&quot;wp-block-quote&quot;&gt; Una funció és una relació que associa &lt;strong&gt;cada valor d’entrada&lt;/strong&gt; amb &lt;strong&gt;un únic valor de sortida&lt;/strong&gt;.&lt;br/&gt; &lt;/blockquote&gt;&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:media-text --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt; " href="https://degalalab.com/glossary/funcio/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>Funció que associa a cada resultat d’un experiment aleatori un valor numèric. Pot ser discreta o contínua i és la base de conceptes com l’esperança i la variància.
<img fetchpriority="high" decoding="async" width="300" height="300" src="https://degalalab.com/wp-content/uploads/2025/11/random-variable-1-300x300.jpg" alt="Icona minimalista en estil DeGalaLab que representa una variable aleatòria amb un dau i la lletra X." class="wp-image-7347" style="width:231px;height:auto" srcset="https://degalalab.com/wp-content/uploads/2025/11/random-variable-1-300x300.jpg 300w, https://degalalab.com/wp-content/uploads/2025/11/random-variable-1-150x150.jpg 150w, https://degalalab.com/wp-content/uploads/2025/11/random-variable-1-768x768.jpg 768w, https://degalalab.com/wp-content/uploads/2025/11/random-variable-1-500x500.jpg 500w, https://degalalab.com/wp-content/uploads/2025/11/random-variable-1-800x800.jpg 800w, https://degalalab.com/wp-content/uploads/2025/11/random-variable-1.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /> Una variable aleatòria és una funció que associa a cada resultat possible d’un experiment aleatori un valor numèric. Serveix per quantificar fenòmens aleatoris i permet aplicar-hi eines matemàtiques i estadístiques. Per exemple, si llancem tres monedes i definim la funció X com “el nombre de cares obtingudes”, cada resultat de l’espai mostral s’associa a un valor numèric: X(C,C,+)=2 Aquesta funció X serà el que anomenarem una variable aleatòria. Així, la probabilitat d’obtenir exactament dues cares és P(X=2)= Segons el tipus de valors que pot prendre, es classifica en: Variable aleatòria discreta: pren un conjunt finit o numerable de valors (p. ex. el nombre de cares en tres llançaments d’una moneda). Variable aleatòria contínua: pot prendre qualsevol valor dins d’un interval real (p. ex. la temperatura o l’altura d’una persona). Nota: Les variables aleatòries són la base per definir conceptes com l’esperança matemàtica, la variància o les distribucions de probabilitat (binomial, normal, exponencial, etc.).
Les List Comprehensions són una manera compacta i eficient de crear llistes en Python utilitzant una sola línia de codi amb bucles i condicions integrats.
Una List Comprehension és una construcció sintàctica pròpia de Python que permet generar noves llistes de manera concisa, expressiva i eficient. Es basa en la combinació d’una expressió, un o més bucles for i, opcionalment, condicions if, dins d’una única línia de codi. Aquesta tècnica substitueix els bucles iteratius tradicionals, millorant la llegibilitat i reduint la complexitat del codi. <img decoding="async" width="150" height="150" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://degalalab.com/wp-content/uploads/2025/10/listComp-150x150.jpg" alt="Icona educativa minimalista de DeGalaLab sobre el concepte List Comprehension en Python, amb text sintàctic “[expressió for element in seqüència if condició]”, fons gris suau i elements fúcsies que representen el procés iteratiu." class="wp-image-7336" srcset="https://degalalab.com/wp-content/uploads/2025/10/listComp-150x150.jpg 150w, https://degalalab.com/wp-content/uploads/2025/10/listComp-300x300.jpg 300w, https://degalalab.com/wp-content/uploads/2025/10/listComp-768x768.jpg 768w, https://degalalab.com/wp-content/uploads/2025/10/listComp-500x500.jpg 500w, https://degalalab.com/wp-content/uploads/2025/10/listComp-800x800.jpg 800w, https://degalalab.com/wp-content/uploads/2025/10/listComp.jpg 1024w" sizes="(max-width: 150px) 100vw, 150px" /> <path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" /> La seva estructura general és la següent: [expressió for element in seqüència if condició] On cada part té una funció específica: expressió → defineix la transformació que s’aplica a cada element de la seqüència d’origen. for element in seqüència → indica la iteració sobre els elements de la col·lecció original. if condició (opcional) → permet filtrar els elements que compleixen una determinada condició lògica. Exemple bàsic # Crear una llista amb els quadrats dels nombres del 0 al 9 quadrats = [x**2 for x in range(10)] print(quadrats) # ➜ [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] També és possible introduir una condició per refinar el resultat: # Generar una llista amb els quadrats dels nombres parells quadrats_parells = [x**2 for x in range(10) if x % 2 == 0] print(quadrats_parells) # ➜ [0, 4, 16, 36, 64] Les comprehensions no es limiten a llistes: Python ofereix variants per a altres estructures de dades com els diccionaris (dict comprehensions) i els conjunts (set comprehensions), que segueixen una sintaxi similar i permeten construir col·leccions de manera declarativa. Des d’una perspectiva de bones pràctiques, les List Comprehensions són recomanables quan la transformació és breu i comprensible, ja que afavoreixen un estil de programació més funcional i orientat a l’expressió. Contribueixen a escriure codi Pythonic, és a dir, codi clar, directe i elegant.
Un <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Paradigma de programació &lt;!-- wp:group {&quot;className&quot;:&quot;glossary-entry&quot;} --&gt;&lt;div class=&quot;wp-block-group glossary-entry&quot;&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:paragraph --&gt;Un &lt;strong&gt;paradigma de programació&lt;/strong&gt; és una &lt;strong&gt;manera d’enfocar i organitzar la programació&lt;/strong&gt;, és a dir, una filosofia o estil que defineix com es dissenyen i estructuren els programes per resoldre problemes. &lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:paragraph --&gt;Cada paradigma estableix un conjunt de principis, regles i tècniques per descriure com s’han d’executar les operacions dins d’un llenguatge de programació.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:7324,&quot;width&quot;:&quot;243px&quot;,&quot;height&quot;:&quot;auto&quot;,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;,&quot;align&quot;:&quot;center&quot;,&quot;className&quot;:&quot;is-style-rounded&quot;} --&gt;&lt;figure class=&quot;wp-block-image aligncenter size-medium is-resized is-style-rounded&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:paragraph --&gt;Per exemple, la &lt;strong&gt;programació imperativa&lt;/strong&gt; descriu &lt;em&gt;com&lt;/em&gt; s’han de fer les coses (pas a pas), mentre que la &lt;strong&gt;programació declarativa&lt;/strong&gt; defineix &lt;em&gt;què&lt;/em&gt; es vol obtenir, i la &lt;strong&gt;programació funcional&lt;/strong&gt; se centra en funcions pures sense canvis d’estat. D’altres paradigmes coneguts són l’&lt;strong&gt;orientat a objectes&lt;/strong&gt; (OOP) i el &lt;strong&gt;lògic&lt;/strong&gt;.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Imperatiu:&lt;/strong&gt; el programa descriu instruccions seqüencials que modifiquen l’estat del sistema.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Declaratiu:&lt;/strong&gt; es defineixen objectius, i el llenguatge decideix com assolir-los (p. ex. SQL).&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Funcional:&lt;/strong&gt; es basa en funcions matemàtiques pures i evita l’estat mutable.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Orientat a objectes:&lt;/strong&gt; modela el món real amb objectes que combinen dades i comportaments.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Lògic:&lt;/strong&gt; utilitza regles i fets per deduir conclusions (p. ex. Prolog).&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt;&lt;!-- wp:paragraph --&gt;Python és un llenguatge &lt;strong&gt;multiparadigma&lt;/strong&gt;: permet utilitzar més d’un estil de programació segons el context o la necessitat del projecte.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:heading {&quot;fontSize&quot;:&quot;medium&quot;} --&gt;Exemples de paradigmes en Python: &lt;!-- /wp:heading --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Imperatiu&lt;/strong&gt;: ús de bucles i variables.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Funcional&lt;/strong&gt;: ús de &lt;code&gt;map()&lt;/code&gt;, &lt;code&gt;filter()&lt;/code&gt;, &lt;code&gt;reduce()&lt;/code&gt; i funcions &lt;code&gt;lambda&lt;/code&gt;.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Orientat a objectes&lt;/strong&gt;: ús de classes i mètodes.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt;&lt;!-- wp:paragraph --&gt;&lt;strong&gt;En resum:&lt;/strong&gt; un paradigma de programació és una forma de pensar el codi — una estructura mental que defineix com s’organitza la lògica, les dades i el comportament dels programes.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;/div&gt;&lt;!-- /wp:group --&gt; " href="https://degalalab.com/glossary/paradigma-de-programacio/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex="0" role="link">paradigma de programació és una manera d’organitzar i raonar sobre el codi. Cada paradigma defineix com s’estructuren i s’executen els programes — des de l’enfocament imperatiu i declaratiu fins al funcional i orientat a objectes. Python és un llenguatge multiparadigma que permet combinar diversos estils segons els objectius del projecte.
Un paradigma de programació és una manera d’enfocar i organitzar la programació, és a dir, una filosofia o estil que defineix com es dissenyen i estructuren els programes per resoldre problemes. Cada paradigma estableix un conjunt de principis, regles i tècniques per descriure com s’han d’executar les operacions dins d’un llenguatge de programació. <img decoding="async" width="300" height="200" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://degalalab.com/wp-content/uploads/2025/10/paradigma-300x200.jpg" alt="Minimalist icon representing different programming paradigms such as functional, object-oriented and imperative approaches, in DeGalaLab fuchsia and grey style." class="wp-image-7324" style="width:243px;height:auto" srcset="https://degalalab.com/wp-content/uploads/2025/10/paradigma-300x200.jpg 300w, https://degalalab.com/wp-content/uploads/2025/10/paradigma-1024x683.jpg 1024w, https://degalalab.com/wp-content/uploads/2025/10/paradigma-768x512.jpg 768w, https://degalalab.com/wp-content/uploads/2025/10/paradigma-500x333.jpg 500w, https://degalalab.com/wp-content/uploads/2025/10/paradigma-800x533.jpg 800w, https://degalalab.com/wp-content/uploads/2025/10/paradigma-1280x853.jpg 1280w, https://degalalab.com/wp-content/uploads/2025/10/paradigma.jpg 1536w" sizes="(max-width: 300px) 100vw, 300px" /> <path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" /> Per exemple, la programació imperativa descriu com s’han de fer les coses (pas a pas), mentre que la programació declarativa defineix què es vol obtenir, i la programació funcional se centra en funcions pures sense canvis d’estat. D’altres paradigmes coneguts són l’orientat a objectes (OOP) i el lògic. Imperatiu: el programa descriu instruccions seqüencials que modifiquen l’estat del sistema. Declaratiu: es defineixen objectius, i el llenguatge decideix com assolir-los (p. ex. SQL). Funcional: es basa en funcions matemàtiques pures i evita l’estat mutable. Orientat a objectes: modela el món real amb objectes que combinen dades i comportaments. Lògic: utilitza regles i fets per deduir conclusions (p. ex. Prolog). Python és un llenguatge multiparadigma: permet utilitzar més d’un estil de programació segons el context o la necessitat del projecte. Exemples de paradigmes en Python: Imperatiu: ús de bucles i variables. Funcional: ús de map(), filter(), reduce() i funcions lambda. Orientat a objectes: ús de classes i mètodes. En resum: un paradigma de programació és una forma de pensar el codi — una estructura mental que defineix com s’organitza la lògica, les dades i el comportament dels programes.
Explicació del concepte de <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Literal enter &lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;66.66%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt;&lt;!-- wp:paragraph --&gt;Un &lt;strong&gt;literal enter&lt;/strong&gt; és una representació directa d’un valor enter escrita dins del codi font. En Python, els literals enters poden indicar diferents bases numèriques mitjançant prefixos:&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;&lt;code&gt;10&lt;/code&gt; → decimal (base 10)&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;code&gt;0b100&lt;/code&gt; → binari (base 2)&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;code&gt;0o11&lt;/code&gt; → octal (base 8)&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;code&gt;0x1F&lt;/code&gt; → hexadecimal (base 16)&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;33.33%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:7216,&quot;width&quot;:&quot;175px&quot;,&quot;sizeSlug&quot;:&quot;full&quot;,&quot;linkDestination&quot;:&quot;none&quot;,&quot;align&quot;:&quot;center&quot;,&quot;className&quot;:&quot;is-style-rounded&quot;} --&gt;&lt;figure class=&quot;wp-block-image aligncenter size-full is-resized is-style-rounded&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:paragraph --&gt;Quan fem servir &lt;code&gt;int(string, base=0)&lt;/code&gt;, l’argument &lt;code&gt;base=0&lt;/code&gt; indica a Python que ha d’interpretar automàticament la base de la cadena, seguint les mateixes regles que els literals enters. Per exemple:&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:code --&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; int(&#039;0b100&#039;, base=0)4 &lt;/code&gt;&lt;!-- /wp:code --&gt;&lt;!-- wp:paragraph --&gt;Aquest comportament permet a Python reconèixer prefixos com &lt;code&gt;0b&lt;/code&gt;, &lt;code&gt;0o&lt;/code&gt; o &lt;code&gt;0x&lt;/code&gt; i convertir la cadena en el valor enter corresponent.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt; " href="https://degalalab.com/glossary/literal-enter/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>literal enter en Python i com defineix la base numèrica mitjançant prefixos com 0b, 0o i 0x.
Un literal enter és una representació directa d’un valor enter escrita dins del codi font. En Python, els literals enters poden indicar diferents bases numèriques mitjançant prefixos: 10 → decimal (base 10) 0b100 → binari (base 2) 0o11 → octal (base 8) 0x1F → hexadecimal (base 16) <img decoding="async" width="1024" height="1024" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://degalalab.com/wp-content/uploads/2025/10/literal-enter.jpg" alt="Icona minimalista que representa un nombre binari amb el prefix “0b”, simbolitzant com Python interpreta els literals enters en diferents bases." class="wp-image-7216" style="width:175px" srcset="https://degalalab.com/wp-content/uploads/2025/10/literal-enter.jpg 1024w, https://degalalab.com/wp-content/uploads/2025/10/literal-enter-300x300.jpg 300w, https://degalalab.com/wp-content/uploads/2025/10/literal-enter-150x150.jpg 150w, https://degalalab.com/wp-content/uploads/2025/10/literal-enter-768x768.jpg 768w, https://degalalab.com/wp-content/uploads/2025/10/literal-enter-500x500.jpg 500w, https://degalalab.com/wp-content/uploads/2025/10/literal-enter-800x800.jpg 800w" sizes="(max-width: 1024px) 100vw, 1024px" /> <path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" /> Quan fem servir int(string, base=0), l’argument base=0 indica a Python que ha d’interpretar automàticament la base de la cadena, seguint les mateixes regles que els literals enters. Per exemple: >>> int('0b100', base=0) 4 Aquest comportament permet a Python reconèixer prefixos com 0b, 0o o 0x i convertir la cadena en el valor enter corresponent.
Què és una regex? Guia d’expressions regulars amb sintaxi bàsica, exemples en Python i JavaScript, errors habituals i bones pràctiques per validar, cercar i extreure <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Text Un &lt;b&gt;text&lt;/b&gt; és un conjunt de paraules articulades que formen un discurs unitari, és una composició lingüística amb intenció de comunicar un missatge.&lt;sup id=&quot;cite_ref-GECtext_1-0&quot; class=&quot;reference&quot;&gt;&lt;/sup&gt;&lt;div class=&quot;mw-heading mw-heading2&quot;&gt;Propietats d&#039;un text ben format&lt;/div&gt;Un text ben format ha de tenir &lt;strong&gt;coherència&lt;/strong&gt;, &lt;strong&gt;cohesió&lt;/strong&gt;, &lt;strong&gt;adequació&lt;/strong&gt; i presentació de manera que existeixi una unitat temàtica i d&#039;estil que ajudi a la comprensió per part del receptor.&lt;div class=&quot;mw-heading mw-heading3&quot;&gt;&lt;span id=&quot;Cohesi.C3.B3&quot;&gt;&lt;/span&gt;Cohesió&lt;/div&gt;Implica la correcta relació entre les diferents parts del text. Compleix normes sintàctiques, gramaticals, i signes de puntuació&lt;div class=&quot;mw-heading mw-heading3&quot;&gt;&lt;span id=&quot;Adequaci.C3.B3&quot;&gt;&lt;/span&gt;Adequació&lt;/div&gt;L&#039;adequació és la propietat d&#039;adaptar el missatge a la situació, mitjançant el registre.&lt;b&gt;Registre:&lt;/b&gt; Variant estilística que s&#039;adapta a diferents situacions de comunicació. &lt;b&gt;Culte:&lt;/b&gt; El més curós de tots. Molta precisió lèxica. Correcció gramatical. S&#039;utilitza en poesia i ciències.&lt;br/&gt; &lt;b&gt;Estàndard:&lt;/b&gt; El normal. S&#039;utilitza a la premsa, relacions interpersonals i en llenguatge col·loquial.&lt;br/&gt; &lt;b&gt;Vulgar:&lt;/b&gt; Ús més descuidat de la norma lingüística, pobresa de vocabulari, ús de paraules inapropiades, pronunciació deficient, etc.&lt;br/&gt;&lt;br/&gt;&lt;div class=&quot;mw-heading mw-heading2&quot;&gt;Tipus de text&lt;/div&gt;Els textos es divideixen segons el tipus de llenguatge emprat, la modalitat textual i el tipus de públic al qual van dirigits, que condiciona per exemple el registre o grau de formalitat i la selecció de conceptes.&lt;sup id=&quot;cite_ref-4&quot; class=&quot;reference&quot;&gt;&lt;span class=&quot;cite-bracket&quot;&gt;[&lt;/span&gt;4&lt;span class=&quot;cite-bracket&quot;&gt;]&lt;/span&gt;&lt;/sup&gt;Segons el llenguatge, un text pot ser: Periodístic.&lt;br/&gt; Literari, si usa les convencions d&#039;estil i la doble figuració de la literatura.&lt;br/&gt; Científic, si apareixen tecnicismes i mots monosèmics.&lt;br/&gt; Administratiu o jurídic, amb abundància d&#039;abreviatures i fórmules lexicalitzades provinents del dret.&lt;br/&gt; Publicitari.&lt;br/&gt;&lt;br/&gt;Segons la modalitat, un text pot ser: Text descriptiu&lt;br/&gt; Text narratiu&lt;br/&gt; Text expositiu o divulgatiu (que inclou l&#039;instructiu).&lt;br/&gt; Text argumentatiu&lt;br/&gt; Text explicatiu&lt;br/&gt; Text predictiu&lt;br/&gt; Text teatral&lt;br/&gt;&lt;br/&gt; " href="https://degalalab.com/glossary/text/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>text.
Un llenguatge compacte per descriure patrons de text i fer-hi cerca, validació o extracció. Definició Una regex (o expressió regular) és una seqüència de símbols que descriu un patró de text. S’utilitza per trobar, validar, substituir o extreure fragments dins de cadenes en multitud de llenguatges (p. ex., Python, JavaScript, R, Java, PHP). Per què és útil Validació: correus, telèfons, codis postals. Neteja de dades: normalitzar formats, eliminar soroll. Extracció: captar grups rellevants (dates, imports, etiquetes). Substitució massiva: refactors de codi, reescriptura de logs. Sintaxi bàsica . qualsevol caràcter (excepte salt de línia per defecte) \d dígit; \w caràcter de paraula; \s espai en blanc Quantificadors: * 0+, + 1+, ? 0 o 1, {m,n} rang Àncores: ^ inici, $ final Classes: [abc] qualsevol d’aquests; [^abc] qualsevol excepte Grups: (...) capturant; (?:...) no capturant; (?<nom>...) amb nom Alternança: a|b Flags: p. ex. i (case-insensitive), m (multilínia), g (global, JS), s (dotall) Exemples Python import re text = "Contacta: hello@example.com i sales@shop.co" pattern = r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}" # Trobar totes les coincidències emails = re.findall(pattern, text) print(emails) # ['hello@example.com', 'sales@shop.co'] # Capturar grups amb nom (usuari i domini) m = re.search(r"(?<user>[A-Za-z0-9._%+-]+)@(?<domain>[A-Za-z0-9.-]+\.[A-Za-z]{2,})", text) if m: print(m.group("user"), m.group("domain")) # Substitució anon = re.sub(pattern, "[email]", text) print(anon) JavaScript const text = "SKU: AB-12345 i AB-98765"; const re = /\bAB-(\d{5})\b/g; const ids = [...text.matchAll(re)].map(m => m[1]); console.log(ids); // ["12345","98765"] // Validació bàsica de data (YYYY-MM) const isYearMonth = /^\d{4}-(0[1-9]|1[0-2])$/.test("2025-10"); console.log(isYearMonth); // true Errors habituals i bones pràctiques Gourmandesa: .* és golafre; usa quantificadors “mandrosos” .*? quan calgui. Escapat: recorda escapar meta-caràcters (., +, ?, (, ), [, ], {, }, ^, $, |, \). Legibilitat: per a patrons llargs, comenta’ls (flags com re.VERBOSE a Python) o trenca’ls en parts. Rendiment: evita patrons amb backtracking explosiu; prefereix classes i àncores clares. Internacionalització: per a lletres amb accents o Unicode, activa modes/llibreries que ho respectin. Vegeu també Pattern Matching Grup capturant Tokenització Callable
Guia sobre el mòdul datetime de Python: com crear, comparar i formatar dates i hores, amb exemples pràctics i funcions clau com strftime, strptime i timedelta.
Definició: El mòdul datetime és una biblioteca estàndard de Python que permet gestionar dates i hores de manera eficient i precisa. Ofereix classes per representar dates (date), hores (time), combinacions (datetime) i intervals de temps (timedelta), així com funcions per comparar, sumar, restar, formatejar i convertir valors temporals. És essencial per a tasques com: Registre d’esdeveniments i timestamps Càlculs de diferències temporals Conversió entre formats de data/hora Aplicacions amb planificació o temps real <img decoding="async" width="300" height="300" src="https://degalalab.com/wp-content/uploads/2025/10/datetime-300x300.jpg" alt="Icona minimalista que representa un calendari i un rellotge fusionats, simbolitzant la gestió de dates i hores en Python amb el mòdul datetime." class="wp-image-7203" srcset="https://degalalab.com/wp-content/uploads/2025/10/datetime-300x300.jpg 300w, https://degalalab.com/wp-content/uploads/2025/10/datetime-150x150.jpg 150w, https://degalalab.com/wp-content/uploads/2025/10/datetime-768x768.jpg 768w, https://degalalab.com/wp-content/uploads/2025/10/datetime-500x500.jpg 500w, https://degalalab.com/wp-content/uploads/2025/10/datetime-800x800.jpg 800w, https://degalalab.com/wp-content/uploads/2025/10/datetime.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /> Exemples de codi from datetime import datetime, timedelta # Data i hora actuals ara = datetime.now() print("Ara:", ara) # Format personalitzat print(ara.strftime("%d/%m/%Y %H:%M")) # Data futura (+7 dies) futur = ara + timedelta(days=7) print("D’aquí una setmana:", futur.strftime("%d/%m/%Y")) Notes addicionals strftime() → converteix objecte a text formatat. strptime() → interpreta un text i el converteix a objecte datetime. timedelta facilita operacions aritmètiques amb dates.
En Python, un objecte <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Callable &lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;66.66%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt;&lt;!-- wp:paragraph --&gt;&lt;strong&gt;Definició&lt;/strong&gt;: En &lt;strong&gt;Python&lt;/strong&gt;, un objecte &lt;em&gt;callable&lt;/em&gt; és qualsevol element que &lt;strong&gt;pot ser cridat&lt;/strong&gt; com si fos una funció, és a dir, que pot anar seguit de &lt;strong&gt;parèntesis &lt;code&gt;()&lt;/code&gt;&lt;/strong&gt;.&lt;br&gt;Quan un objecte és &lt;em&gt;callable&lt;/em&gt;, vol dir que pot executar un comportament o retornar un valor quan s&#039;invoca.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:paragraph --&gt;Exemples habituals d’objectes &lt;em&gt;callable&lt;/em&gt; són:&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Funcions definides&lt;/strong&gt; amb &lt;code&gt;def&lt;/code&gt; o &lt;code&gt;lambda&lt;/code&gt;.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Classes&lt;/strong&gt;, que al ser cridades creen una instància.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Mètodes&lt;/strong&gt; d’objectes.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Objectes amb el mètode especial&lt;/strong&gt; &lt;code&gt;__call__()&lt;/code&gt; implementat.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;33.33%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:7195,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;,&quot;align&quot;:&quot;center&quot;,&quot;className&quot;:&quot;is-style-rounded&quot;} --&gt;&lt;figure class=&quot;wp-block-image aligncenter size-medium is-style-rounded&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading {&quot;level&quot;:3} --&gt;Exemple pràctic&lt;!-- /wp:heading --&gt;&lt;!-- wp:code --&gt;&lt;code&gt;def saluda(): return &quot;Hola!&quot;print(saluda()) # → &quot;Hola!&quot;print(callable(saluda)) # → True# Una classe també és callableclass Exemple: def __call__(self): return &quot;Sóc callable!&quot;e = Exemple()print(e()) # → &quot;Sóc callable!&quot;&lt;/code&gt;&lt;!-- /wp:code --&gt;&lt;!-- wp:heading {&quot;level&quot;:3} --&gt;En resum&lt;!-- /wp:heading --&gt;&lt;!-- wp:paragraph --&gt;Un &lt;em&gt;callable&lt;/em&gt; és &quot;qualsevol cosa que pots posar abans d’uns parèntesis”.&lt;br&gt;La funció incorporada &lt;code&gt;callable(obj)&lt;/code&gt; serveix per comprovar-ho.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt; " href="https://degalalab.com/glossary/callable-python/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>callable és qualsevol element que pot ser cridat com una <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Funció &lt;!-- wp:heading --&gt;Definició bàsica de &lt;strong&gt;Funció&lt;/strong&gt;&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;33.33%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:6688,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;,&quot;style&quot;:{&quot;color&quot;:{}}} --&gt;&lt;figure class=&quot;wp-block-image size-medium&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;66.66%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt; Una &lt;strong&gt;funció&lt;/strong&gt; és una &lt;strong&gt;relació matemàtica&lt;/strong&gt; entre dos conjunts de nombres: a &lt;strong&gt;cada element del primer conjunt&lt;/strong&gt; (anomenat &lt;em&gt;domini&lt;/em&gt;) li correspon &lt;strong&gt;un únic element del segon conjunt&lt;/strong&gt; (anomenat &lt;em&gt;codomini&lt;/em&gt; o conjunt d’arribada).&lt;br/&gt; &lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt; &lt;em&gt;Dit d’una altra manera:&lt;/em&gt;&lt;br/&gt; &lt;!-- wp:quote --&gt;&lt;blockquote class=&quot;wp-block-quote&quot;&gt; Una funció és com una &lt;strong&gt;màquina&lt;/strong&gt;: rep un valor d’entrada, fa una operació i retorna un únic resultat.&lt;br/&gt; &lt;/blockquote&gt;&lt;!-- /wp:quote --&gt; &lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:6640,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;&lt;figure class=&quot;wp-block-image size-medium&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading --&gt;Notació&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; [pmath]f: X right Y[/pmath] &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; on &lt;strong&gt;f&lt;/strong&gt; és la funció, &lt;strong&gt;X&lt;/strong&gt; és el &lt;em&gt;domini&lt;/em&gt; i &lt;strong&gt;Y&lt;/strong&gt; és el &lt;em&gt;codomini&lt;/em&gt;.&lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; Si a la funció li donem un valor &lt;em&gt;x&lt;/em&gt;, ens retorna un valor:&lt;br/&gt; &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; [pmath]y = f(x)[/pmath] on &lt;strong&gt;y&lt;/strong&gt; és el resultat corresponent a &lt;strong&gt;x&lt;/strong&gt;.&lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading --&gt;Exemple senzill&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt; [pmath]f(x) = 2x + 3[/pmath] &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt; Si entrem [pmath]x = 1[/pmath], surt [pmath]f(1) = 5[/pmath].&lt;br/&gt; Si entrem [pmath]x = 4[/pmath], surt [pmath]f(4) = 11[/pmath].&lt;br/&gt; &lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:separator --&gt;&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot;/&gt;&lt;!-- /wp:separator --&gt;&lt;!-- wp:heading --&gt;Exemple gràfic&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; En representar una funció en el pla, cada valor de &lt;em&gt;x&lt;/em&gt; té un únic punt de sortida &lt;em&gt;y&lt;/em&gt;.&lt;br/&gt; Per comprovar-ho s’utilitza el &lt;strong&gt;test de la recta vertical&lt;/strong&gt;: si una recta vertical talla la gràfica en més d’un punt, &lt;strong&gt;no és una funció&lt;/strong&gt;.&lt;br/&gt; &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; &lt;!-- wp:image {&quot;id&quot;:6649,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;&lt;figure class=&quot;wp-block-image size-large&quot;&gt; &lt;/figure&gt;&lt;!-- /wp:image --&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:media-text {&quot;mediaId&quot;:6670,&quot;mediaLink&quot;:&quot;https://degalalab.com/glossary/funcio/icon-function-2/&quot;,&quot;mediaType&quot;:&quot;image&quot;} --&gt;&lt;div class=&quot;wp-block-media-text is-stacked-on-mobile&quot;&gt;&lt;figure class=&quot;wp-block-media-text__media&quot;&gt;&lt;/figure&gt;&lt;div class=&quot;wp-block-media-text__content&quot;&gt;&lt;!-- wp:paragraph {&quot;placeholder&quot;:&quot;Contingut...&quot;} --&gt;&lt;strong&gt;En resum&lt;/strong&gt;:&lt;br/&gt; &lt;blockquote class=&quot;wp-block-quote&quot;&gt; Una funció és una relació que associa &lt;strong&gt;cada valor d’entrada&lt;/strong&gt; amb &lt;strong&gt;un únic valor de sortida&lt;/strong&gt;.&lt;br/&gt; &lt;/blockquote&gt;&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:media-text --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt; " href="https://degalalab.com/glossary/funcio/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>funció, ja sigui una <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" Funció &lt;!-- wp:heading --&gt;Definició bàsica de &lt;strong&gt;Funció&lt;/strong&gt;&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;33.33%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:6688,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;,&quot;style&quot;:{&quot;color&quot;:{}}} --&gt;&lt;figure class=&quot;wp-block-image size-medium&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column {&quot;width&quot;:&quot;66.66%&quot;} --&gt;&lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt; Una &lt;strong&gt;funció&lt;/strong&gt; és una &lt;strong&gt;relació matemàtica&lt;/strong&gt; entre dos conjunts de nombres: a &lt;strong&gt;cada element del primer conjunt&lt;/strong&gt; (anomenat &lt;em&gt;domini&lt;/em&gt;) li correspon &lt;strong&gt;un únic element del segon conjunt&lt;/strong&gt; (anomenat &lt;em&gt;codomini&lt;/em&gt; o conjunt d’arribada).&lt;br/&gt; &lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt; &lt;em&gt;Dit d’una altra manera:&lt;/em&gt;&lt;br/&gt; &lt;!-- wp:quote --&gt;&lt;blockquote class=&quot;wp-block-quote&quot;&gt; Una funció és com una &lt;strong&gt;màquina&lt;/strong&gt;: rep un valor d’entrada, fa una operació i retorna un únic resultat.&lt;br/&gt; &lt;/blockquote&gt;&lt;!-- /wp:quote --&gt; &lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:image {&quot;lightbox&quot;:{&quot;enabled&quot;:true},&quot;id&quot;:6640,&quot;sizeSlug&quot;:&quot;medium&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;&lt;figure class=&quot;wp-block-image size-medium&quot;&gt;&lt;/figure&gt;&lt;!-- /wp:image --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading --&gt;Notació&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; [pmath]f: X right Y[/pmath] &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; on &lt;strong&gt;f&lt;/strong&gt; és la funció, &lt;strong&gt;X&lt;/strong&gt; és el &lt;em&gt;domini&lt;/em&gt; i &lt;strong&gt;Y&lt;/strong&gt; és el &lt;em&gt;codomini&lt;/em&gt;.&lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; Si a la funció li donem un valor &lt;em&gt;x&lt;/em&gt;, ens retorna un valor:&lt;br/&gt; &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; [pmath]y = f(x)[/pmath] on &lt;strong&gt;y&lt;/strong&gt; és el resultat corresponent a &lt;strong&gt;x&lt;/strong&gt;.&lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:heading --&gt;Exemple senzill&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:33.33%&quot;&gt; [pmath]f(x) = 2x + 3[/pmath] &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot; style=&quot;flex-basis:66.66%&quot;&gt; Si entrem [pmath]x = 1[/pmath], surt [pmath]f(1) = 5[/pmath].&lt;br/&gt; Si entrem [pmath]x = 4[/pmath], surt [pmath]f(4) = 11[/pmath].&lt;br/&gt; &lt;br/&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:separator --&gt;&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot;/&gt;&lt;!-- /wp:separator --&gt;&lt;!-- wp:heading --&gt;Exemple gràfic&lt;!-- /wp:heading --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt; &lt;div class=&quot;wp-block-column&quot;&gt; En representar una funció en el pla, cada valor de &lt;em&gt;x&lt;/em&gt; té un únic punt de sortida &lt;em&gt;y&lt;/em&gt;.&lt;br/&gt; Per comprovar-ho s’utilitza el &lt;strong&gt;test de la recta vertical&lt;/strong&gt;: si una recta vertical talla la gràfica en més d’un punt, &lt;strong&gt;no és una funció&lt;/strong&gt;.&lt;br/&gt; &lt;/div&gt; &lt;div class=&quot;wp-block-column&quot;&gt; &lt;!-- wp:image {&quot;id&quot;:6649,&quot;sizeSlug&quot;:&quot;large&quot;,&quot;linkDestination&quot;:&quot;none&quot;} --&gt;&lt;figure class=&quot;wp-block-image size-large&quot;&gt; &lt;/figure&gt;&lt;!-- /wp:image --&gt; &lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt;&lt;!-- wp:columns --&gt;&lt;div class=&quot;wp-block-columns&quot;&gt;&lt;!-- wp:column --&gt;&lt;div class=&quot;wp-block-column&quot;&gt;&lt;!-- wp:media-text {&quot;mediaId&quot;:6670,&quot;mediaLink&quot;:&quot;https://degalalab.com/glossary/funcio/icon-function-2/&quot;,&quot;mediaType&quot;:&quot;image&quot;} --&gt;&lt;div class=&quot;wp-block-media-text is-stacked-on-mobile&quot;&gt;&lt;figure class=&quot;wp-block-media-text__media&quot;&gt;&lt;/figure&gt;&lt;div class=&quot;wp-block-media-text__content&quot;&gt;&lt;!-- wp:paragraph {&quot;placeholder&quot;:&quot;Contingut...&quot;} --&gt;&lt;strong&gt;En resum&lt;/strong&gt;:&lt;br/&gt; &lt;blockquote class=&quot;wp-block-quote&quot;&gt; Una funció és una relació que associa &lt;strong&gt;cada valor d’entrada&lt;/strong&gt; amb &lt;strong&gt;un únic valor de sortida&lt;/strong&gt;.&lt;br/&gt; &lt;/blockquote&gt;&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- /wp:media-text --&gt;&lt;/div&gt;&lt;!-- /wp:column --&gt;&lt;/div&gt;&lt;!-- /wp:columns --&gt; " href="https://degalalab.com/glossary/funcio/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>funció, una classe o un objecte amb __call__()
Definició: En Python, un objecte callable és qualsevol element que pot ser cridat com si fos una funció, és a dir, que pot anar seguit de parèntesis (). Quan un objecte és callable, vol dir que pot executar un comportament o retornar un valor quan s’invoca. Exemples habituals d’objectes callable són: Funcions definides amb def o lambda. Classes, que al ser cridades creen una instància. Mètodes d’objectes. Objectes amb el mètode especial __call__() implementat. <img decoding="async" width="300" height="300" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://degalalab.com/wp-content/uploads/2025/10/callable-1-300x300.jpg" alt="Icona minimalista que representa una funció en Python amb parèntesis, indicant que l’objecte és callable — és a dir, que es pot cridar com una funció." class="wp-image-7195" srcset="https://degalalab.com/wp-content/uploads/2025/10/callable-1-300x300.jpg 300w, https://degalalab.com/wp-content/uploads/2025/10/callable-1-150x150.jpg 150w, https://degalalab.com/wp-content/uploads/2025/10/callable-1-768x768.jpg 768w, https://degalalab.com/wp-content/uploads/2025/10/callable-1-500x500.jpg 500w, https://degalalab.com/wp-content/uploads/2025/10/callable-1-800x800.jpg 800w, https://degalalab.com/wp-content/uploads/2025/10/callable-1.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /> <path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" /> Exemple pràctic def saluda(): return "Hola!" print(saluda()) # → "Hola!" print(callable(saluda)) # → True # Una classe també és callable class Exemple: def __call__(self): return "Sóc callable!" e = Exemple() print(e()) # → "Sóc callable!" En resum Un callable és “qualsevol cosa que pots posar abans d’uns parèntesis”. La funció incorporada callable(obj) serveix per comprovar-ho.
Descobreix el <a class="glossaryLink" aria-describedby="tt" data-cmtooltip=" PEP 20 &lt;!-- wp:paragraph --&gt;&lt;strong&gt;PEP 20 – The Zen of Python&lt;/strong&gt; és un conjunt de principis que defineixen la filosofia de disseny de Python. Escrits per Tim Peters, orienten cap a un codi més &lt;em&gt;simple, explícit i llegible&lt;/em&gt;.&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:heading --&gt;Definició&lt;!-- /wp:heading --&gt;&lt;!-- wp:paragraph --&gt;&lt;strong&gt;PEP 20&lt;/strong&gt; (conegut com &lt;em&gt;The Zen of Python&lt;/em&gt;) és una llista de màximes que resumeixen les bones pràctiques i valors estètics del llenguatge Python. Es pot visualitzar a l’intèrpret amb:&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:code --&gt;&lt;code&gt;import this&lt;/code&gt;&lt;!-- /wp:code --&gt;&lt;!-- wp:heading --&gt;Principis clau (selecció)&lt;!-- /wp:heading --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Beautiful is better than ugly&lt;/strong&gt;: el codi ha de ser net i agradable de llegir.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Simple is better than complex&lt;/strong&gt;: prefereix solucions senzilles.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Explicit is better than implicit&lt;/strong&gt;: evita ambigüitats i &quot;màgia”.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Readability counts&lt;/strong&gt;: la llegibilitat és prioritària.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;There should be one— and preferably only one— obvious way to do it&lt;/strong&gt;: coherència i camins clars.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Errors should never pass silently&lt;/strong&gt; (excepte si es silencien explícitament): gestiona les excepcions amb criteri.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;&lt;strong&gt;Namespaces are one honking great idea — let’s do more of those!&lt;/strong&gt;: organitza i evita conflictes de noms.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt;&lt;!-- wp:paragraph --&gt;Veure la llista completa de màximes&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;Beautiful is better than ugly.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Explicit is better than implicit.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Simple is better than complex.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Complex is better than complicated.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Flat is better than nested.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Sparse is better than dense.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Readability counts.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Special cases aren&#039;t special enough to break the rules.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Although practicality beats purity.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Errors should never pass silently.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Unless explicitly silenced.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;In the face of ambiguity, refuse the temptation to guess.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;There should be one— and preferably only one— obvious way to do it.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Although that way may not be obvious at first unless you&#039;re Dutch.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Now is better than never.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Although never is often better than right now.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;If the implementation is hard to explain, it&#039;s a bad idea.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;If the implementation is easy to explain, it may be a good idea.&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Namespaces are one honking great idea — let&#039;s do more of those!&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt;&lt;!-- wp:heading --&gt;Aplicació pràctica&lt;!-- /wp:heading --&gt;&lt;!-- wp:paragraph --&gt;Exemple de simplicitat i llegibilitat (&lt;em&gt;Readability counts&lt;/em&gt;):&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:code --&gt;&lt;code&gt;# Poc clar (massa &quot;màgia&quot;)vals = &amp;#91;1, 2, 2, 3, 4]u = &amp;#91;]&lt;/code&gt;&lt;!-- /wp:code --&gt;&lt;!-- wp:shortcode --&gt;[u.append(v) for v in vals if v not in u]&lt;!-- /wp:shortcode --&gt;&lt;!-- wp:paragraph --&gt;# Més simple i explícit (preferible, PEP 20) vals = [1, 2, 2, 3, 4] u = list(set(vals))&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:heading --&gt;Context i autoria&lt;!-- /wp:heading --&gt;&lt;!-- wp:paragraph --&gt;&lt;em&gt;The Zen of Python&lt;/em&gt; és obra de &lt;strong&gt;Tim Peters&lt;/strong&gt;. El terme &quot;PEP” significa &lt;em&gt;Python Enhancement Proposal&lt;/em&gt; (Proposta de Millora de Python).&lt;br/&gt;&lt;!-- /wp:paragraph --&gt;&lt;!-- wp:heading --&gt;Vegeu també&lt;!-- /wp:heading --&gt;&lt;!-- wp:list --&gt;&lt;!-- wp:list-item --&gt;PEP (Python Enhancement Proposal)&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Namespace (espai de noms)&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;!-- wp:list-item --&gt;Guia d’estil de Python&lt;br/&gt;&lt;!-- /wp:list-item --&gt;&lt;br/&gt;&lt;!-- /wp:list --&gt; " href="https://degalalab.com/glossary/pep-20-zen-of-python/" data-gt-translate-attributes='[{"attribute":"data-cmtooltip", "format":"html"}]' tabindex='0' role='link'>PEP 20 (The Zen of Python): els principis de simplicitat, claredat i llegibilitat que guien el disseny de Python. Amb exemples pràctics i enllaços relacionats.
PEP 20 – The Zen of Python és un conjunt de principis que defineixen la filosofia de disseny de Python. Escrits per Tim Peters, orienten cap a un codi més simple, explícit i llegible. Definició PEP 20 (conegut com The Zen of Python) és una llista de màximes que resumeixen les bones pràctiques i valors estètics del llenguatge Python. Es pot visualitzar a l’intèrpret amb: import this Principis clau (selecció) Beautiful is better than ugly: el codi ha de ser net i agradable de llegir. Simple is better than complex: prefereix solucions senzilles. Explicit is better than implicit: evita ambigüitats i “màgia”. Readability counts: la llegibilitat és prioritària. There should be one— and preferably only one— obvious way to do it: coherència i camins clars. Errors should never pass silently (excepte si es silencien explícitament): gestiona les excepcions amb criteri. Namespaces are one honking great idea — let’s do more of those!: organitza i evita conflictes de noms. Veure la llista completa de màximes Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren’t special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one— and preferably only one— obvious way to do it. Although that way may not be obvious at first unless you’re Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it’s a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea — let’s do more of those! Aplicació pràctica Exemple de simplicitat i llegibilitat (Readability counts): # Poc clar (massa "màgia") vals = [1, 2, 2, 3, 4] u = [] [u.append(v) for v in vals if v not in u] # Més simple i explícit (preferible, PEP 20) vals = [1, 2, 2, 3, 4] u = list(set(vals)) Context i autoria The Zen of Python és obra de Tim Peters. El terme “PEP” significa Python Enhancement Proposal (Proposta de Millora de Python). Vegeu també PEP (Python Enhancement Proposal) Namespace (espai de noms) Guia d’estil de Python
Explicació sobre què és un generador en Python, com utilitza la paraula clau yield per crear iteradors eficients, i exemples pràctics amb funcions i bucles for.
<img decoding="async" width="300" height="200" src="https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-300x200.jpg" alt="Icona minimalista que representa el concepte “Generador” en Python: tres punts grisos a l’esquerra i una fletxa fúcsia corba que simbolitza el flux seqüencial dels valors produïts amb yield. Estil modern i tecnològic, paleta de colors deGalaLab (#FC3869 i tons grisos)" class="wp-image-7158" style="object-fit:cover" srcset="https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-300x200.jpg 300w, https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-1024x683.jpg 1024w, https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-768x512.jpg 768w, https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-500x333.jpg 500w, https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-800x533.jpg 800w, https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador-1280x853.jpg 1280w, https://degalalab.com/wp-content/uploads/2025/10/Fluxograma-del-Generador.jpg 1536w" sizes="(max-width: 300px) 100vw, 300px" /> Definició: Un generador en Python és un tipus especial de funció que retorna un iterador. En lloc de fer servir return, utilitza la paraula clau yield per anar retornant valors un darrere l’altre, sense perdre l’estat intern entre crides. Com funciona un generador Quan una funció conté yield, no s’executa immediatament. En cridar-la, retorna un objecte generador, que pot ser recorregut amb for o amb next(). def comptar(limit): for i in range(1, limit + 1): yield i # Crea un objecte generador gen = comptar(3) print(gen) # &lt;generator object comptar at 0x...&gt; print(next(gen)) # 1 print(next(gen)) # 2 print(next(gen)) # 3 # StopIteration quan s'acaben els valors Avantatges dels generadors Eficiència en memòria: no creen tota la seqüència d’un cop, sinó que generen cada valor quan cal. Fluxos infinits: poden generar valors indefinidament (p. ex. sensors, streams, seqüències). Integració nativa: funcionen amb bucles for, comprensions i funcions com sum() o any(). Exemple d’ús pràctic def quadrats(n): for i in range(1, n + 1): yield i ** 2 for valor in quadrats(5): print(valor) # 1, 4, 9, 16, 25 Generadors infinits Els generadors poden no tenir final si no hi ha una condició de parada: def comptador_infinit(): n = 1 while True: yield n n += 1 # Exemple (es trenca amb break) for x in comptador_infinit(): if x > 5: break print(x) Comparació amb llistes Les llistes guarden tots els valors a la memòria. Els generadors calculen cada valor sobre la marxa (lazy evaluation). Vegeu també Iterador (Python): objecte retornat per iter() o per una funció amb yield. Iterable (Python): objecte que pot proporcionar un iterador. Comprensions de generador: expressió curta entre parèntesis que crea un generador automàticament.
Què és un iterador en Python? Explicació clara sobre com funciona, diferència amb un iterable, exemples pràctics amb conjunts, llistes i generadors.
Definició: En Python, un iterador és un objecte que permet recórrer una seqüència d’elements d’un en un. Cada vegada que s’aplica la funció next(), l’iterador retorna el següent element. Quan no en queden més, llença l’excepció StopIteration. Iterador vs. Iterable Iterable: objecte que pot proporcionar un iterador amb iter() (per exemple, list, tuple, set, dict). Iterador: objecte retornat per iter() i consumit per next(). fruits = ["poma", "plàtan", "cirera"] # obtenim un iterador it = iter(fruits) print(next(it)) # poma print(next(it)) # plàtan print(next(it)) # cirera print(next(it)) # StopIteration (quan s'acaben els elements) Característiques principals Els iteradors recorden la posició actual dins de la seqüència. Només es poden recórrer una vegada; un cop consumits, cal crear-ne un de nou. Són ideals per treballar amb grans conjunts de dades o fluxos infinits (gràcies a la generació sota demanda). Com crear un iterador propi Pots crear una classe que implementi els mètodes especials __iter__() i __next__(): class Comptador: def __init__(self, limit): self.limit = limit self.count = 0 def __iter__(self): return self def __next__(self): if self.count < self.limit: self.count += 1 return self.count else: raise StopIteration for num in Comptador(3): print(num) # 1, 2, 3 Relació amb generadors Els generadors són una manera senzilla de crear iteradors utilitzant la paraula clau yield: def comptar(limit): for i in range(1, limit + 1): yield i for n in comptar(3): print(n) Errors comuns i bones pràctiques Consum accidental: un iterador no es pot “reiniciar”; crea’n un de nou amb iter() si cal tornar a començar. Excepció StopIteration: indica que s’han acabat els elements, no és un error real. Iteració segura: els bucles for gestionen automàticament StopIteration. Vegeu també Iterable (Python): objecte capaç de proporcionar un iterador amb iter(). Generador (Python): funció que crea iteradors de forma més simple amb yield. Conjunt (set): estructura iterable que pot convertir-se en iterador.