HomeLập trìnhPythonHướng dẫn hàm...

Hướng dẫn hàm Python với các ví dụ


Giới thiệu về Hàm trong Python

Một hàm cho phép bạn xác định một khối mã có thể tái sử dụng để có thể thực thi nhiều lần trong chương trình của bạn.

Các chức năng cho phép bạn tạo nhiều giải pháp mô-đun và DRY hơn cho các vấn đề phức tạp.

Mặc dù Python đã cung cấp nhiều chức năng tích hợp sẵn như print()len()bạn cũng có thể xác định các chức năng của riêng mình để sử dụng trong các dự án của mình.

Một trong những lợi thế lớn của việc sử dụng hàm trong mã của bạn là nó làm giảm tổng số dòng mã trong dự án của bạn.

cú pháp

Trong Python, một định nghĩa hàm có các tính năng sau:

  1. từ khóa def
  2. một tên chức năng
  3. dấu ngoặc đơn'()’ và trong các tham số đầu vào của dấu ngoặc đơn, mặc dù các tham số đầu vào là tùy chọn.
  4. Một dấu hai chấm ‘:’
  5. một số khối mã để thực thi
  6. một tuyên bố trở lại (tùy chọn)
# 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

Hàm là các khối mã có thể được sử dụng lại đơn giản bằng cách gọi hàm. Điều này cho phép sử dụng lại mã đơn giản, thanh lịch mà không cần viết lại các phần mã một cách rõ ràng. Điều này làm cho mã dễ đọc hơn, giúp gỡ lỗi dễ dàng hơn và hạn chế lỗi đánh máy.

Các hàm trong Python được tạo bằng cách sử dụng def từ khóa, theo sau là tên hàm và các tham số hàm bên trong dấu ngoặc đơn.

Một hàm luôn trả về một giá trị, return từ khóa được hàm sử dụng để trả về giá trị, nếu bạn không muốn trả về giá trị nào thì giá trị mặc định None sẽ trở lại.

Tên hàm được sử dụng để gọi hàm, truyền các tham số cần thiết bên trong dấu ngoặc đơn.

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

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

Bạn có thể xác định các giá trị mặc định cho các tham số, theo cách đó Python sẽ hiểu rằng giá trị của tham số đó là giá trị mặc định nếu không có giá trị nào được cung cấp.

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

result = sum(1)
# result = 4

Bạn có thể chuyển các tham số theo thứ tự bạn muốn bằng cách sử dụng tên của tham số.

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

Tuy nhiên, không thể chuyển đối số từ khóa trước đối số không phải từ khóa

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

Hàm cũng là Đối tượng, vì vậy bạn có thể gán chúng cho một biến và sử dụng biến đó như một hàm.

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

ghi chú

Nếu một định nghĩa hàm bao gồm các tham số, bạn phải cung cấp cùng một số lượng tham số khi gọi hàm.

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

Khối mã mà hàm sẽ chạy bao gồm tất cả các câu lệnh được thụt vào trong hàm.

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

Các biến được định nghĩa trong một hàm chỉ tồn tại trong phạm vi của hàm đó.

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

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

Python chỉ diễn giải khối hàm khi hàm được gọi chứ không phải khi hàm được xác định. Vì vậy, ngay cả khi khối định nghĩa hàm chứa một số loại lỗi, trình thông dịch python sẽ chỉ ra điều đó khi hàm được gọi.

Đọc thêm  Python cho vòng lặp - Ví dụ cho tôi trong phạm vi

Bây giờ hãy xem xét một số chức năng cụ thể với các ví dụ.

hàm tối đa ()

max() là một hàm tích hợp sẵn trong Python 3. Nó trả về mục lớn nhất trong một lần lặp hoặc giá trị lớn nhất trong hai hoặc nhiều đối số.

Tranh luận

Hàm này nhận hai hoặc nhiều số hoặc bất kỳ loại số lặp nào làm đối số. Trong khi đưa ra một iterable làm đối số, chúng ta phải đảm bảo rằng tất cả các phần tử trong iterable đều cùng loại. Điều này có nghĩa là chúng ta không thể chuyển một danh sách có cả giá trị chuỗi và số nguyên được lưu trữ trong đó. Cú pháp: max(có thể lặp lại, *có thể lặp lại[,key, default]) tối đa(arg1, arg2, *args[, key])

