Home » Articole » Articole » Calculatoare » Programare » Python » Definirea funcțiilor în limbajul de programare Python

Definirea funcțiilor în limbajul de programare Python

postat în: Python 0

Crearea funcțiilor

Pentru a începe acest capitol, vă voi da un exemplu despre ceea ce ați putea face, dar nu ar trebui (deci nu-l folosiți):

a = 23
b = -23

if a < 0:
    a = -a
if b < 0:
    b = -b
if a == b:
    print("The absolute values of", a, "and", b, "are equal.")
else:
    print("The absolute values of", a, "and", b, "are different.")

cu ieșirea fiind:

The absolute values of 23 and 23 are equal.

Programul pare puțin repetitiv. Programatorii urăsc să repete lucrurile – pentru asta sunt computerele, până la urmă! (Rețineți, de asemenea, că găsirea valorii absolute a schimbat valoarea variabilei, motiv pentru care se tipărește 23 și nu -23 în ieșire.) Din fericire, Python vă permite să creați funcții pentru a elimina duplicarea. Iată exemplul rescris:

a = 23
b = -23

def absolute_value(n):
    if n < 0:
        n = -n
    return n

if absolute_value(a) == absolute_value(b):
    print("The absolute values of", a, "and", b, "are equal.")
else:
    print("The absolute values of", a, "and", b, "are different.")

cu ieșirea fiind:

The absolute values of 23 and -23 are equal.

Caracteristica cheie a acestui program este declarația def. def (prescurtare de la definire) începe o definiție a funcției. def este urmat de numele funcției absolute_value. Urmează un „(” urmat de parametrul n (n este trecut din program în funcție când funcția este apelată). Instrucțiunile de după „:” sunt executate când funcția este utilizată. Instrucțiunile continuă până când fie instrucțiunile indentate se termină fie se întâlnește o return. Instrucțiunea return returnează o valoare înapoi la locul unde a fost apelată funcția. Am întâlnit deja o funcție în primul nostru program, funcția print. Acum putem face noi funcții.

Observați cum valorile lui a și  b nu sunt modificate. Funcțiile pot fi folosite pentru a repeta sarcini care nu returnează valori. Aici sunt cateva exemple:

def hello():
    print("Hello")

def area(width, height):
    return width * height

def print_welcome(name):
    print("Welcome", name)

hello()
hello()

print_welcome("Fred")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))

cu ieșirea fiind:

Hello
Hello
Welcome Fred
width = 4  height = 5  area = 20

Acest exemplu arată mai multe lucruri pe care le puteți face cu funcții. Observați că nu puteți utiliza niciun argument sau două sau mai multe. Observați, de asemenea, când o funcție nu trebuie să trimită înapoi o valoare, returnarea este opțională.

Variabile în funcții

Când eliminați codul repetat, aveți adesea variabile în codul repetat. În Python, acestea sunt tratate într-un mod special. Până acum toate variabilele pe care le-am văzut sunt variabile globale. Funcțiile au un tip special de variabilă numită variabile locale. Aceste variabile există doar în timp ce funcția rulează. Când o variabilă locală are același nume cu o altă variabilă (cum ar fi o variabilă globală), variabila locală o ascunde pe cealaltă. Sună confuz? Ei bine, aceste exemple următoare (care sunt puțin artificioase) ar trebui să ajute la clarificarea lucrurilor.

a = 4
 
def print_func():
    a = 17
    print("in print_func a =", a)

print_func()
print("a = ", a)

Când rulăm, vom primi o ieșire de:

in print_func a = 17
a = 4

Atribuțiile de variabile în interiorul unei funcții nu înlocuiesc variabilele globale, ele există doar în interiorul funcției. Chiar dacă lui a i-a fost atribuită o nouă valoare în interiorul funcției, această valoare nou atribuită a fost relevantă doar pentru print_func, când funcția se termină de rulat și valorile lui a sunt imprimate din nou, vedem valorile atribuite inițial.

