Keyword arguments trong Python là một cách để truyền tham số cho hàm bằng cách xác định tên của các tham số đó. Điều này giúp cho việc đọc và hiểu mã lệnh trở nên dễ dàng hơn, đồng thời cho phép chúng ta truyền các tham số theo bất kỳ thứ tự nào, không nhất thiết phải tuân theo thứ tự các tham số trong khai báo hàm.
Dưới đây là 3 ví dụ về keyword arguments:
- Ví dụ về sử dụng keyword arguments trong hàm tính toán diện tích hình chữ nhật:
def area(width, height):
return width * height
# Sử dụng keyword arguments để truyền tham số cho hàm
print(area(width=5, height=10)) # Kết quả: 50
print(area(height=10, width=5)) # Kết quả: 50
- Ví dụ về sử dụng keyword arguments để truyền các tham số mặc định cho hàm:
def print_info(name, age=30, address='Hanoi'):
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Address: {address}")
# Truyền các tham số bằng keyword arguments
print_info(name='John')
print_info(name='Jane', age=25)
print_info(name='Bob', address='New York')
- Ví dụ về sử dụng unpacking và keyword arguments để truyền các tham số cho hàm:
def print_student_info(name, age, major):
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Major: {major}")
student_info = {'name': 'John', 'age': 20, 'major': 'Computer Science'}
# Sử dụng unpacking và keyword arguments để truyền các tham số cho hàm
print_student_info(**student_info)
Trong ví dụ thứ 3, chúng ta sử dụng unpacking để chuyển đổi một dictionary thành các keyword arguments, từ đó truyền các tham số cho hàm print_student_info()
.
- Một ví dụ trong Linux là, giả sử bạn muốn tìm kiếm tất cả các file có định dạng
.txt
trong thư mục/home/user/Documents
, nhưng muốn lọc kết quả để chỉ hiển thị các file được sửa đổi trong vòng 7 ngày gần đây. Bạn có thể sử dụng keyword arguments trong moduleos
để giải quyết vấn đề này. Dưới đây là một ví dụ code sử dụng keyword arguments trong moduleos
để tìm các file có định dạng.txt
và được sửa đổi trong vòng 7 ngày gần đây trong thư mục/home/user/Documents
:
import os
import datetime
def search_files(directory, extension='.txt', days=7):
result = []
time_threshold = datetime.datetime.now() - datetime.timedelta(days=days)
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(extension):
filepath = os.path.join(root, file)
file_time = datetime.datetime.fromtimestamp(os.path.getmtime(filepath))
if file_time > time_threshold:
result.append(filepath)
return result
# Tìm kiếm tất cả các file có định dạng '.txt' trong thư mục /home/user/Documents và được sửa đổi trong vòng 7 ngày gần đây
files = search_files('/home/user/Documents', extension='.txt', days=7)
print(files)
Ở đây, search_files
là một hàm có 3 keyword arguments directory
, extension
và days
. Nếu các keyword arguments không được chỉ định, giá trị mặc định của chúng lần lượt là '.'
, '.txt'
và 7
. Trong ví dụ trên, ta chỉ định rõ các giá trị cho các keyword arguments để tìm các file có định dạng .txt
và được sửa đổi trong vòng 7 ngày gần đây trong thư mục /home/user/Documents
.