Đối số hợp lệ:

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

Đối số không hợp lệ:

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

Giá trị trả về

Mục lớn nhất trong iterable được trả về. Nếu hai hoặc nhiều đối số vị trí được cung cấp, đối số vị trí lớn nhất sẽ được trả về. Nếu iterable trống và mặc định không được cung cấp, một ValueError được nuôi dưỡng.

Mẫu mã

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

Mã vận hành

Tài liệu chính thức

hàm tối thiểu ()

min() là một hàm tích hợp sẵn trong Python 3. Nó trả về mục nhỏ nhất trong một lần lặp hoặc mục nhỏ nhất trong số hai hoặc nhiều đối số.

Tranh luận

Hàm này nhận hai hoặc nhiều số hoặc bất kỳ loại số lặp nào làm đối số. Trong khi đưa ra một iterable làm đối số, chúng ta phải đảm bảo rằng tất cả các phần tử trong iterable đều cùng loại. Điều này có nghĩa là chúng ta không thể chuyển một danh sách có cả giá trị chuỗi và số nguyên được lưu trữ trong đó.

Đối số hợp lệ:

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

Đối số không hợp lệ:

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

Giá trị trả về

Mục nhỏ nhất trong iterable được trả về. Nếu hai hoặc nhiều đối số vị trí được cung cấp, đối số vị trí nhỏ nhất
Được trả lại. Nếu iterable trống và mặc định không được cung cấp, thì ValueError sẽ xuất hiện.

Mẫu mã

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

Mã vận hành

Đọc thêm  Python If-Else – Ví dụ về cú pháp có điều kiện của Python

Tài liệu chính thức

divmod() là một hàm tích hợp trong Python 3, trả về thương và số dư khi chia số a bằng số b. Nó nhận hai số làm đối số a & b. Đối số không thể là một số phức.

Tranh luận

Phải mất hai đối số a & b – số nguyên hoặc số thập phân. Nó không được là số phức.

Giá trị trả về

Giá trị trả về sẽ là cặp số dương gồm thương và dư có được khi chia a qua b. Trong trường hợp các loại toán hạng hỗn hợp, các quy tắc cho toán tử số học nhị phân sẽ được áp dụng.
Đối số số nguyêngiá trị trả về sẽ giống như (a // b, a % b).
Đối số số thập phângiá trị trả về sẽ giống như (q, a % b)ở đâu q thường là toán.sàn (a / b) nhưng có thể ít hơn 1 số.

Mẫu mã

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

REPL Nó!

Tài liệu chính thức

Hàm hex(x)

hex(x) là một hàm tích hợp trong Python 3 để chuyển đổi một số nguyên thành một chuỗi thập lục phân chữ thường có tiền tố là “0x”.

Tranh luận

Hàm này nhận một đối số, xđó phải là kiểu số nguyên.

Trở lại

Hàm này trả về một chuỗi thập lục phân chữ thường có tiền tố là “0x”.

Ví dụ

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

Mã vận hành

Tài liệu chính thức

hàm len()

len() là một hàm tích hợp sẵn trong Python 3. Phương thức này trả về độ dài (số lượng mục) của một đối tượng. Phải mất một đối số x.

Tranh luận

Phải mất một đối số, x. Đối số này có thể là một chuỗi (chẳng hạn như chuỗi, byte, bộ, danh sách hoặc phạm vi) hoặc một bộ sưu tập (chẳng hạn như từ điển, tập hợp hoặc tập hợp cố định).

Giá trị trả về

Hàm này trả về số phần tử trong đối số được truyền cho len() chức năng.

Mẫu mã

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

Mã vận hành

Tài liệu chính thức

chức năng thứ tự

ord() là một hàm tích hợp trong Python 3, để chuyển đổi chuỗi đại diện cho một ký tự Unicode thành số nguyên đại diện cho mã Unicode của ký tự đó.

Ví dụ:

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

chr chức năng

chr() là một hàm tích hợp sẵn trong Python 3, để chuyển đổi số nguyên đại diện cho mã Unicode thành một chuỗi đại diện cho một ký tự tương ứng.

Ví dụ:

>>> chr(49)
'1'

Một điều cần lưu ý rằng, nếu giá trị số nguyên được chuyển đến chr() nằm ngoài phạm vi thì ValueError sẽ xuất hiện.

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

các hàm đầu vào ()

Nhiều lần, trong một chương trình, chúng tôi cần một số thông tin đầu vào từ người dùng. Lấy đầu vào từ người dùng làm cho chương trình cảm thấy tương tác. Trong Python 3, để lấy đầu vào từ người dùng, chúng tôi có một chức năng input(). Nếu chức năng đầu vào được gọi, luồng chương trình sẽ bị dừng cho đến khi người dùng đưa ra một đầu vào và kết thúc đầu vào bằng phím quay lại. Hãy xem một số ví dụ:

Đọc thêm  Học máy trong Python – Các tính năng Scikit-Learn 0.24 mới hàng đầu mà bạn nên biết

Khi chúng tôi chỉ muốn lấy đầu vào:

inp = đầu vào ()

Mã vận hành

Để đưa ra lời nhắc bằng tin nhắn:

lời nhắcvớitin nhắn = đầu vào (”)

Mã vận hành

3. Khi chúng ta muốn lấy một số nguyên đầu vào:

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

Mã vận hành

Nếu bạn nhập một giá trị không phải là số nguyên thì Python sẽ báo lỗi ValueError. Vì vậy, bất cứ khi nào bạn sử dụng cái này, hãy đảm bảo rằng bạn cũng nắm bắt được nó. Nếu không, chương trình của bạn sẽ dừng đột ngột sau lời nhắc.

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. Khi chúng ta muốn nhập chuỗi:

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

Mã vận hành

Mặc dù vậy, đầu vào được lưu trữ theo mặc định dưới dạng chuỗi. Sử dụng str() chức năng làm cho trình đọc mã hiểu rõ rằng đầu vào sẽ là một ‘chuỗi’. Đó là một thực hành tốt để đề cập trước loại đầu vào nào sẽ được thực hiện.

Tài liệu chính thức

Cách gọi hàm trong Python

Một câu lệnh định nghĩa hàm không thực thi hàm. Việc thực thi (gọi) một hàm được thực hiện bằng cách sử dụng tên của hàm theo sau dấu ngoặc đơn kèm theo các đối số bắt buộc (nếu có).

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

Việc thực thi một hàm giới thiệu một bảng ký hiệu mới được sử dụng cho các biến cục bộ của hàm. Chính xác hơn, tất cả các phép gán biến trong một hàm đều lưu trữ giá trị trong bảng ký hiệu cục bộ; trong khi các tham chiếu biến đầu tiên tìm trong bảng ký hiệu cục bộ, sau đó trong bảng ký hiệu cục bộ của các hàm kèm theo, sau đó trong bảng ký hiệu toàn cục và cuối cùng trong bảng tên dựng sẵn. Do đó, các biến toàn cục không thể được gán trực tiếp một giá trị trong một hàm (trừ khi được đặt tên trong câu lệnh toàn cục), mặc dù chúng có thể được tham chiếu.

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

Các tham số thực tế (đối số) cho một lệnh gọi hàm được đưa vào trong bảng ký hiệu cục bộ của hàm được gọi khi nó được gọi; do đó, các đối số được truyền bằng cách gọi theo giá trị (trong đó giá trị luôn là tham chiếu đối tượng, không phải giá trị của đối tượng). Khi một chức năng gọi một chức năng khác, một bảng ký hiệu cục bộ mới được tạo cho cuộc gọi đó.

>>> 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'

Các đối số được sử dụng để gọi một hàm không thể được gán lại bởi hàm, nhưng các đối số tham chiếu đến các đối tượng có thể thay đổi có thể thay đổi giá trị của chúng:

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



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status