Iată un alt exemplu mai complex.

a_var = 10
b_var = 15
e_var = 25

def a_func(a_var):
    print("in a_func a_var =", a_var)
    b_var = 100 + a_var
    d_var = 2 * a_var
    print("in a_func b_var =", b_var)
    print("in a_func d_var =", d_var)
    print("in a_func e_var =", e_var)
    return b_var + 10

c_var = a_func(b_var)

print("a_var =", a_var)
print("b_var =", b_var)
print("c_var =", c_var)
print("d_var =", d_var)

ieșirea:

in a_func a_var =  15
in a_func b_var =  115
in a_func d_var =  30
in a_func e_var =  25
a_var =  10
b_var =  15
c_var =  125
d_var = 

Traceback (most recent call last):
 File "C:\def2.py", line 19, in <module>
   print("d_var = ", d_var)
NameError: name 'd_var' is not defined

În acest exemplu, variabilele a_var, b_var și
d_var
sunt toate variabile locale atunci când sunt în interiorul funcției a_func. După rularea instrucțiunii return b_var + 10, toate încetează să mai existe. Variabila a_var este automat o variabilă locală, deoarece este un nume de parametru. Variabilele b_var și d_var sunt variabile locale deoarece apar în stânga unui semn egal în funcție în instrucțiunile b_var = 100 + a_var și
d_var = 2 * a_var
.

În interiorul funcției a_var nu are nicio valoare atribuită. Când funcția este apelată cu c_var = a_func(b_var), 15 este atribuit lui a_var, deoarece în acel moment b_var este 15, făcând apel la funcția a_func(15). Aceasta se termină setând a_var la 15 când este în interiorul lui a_func.

După cum puteți vedea, odată ce funcția se termină de rulat, variabilele locale a_var și b_var care au ascuns variabilele globale cu același nume dispar. Apoi instrucțiunea print("a_var = ",
a_var)
afișează valoarea 10 și nu valoarea 15, deoarece variabila locală care a ascuns variabila globală a dispărut.

Un alt lucru de observat este NameError care se întâmplă la sfârșit. Aceasta apare deoarece variabila d_var nu mai există de când a_func a terminat. Toate variabilele locale sunt șterse atunci când funcția iese. Dacă doriți să obțineți ceva dintr-o funcție, atunci va trebui să utilizați return something.

Un ultim lucru de observat este că valoarea lui e_var rămâne neschimbată în interiorul a_func, deoarece nu este un parametru și nu apare niciodată în stânga unui semn egal în interiorul funcției a_func. Când o variabilă globală este accesată în interiorul unei funcții, aceasta este variabila globală din exterior.

Funcțiile permit variabile locale care există numai în interiorul funcției și pot ascunde alte variabile care se află în afara funcției.

Exemple

temperature2.py

#! /usr/bin/python
#-*-codare: utf-8 -*-
# transformă temperatura în Fahrenheit sau Celsius
 
def print_options():
    print("Options:")
    print(" 'p' print options")
    print(" 'c' convert from Celsius")
    print(" 'f' convert from Fahrenheit")
    print(" 'q' quit the program")
 
def celsius_to_fahrenheit(c_temp):
    return 9.0 / 5.0 * c_temp + 32
 
def fahrenheit_to_celsius(f_temp):
    return (f_temp - 32.0) * 5.0 / 9.0
 
choice = "p"
while choice != "q":
    if choice == "c":
        c_temp = float(input("Celsius temperature: "))
        print("Fahrenheit:", celsius_to_fahrenheit(c_temp))
        choice = input("option: ")
    elif choice == "f":
        f_temp = float(input("Fahrenheit temperature: "))
        print("Celsius:", fahrenheit_to_celsius(f_temp))
        choice = input("option: ")
    else:
        choice = "p"    #alegere alternativă != "q": astfel încât imprimă 
                        #când intra ceva neașteptat
        print_options()
        choice = input("option: ")

