Introducere în funcții în Python

O funcție vă permite să definiți un bloc de cod reutilizabil care poate fi executat de multe ori în cadrul programului dumneavoastră.

Funcțiile vă permit să creați mai modulare și USCAT soluții la probleme complexe.

În timp ce Python oferă deja multe funcții încorporate, cum ar fi print() și len(), de asemenea, puteți defini propriile funcții pe care să le utilizați în cadrul proiectelor dvs.

Unul dintre marile avantaje ale utilizării funcțiilor în codul dvs. este că reduce numărul total de linii de cod din proiectul dvs.

Sintaxă

În Python, o definiție a funcției are următoarele caracteristici:

  1. Cuvântul cheie def
  2. un nume de funcție
  3. paranthesis ‘()’ și în parametrii de intrare paranthesis, deși parametrii de intrare sunt opționali.
  4. un colon ‘:’
  5. un bloc de cod de executat
  6. o declarație de returnare (opțional)
# a function with no parameters or returned values
def sayHello():
  print("Hello!")

sayHello()  # calls the function, 'Hello!' is printed to the console

# a function with a parameter
def helloWithName(name):
  print("Hello " + name + "!")

helloWithName("Ada")  # calls the function, 'Hello Ada!' is printed to the console

# a function with multiple parameters with a return statement
def multiply(val1, val2):
  return val1 * val2

multiply(3, 5)  # prints 15 to the console

Funcțiile sunt blocuri de cod care pot fi reutilizate pur și simplu apelând funcția. Aceasta permite reutilizarea simplă și elegantă a codului fără a rescrie în mod explicit secțiuni de cod. Acest lucru face codul mai ușor de citit, facilitează depanarea și limitează erorile de tastare.

Funcțiile din Python sunt create folosind def cuvânt cheie, urmat de un nume de funcție și parametrii funcției din paranteze.

O funcție returnează întotdeauna o valoare, The return cuvântul cheie este folosit de funcție pentru a returna o valoare, dacă nu doriți să returnați nicio valoare, valoarea implicită None va reveni.

Numele funcției este folosit pentru a apela funcția, trecând parametrii necesari în paranteze.

# this is a basic sum function
def sum(a, b):
  return a + b

result = sum(1, 2)
# result = 3

Puteți defini valorile implicite pentru parametri, astfel Python va interpreta că valoarea acelui parametru este cea implicită dacă nu este dată niciuna.

def sum(a, b=3):
  return a + b

result = sum(1)
# result = 4

Puteți trece parametrii în ordinea dorită, folosind numele parametrului.

result = sum(b=2, a=2)
# result = 4

Cu toate acestea, nu este posibil să treceți un argument de cuvânt cheie înainte de unul care nu este unul cheie

result = sum(3, b=2)
#result = 5
result2 = sum(b=2, 3)
#Will raise SyntaxError

Funcțiile sunt, de asemenea, obiecte, astfel încât să le puteți atribui unei variabile și să o utilizați ca o funcție.

s = sum
result = s(1, 2)
# result = 3

Note

Dacă o definiție a funcției include parametri, trebuie să furnizați același număr de parametri atunci când apelați funcția.

print(multiply(3))  # TypeError: multiply() takes exactly 2 arguments (0 given)

print(multiply('a', 5))  # 'aaaaa' printed to the console

print(multiply('a', 'b'))  # TypeError: Python can't multiply two strings

Blocul de cod pe care va rula funcția include toate instrucțiunile indentate în cadrul funcției.

def myFunc():
print('this will print')
print('so will this')

x = 7
# the assignment of x is not a part of the function since it is not indented

Variabilele definite într-o funcție există numai în sfera acelei funcții.

def double(num):
x = num * 2
return x

print(x)  # error - x is not defined
print(double(4))  # prints 8

Python interpretează blocul funcțional numai atunci când funcția este apelată și nu când funcția este definită. Deci, chiar dacă blocul de definiție a funcției conține un fel de eroare, interpretul python va indica acest lucru numai atunci când funcția este apelată.

Acum să analizăm câteva funcții specifice cu exemple.

funcția max ()

max() este o funcție încorporată în Python 3. Returnează cel mai mare element dintr-un iterabil sau cel mai mare dintre două sau mai multe argumente.

Argumente

Această funcție ia două sau mai multe numere sau orice fel de iterabil ca argument. În timp ce oferim un iterabil ca argument, trebuie să ne asigurăm că toate elementele din iterabil sunt de același tip. Aceasta înseamnă că nu putem trece o listă care conține atât valori de șir cât și valori întregi. Sintaxă: max (iterabilă, * iterabilă[,key, default]) max (arg1, arg2, * args[, key])

Argumente valabile:

max(2, 3)
max([1, 2, 3])
max('a', 'b', 'c')

Argumente nevalide:

max(2, 'a')
max([1, 2, 3, 'a'])
max([])

Valoare returnată

Cel mai mare articol din iterabil este returnat. Dacă sunt furnizate două sau mai multe argumente poziționale, cel mai mare dintre argumentele poziționale este returnat. Dacă iterabilul este gol și implicit nu este furnizat, a ValueError este crescut.

Exemplu de cod

print(max(2, 3)) # Returns 3 as 3 is the largest of the two values
print(max(2, 3, 23)) # Returns 23 as 23 is the largest of all the values

list1 = [1, 2, 4, 5, 54]
print(max(list1)) # Returns 54 as 54 is the largest value in the list

list2 = ['a', 'b', 'c' ]
print(max(list2)) # Returns 'c' as 'c' is the largest in the list because c has ascii value larger then 'a' ,'b'.

list3 = [1, 2, 'abc', 'xyz']
print(max(list3)) # Gives TypeError as values in the list are of different type

#Fix the TypeError mentioned above first before moving on to next step

list4 = []
print(max(list4)) # Gives ValueError as the argument is empty

Rulați Codul

Documente oficiale

funcția min ()

min() este o funcție încorporată în Python 3. Returnează cel mai mic element dintr-un iterabil sau cel mai mic dintre două sau mai multe argumente.

Argumente

Această funcție ia două sau mai multe numere sau orice fel de iterabil ca argument. În timp ce oferim un iterabil ca argument, trebuie să ne asigurăm că toate elementele din iterabil sunt de același tip. Aceasta înseamnă că nu putem trece o listă care are atât valori de șir cât și valori întregi stocate în ea.

Argumente valabile:

min(2, 3)
min([1, 2, 3])
min('a', 'b', 'c')

Argumente nevalide:

min(2, 'a')
min([1, 2, 3, 'a'])
min([])

Valoare returnată

Cel mai mic articol din iterabil este returnat. Dacă sunt furnizate două sau mai multe argumente poziționale, cel mai mic dintre argumentele poziționale
este returnat. Dacă iterabilul este gol și implicit nu este furnizat, se ridică un ValueError.

Exemplu de cod

print(min(2, 3)) # Returns 2 as 2 is the smallest of the two values
print(min(2, 3, -1)) # Returns -1 as -1 is the smallest of the two values

list1 = [1, 2, 4, 5, -54]
print(min(list1)) # Returns -54 as -54 is the smallest value in the list

list2 = ['a', 'b', 'c' ]
print(min(list2)) # Returns 'a' as 'a' is the smallest in the list in alphabetical order

list3 = [1, 2, 'abc', 'xyz']
print(min(list3)) # Gives TypeError as values in the list are of different type

#Fix the TypeError mentioned above first before moving on to next step

list4 = []
print(min(list4)) # Gives ValueError as the argument is empty

Rulați Codul

Documente oficiale

funcția divmod ()

divmod() este o funcție încorporată în Python 3, care returnează coeficientul și restul la împărțirea numărului a după număr b. Este nevoie de două numere ca argumente a & b. Argumentul nu poate fi un număr complex.

Argument

Este nevoie de două argumente a & b – un număr întreg sau un număr zecimal. Nu poate fi un număr complex.

Valoare returnată

Valoarea returnată va fi perechea de numere pozitive constând din coeficient și rest obținut prin împărțire a de b. În cazul tipurilor de operandi mixți, se vor aplica reguli pentru operatorii aritmetici binari.
Pentru Argumente privind numărul întreg, valoarea returnată va fi aceeași cu (a // b, a % b).
Pentru Argumente privind numărul zecimal, valoarea returnată va fi aceeași cu (q, a % b), Unde q este de obicei math.floor (a / b) dar poate fi cu 1 mai puțin decât atât.

Exemplu de cod

print(divmod(5,2)) # prints (2,1)
print(divmod(13.5,2.5)) # prints (5.0, 1.0)
q,r = divmod(13.5,2.5)  # Assigns q=quotient & r= remainder
print(q) # prints 5.0 because math.floor(13.5/2.5) = 5.0
print(r) # prints 1.0 because (13.5 % 2.5) = 1.0

RĂSPUNS-O!

Documente oficiale

Funcția Hex (x)

hex(x) este o funcție încorporată în Python 3 pentru a converti un număr întreg într-o minusculă hexazecimal șir prefixat cu „0x”.

Argument

Această funcție are un argument, x, care ar trebui să fie de tip întreg.

Întoarcere

Această funcție returnează un șir hexazecimal minuscul prefixat cu „0x”.

Exemplu

print(hex(16))    # prints  0x10
print(hex(-298))  # prints -0x12a
print(hex(543))   # prints  0x21f

Rulați Codul

Documentație oficială

funcția len ()

len() este o funcție încorporată în Python 3. Această metodă returnează lungimea (numărul de articole) al unui obiect. Este nevoie de un argument x.

Argumente

Este nevoie de un argument, x. Acest argument poate fi o secvență (cum ar fi un șir, octeți, tupluri, liste sau intervale) sau o colecție (cum ar fi un dicționar, un set sau un set înghețat).

Valoare returnată

Această funcție returnează numărul de elemente din argument care este transmis la len() funcţie.

Exemplu de cod

list1 = [123, 'xyz', 'zara'] # list
print(len(list1)) # prints 3 as there are 3 elements in the list1

str1 = 'basketball' # string
print(len(str1)) # prints 10 as the str1 is made of 10 characters

tuple1 = (2, 3, 4, 5) # tuple 
print(len(tuple1)) # prints 4 as there are 4 elements in the tuple1

dict1 = {'name': 'John', 'age': 4, 'score': 45} # dictionary
print(len(dict1)) # prints 3 as there are 3 key and value pairs in the dict1

Rulați Codul

Documente oficiale

Funcția Ord

ord() este o funcție încorporată în Python 3, pentru a converti șirul care reprezintă un caracter Unicode în număr întreg reprezentând codul Unicode al caracterului.

Exemple:

>>> ord('d')
100
>>> ord('1')
49

funcția chr

chr() este o funcție încorporată în Python 3, pentru a converti întregul care reprezintă codul Unicode într-un șir care reprezintă un caracter corespunzător.

Exemple:

>>> chr(49)
'1'

Un lucru este de remarcat că, dacă valoarea întregului a trecut la chr() este în afara intervalului, atunci se va ridica un ValueError.

>>> chr(-10)
'Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    chr(-1)
ValueError: chr() arg not in range(0x110000)'

funcții input ()

De multe ori, într-un program avem nevoie de niște informații de la utilizator. Luarea de date de la utilizator face ca programul să se simtă interactiv. În Python 3, pentru a prelua datele de la utilizator avem o funcție input(). Dacă funcția de intrare este apelată, fluxul programului va fi oprit până când utilizatorul a dat o intrare și a terminat intrarea cu tasta de returnare. Să vedem câteva exemple:

Când vrem doar să luăm datele de intrare:

Acest lucru va oferi o solicitare fără niciun mesaj

inp = input ()

Rulați Codul

Pentru a da o solicitare cu un mesaj:

promptcumesaj = input (”)

_

„_” Din ieșire este promptul

Rulați Codul

3. Când vrem să luăm o intrare întreagă:

number = int(input('Please enter a number: '))

Rulați Codul

Dacă introduceți o valoare care nu este întreagă, atunci Python va arunca o eroare ValueError. Deci, ori de câte ori îl folosiți, asigurați-vă că îl prindeți și pe voi. În caz contrar, programul dvs. se va opri neașteptat după prompt.

number = int(input('Please enter a number: '))
# Please enter a number: as
# Enter a string and it will throw this error
# ValueError: invalid literal for int() with base 10 'as'

4. Când vrem o intrare de șir:

string = str(input('Please enter a string: '))

Rulați Codul

Cu toate acestea, intrările sunt stocate în mod implicit ca un șir. Folosind str() funcția clarifică cititorului de cod că intrarea va fi un „șir”. Este o bună practică să menționăm ce tip de intrare va fi luat în prealabil.

Documente oficiale

Cum să apelați o funcție în Python

O instrucțiune de definiție a funcției nu execută funcția. Executarea (apelarea) unei funcții se face folosind numele funcției urmat de paranteză care conține argumentele necesare (dacă există).

>>> def say_hello():
...     print('Hello')
...
>>> say_hello()
Hello

Executarea unei funcții introduce un nou tabel de simboluri utilizat pentru variabilele locale ale funcției. Mai precis, toate atribuirile variabilei dintr-o funcție stochează valoarea în tabelul de simboluri local; întrucât referințele variabile se uită mai întâi în tabelul de simboluri locale, apoi în tabelele de simboluri locale ale funcțiilor care conțin, apoi în tabelul de simboluri global și, în cele din urmă, în tabelul numelor încorporate. Astfel, variabilelor globale nu li se poate atribui direct o valoare în cadrul unei funcții (cu excepția cazului în care este denumită într-o declarație globală), deși pot fi menționate.

>>> a = 1
>>> b = 10
>>> def fn():
...     print(a)    # local a is not assigned, no enclosing function, global a referenced.
...     b = 20      # local b is assigned in the local symbol table for the function.
...     print(b)    # local b is referenced.
...
>>> fn()
1
20
>>> b               # global b is not changed by the function call.
10

Parametrii reali (argumentele) unui apel de funcție sunt introduși în tabelul de simboluri locale al funcției apelate atunci când este apelat; astfel, argumentele sunt transmise folosind apelul după valoare (unde valoarea este întotdeauna o referință de obiect, nu valoarea obiectului). Când o funcție apelează o altă funcție, se creează un nou tabel de simboluri locale pentru acel apel.

>>> def greet(s):
...     s = "Hello " + s    # s in local symbol table is reassigned.
...     print(s)
...
>>> person = "Bob"
>>> greet(person)
Hello Bob
>>> person                  # person used to call remains bound to original object, 'Bob'.
'Bob'

Argumentele utilizate pentru a apela o funcție nu pot fi reatribuite de funcție, dar argumentele care fac referire la obiecte mutabile pot avea valorile modificate:

>>> def fn(arg):
...     arg.append(1)
...
>>> a = [1, 2, 3]
>>> fn(a)
>>> a
[1, 2, 3, 1]