La rulare:

Options:
 'p' print options
 'c' convert from celsius
 'f' convert from fahrenheit
 'q' quit the program
option: c
Celsius temperature: 30 
Fahrenheit: 86.0
option: f
Fahrenheit temperature: 60
Celsius: 15.5555555556
option: q

area2.py

#! /usr/bin/python
#-*-codare: utf-8 -*-
# calculează o zonă dreptunghiulară dată

def hello():
    print('Hello!')
 
def area(width, height):
    return width * height
 
def print_welcome(name):
    print('Welcome,', name)
 
def positive_input(prompt):
    number = float(input(prompt))
    while number <= 0:
        print('Must be a positive number')
        number = float(input(prompt))
    return number
 
name = input('Your Name: ')
hello()
print_welcome(name)
print()
print('To find the area of a rectangle,')
print('enter the width and height below.')
print()
w = positive_input('Width: ')
h = positive_input('Height: ')
 
print('Width =', w, ' Height =', h, ' so Area =', area(w, h))

La rulare:

Your Name: Josh
Hello!
Welcome, Josh

To find the area of a rectangle,
enter the width and height below.

Width: -4
Must be a positive number
Width: 4
Height: 3
Width = 4  Height = 3  so Area = 12

Exerciții

Rescrieți programul area2.py din exemplele de mai sus pentru a avea o funcție separată pentru aria unui pătrat, aria unui dreptunghi și aria unui cerc (3.14
* radius**2
). Acest program ar trebui să includă o interfață de meniu.

Soluţie

def square(L):
    return L * L

def rectangle(width , height):
    return width * height

def circle(radius):
    return 3.14159 * radius ** 2

def options():
    print()
    print("Options:")
    print("s = calculate the area of a square.")
    print("c = calculate the area of a circle.")
    print("r = calculate the area of a rectangle.")
    print("q = quit")
    print()

print("This program will calculate the area of a square, circle or rectangle.")
choice = "x"
options()
while choice != "q":
    choice = input("Please enter your choice: ")
    if choice == "s":
        L = float(input("Length of square side: "))
        print("The area of this square is", square(L))
        options()
    elif choice == "c":
        radius = float(input("Radius of the circle: "))
        print("The area of the circle is", circle(radius))
        options()
    elif choice == "r":
        width = float(input("Width of the rectangle: "))
        height = float(input("Height of the rectangle: "))
        print("The area of the rectangle is", rectangle(width, height))
        options()
    elif choice == "q":
        print(" ",end="")
    else:
        print("Unrecognized option.")
        options()

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Big Data
Big Data

Odată cu creșterea volumului de date pe Internet, în media socială, cloud computing, dispozitive mobile și date guvernamentale, Big Data devine în același timp o amenințare și o oportunitate în ceea ce privește gestionarea și utilizarea acestor date, menținând în … Citeşte mai mult

Nu a fost votat 14.29 lei52.53 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Introducere în inteligența artificială
Introducere în inteligența artificială

Inteligența artificială s-a dezvoltat exploziv în ultimii ani, facilitând luarea deciziilor inteligente și automate în cadrul scenariilor de implementare. Inteligența artificială se referă la un ecosistem de modele și tehnologii pentru percepție, raționament, interacțiune și învățare.  Asistăm la o convergență … Citeşte mai mult

Nu a fost votat 14.29 lei25.05 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Ghid pagini Facebook – Campanii de promovare pe Facebook
Ghid pagini Facebook – Campanii de promovare pe Facebook

Paginile Facebook sunt cea mai simplă modalitate de a dezvolta o afacere online. Sunt gratuite, relativ ușor de configurat, și foarte flexibile. Indiferent dacă vrei să vinzi un produs sau un serviciu, sau să promovezi o organizaţie, o idee sau … Citeşte mai mult

Nu a fost votat 19.07 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *