Cách gọi một hàm trong Python (Thí dụ)

⚡ Tóm tắt thông minh

Các chức năng trong Python Chúng là các khối mã có thể tái sử dụng, chạy khi được gọi và được định nghĩa bằng câu lệnh `def`. Chúng chấp nhận các đối số, trả về giá trị và dựa vào việc thụt lề nhất quán để nhóm các câu lệnh thuộc về từng hàm.

  • 🧩 câu lệnh def: Một hàm được định nghĩa bằng từ khóa `def`, tên hàm và dấu ngoặc đơn, theo sau là dấu hai chấm để mở khối lệnh được thụt lề.
  • 📞 Chức năng gọi: Việc viết tên hàm kèm theo dấu ngoặc đơn sẽ thực thi mã của hàm đó, do đó logic tương tự có thể được sử dụng lại nhiều lần.
  • ⌨️ Thụt lề: Python Nó nhóm phần thân hàm bằng cách sử dụng thụt lề nhất quán thay vì dấu ngoặc nhọn, vì vậy việc thiếu một khoảng trắng sẽ gây ra lỗi IndentationError.
  • 🎯 đối số: Các giá trị được truyền bên trong dấu ngoặc đơn trở thành tham số, và các giá trị mặc định hoặc đối số từ khóa giúp cho mỗi lệnh gọi trở nên linh hoạt.
  • ↩️ Giá trị trả về: Câu lệnh `return` trả về kết quả cho người gọi; nếu không có nó, hàm sẽ trả về `None`.
  • 🤖 Hỗ trợ AI: Các trợ lý AI như GitHub Copilot tạo ra các cấu trúc hàm, đối số và chuỗi tài liệu từ một lời nhắc ngắn gọn.

Cách gọi một hàm trong Python

Chức năng trong là gì Python?

A Chức năng trong Python Là một đoạn mã được thực thi khi được tham chiếu. Nó được sử dụng để sử dụng đoạn mã đó ở nhiều vị trí khác nhau trong chương trình. Nó cũng được gọi là một phương thức hoặc một thủ tục. Python Nó cung cấp nhiều hàm tích hợp sẵn như print(), input(), compile() và exec(), nhưng cũng cho phép bạn tự do tạo ra các hàm của riêng mình.

Cách định nghĩa và gọi hàm trong Python

Một chức năng trong Python được định nghĩa bởi câu lệnh “def” theo sau là tên hàm và dấu ngoặc đơn ( () ).

Ví dụ:

Chúng ta hãy định nghĩa một hàm bằng cách sử dụng lệnh “def func1():” và gọi hàm đó. Kết quả đầu ra của hàm sẽ là “Tôi đang học Python chức năng".

Xác định và gọi hàm trong Python

Lệnh gọi hàm func1() thực thi hàm def func1(): của chúng ta và in ra lệnh “Tôi đang học” Python Chức năng None.”

Có một bộ quy tắc trong Python lập trình để xác định một hàm.

  • Mọi đối số hoặc tham số đầu vào đều phải được đặt trong dấu ngoặc đơn này.
  • Câu lệnh đầu tiên của hàm có thể là một câu lệnh tùy chọn — chuỗi tài liệu hoặc chuỗi mô tả hàm.
  • Mã lệnh bên trong mỗi hàm bắt đầu bằng dấu hai chấm (:) và cần được thụt lề (bằng dấu cách).
  • Câu lệnh return (biểu thức) thoát khỏi một hàm, tùy chọn trả về một giá trị cho người gọi. Câu lệnh return không có đối số tương đương với return None.

Ý nghĩa của việc thụt lề (dấu cách) trong Python

Trước khi chúng ta làm quen với Python các hàm, điều quan trọng là chúng ta phải hiểu quy tắc thụt lề để khai báo Python các chức năng, và các quy tắc này áp dụng cho các yếu tố khác của Python Ngoài ra, ví dụ như khai báo điều kiện, vòng lặp hoặc biến.

Python Nó tuân theo một kiểu thụt lề cụ thể để định nghĩa mã. Vì vậy, Python Các hàm không có bất kỳ dấu ngoặc nhọn nào để chỉ ra điểm bắt đầu và kết thúc, chúng phải dựa vào thụt lề. Ở đây, chúng ta lấy một ví dụ đơn giản với lệnh “print”. Khi ta viết hàm “print” ngay bên dưới dòng `def func1():`, nó sẽ hiển thị lỗi “indentation error: expected an indented block”.

Xác định và gọi hàm trong Python

Bây giờ, khi bạn thêm khoảng trắng vào trước hàm “print”, nó sẽ in ra như mong đợi.

Xác định và gọi hàm trong Python

Ít nhất một khoảng thụt lề là đủ để mã của bạn hoạt động thành công. Nhưng theo kinh nghiệm tốt nhất, nên để khoảng thụt lề khoảng 3-4 khoảng trắng khi gọi hàm.

Điều cần thiết là khi khai báo thụt lề, bạn phải duy trì cùng một mức thụt lề cho phần còn lại của mã. Ví dụ, trong ảnh chụp màn hình bên dưới, khi chúng ta gọi một câu lệnh khác “still in func1” và nó không được khai báo ngay bên dưới câu lệnh print đầu tiên, nó sẽ hiển thị lỗi thụt lề: “unindent does not match any other indentation level.”

Xác định và gọi hàm trong Python

Bây giờ, khi chúng ta áp dụng cùng một kiểu thụt lề cho cả hai câu lệnh và căn chỉnh chúng trên cùng một dòng, nó sẽ cho ra kết quả như mong đợi.

Xác định và gọi hàm trong Python

Giá trị trả về của hàm như thế nào?

Lệnh trả về trong Python Tham số này chỉ định giá trị cần trả về cho hàm gọi. Chúng ta hãy hiểu điều này qua ví dụ sau.

Bước 1) Hàm không trả về bất cứ thứ gì

Ở đây ta thấy khi nào một hàm không "trả về". Ví dụ, ta muốn tính bình phương của 4, và khi đoạn mã được thực thi, kết quả sẽ là "16". Nó cho kết quả đó khi ta chỉ sử dụng đoạn mã "print x*x", nhưng khi gọi hàm "print square" thì lại trả về "None". Điều này là do khi gọi hàm, quá trình đệ quy không diễn ra và nó thoát ra khỏi hàm. Python Trả về “None” nếu bỏ qua phần cuối của hàm.

Xác định và gọi hàm trong Python

Bước 2) Thay thế lệnh in bằng lệnh gán.

Để làm rõ hơn, chúng ta thay thế lệnh in bằng lệnh gán. Hãy cùng kiểm tra kết quả.

Xác định và gọi hàm trong Python

Khi bạn chạy lệnh “print square (4)”, nó thực sự trả về giá trị của đối tượng. Vì chúng ta không có bất kỳ hàm cụ thể nào để chạy ở đây, nên nó trả về “None”.

Bước 3) Sử dụng hàm 'return' và thực thi đoạn mã.

Bây giờ, chúng ta sẽ xem cách lấy kết quả bằng lệnh “return”. Khi bạn sử dụng hàm “return” và thực thi đoạn mã, nó sẽ trả về kết quả “16”.

Xác định và gọi hàm trong Python

Bước 4) Chạy lệnh 'in hình vuông'

Các chức năng trong Python bản thân chúng là một đối tượng và một đối tượng có một giá trị nào đó. Ở đây chúng ta sẽ xem làm thế nào Python Biến này xử lý một đối tượng. Khi bạn chạy lệnh “print square”, nó sẽ trả về giá trị của đối tượng đó. Vì chúng ta không truyền bất kỳ đối số nào, nên chúng ta không có hàm cụ thể nào để chạy ở đây, do đó nó trả về giá trị mặc định (0x021B2D30), đó là vị trí của đối tượng. Trong thực tế, Python Với chương trình này, có lẽ bạn sẽ không bao giờ cần phải làm điều đó.

Xác định và gọi hàm trong Python

Đối số trong hàm

Tham số là giá trị được truyền vào hàm khi hàm đó được gọi.

Nói cách khác, ở phía hàm gọi thì nó là một đối số, còn ở phía hàm thực thi thì nó là một tham số.

Chúng ta hãy xem làm thế nào Python Các lập luận có hiệu quả.

Bước 1) Các tham số được khai báo trong định nghĩa hàm. Khi gọi hàm, bạn có thể truyền giá trị cho các tham số đó như được hiển thị bên dưới.

Xác định và gọi hàm trong Python

Bước 2) Để khai báo giá trị mặc định cho một đối số, hãy gán giá trị cho nó tại phần định nghĩa hàm.

Xác định và gọi hàm trong Python

Ví dụ: x không có giá trị mặc định. Giá trị mặc định của y=0. Khi ta chỉ cung cấp một đối số khi gọi hàm nhân, Python gán giá trị được cung cấp cho x trong khi giữ nguyênping Giá trị của y = 0. Do đó, tích của x*y = 0.

Xác định và gọi hàm trong Python

Bước 3) Lần này chúng ta sẽ thay đổi giá trị thành y=2 thay vì giá trị mặc định y=0, và nó sẽ trả về kết quả là (4×2)=8.

Xác định và gọi hàm trong Python

Bước 4) Bạn cũng có thể thay đổi thứ tự truyền các tham số. PythonỞ đây, chúng ta đã đảo ngược thứ tự các giá trị x và y thành x=4 và y=2.

Xác định và gọi hàm trong Python

Bước 5) Nhiều đối số cũng có thể được truyền dưới dạng mảng. Trong ví dụ này, chúng ta gọi nhiều đối số (1,2,3,4,5) bằng cách gọi hàm (*args).

Ví dụ: Chúng ta đã khai báo nhiều đối số là các số (1,2,3,4,5); khi chúng ta gọi hàm (*args), nó sẽ in ra kết quả là (1,2,3,4,5).

Xác định và gọi hàm trong Python

Lời khuyên:

  • In Python 2.7, tính năng nạp chồng hàm không được hỗ trợ. Nạp chồng hàm là khả năng tạo ra nhiều phương thức có cùng tên nhưng có cách triển khai khác nhau. Nạp chồng hàm được hỗ trợ đầy đủ trong... Python 3.
  • Có sự nhầm lẫn khá lớn giữa phương thức và hàm. Phương thức trong Python Các thuộc tính được liên kết với các thể hiện đối tượng, trong khi các hàm thì không. Khi Python gọi một phương thức, nó liên kết tham số đầu tiên của lệnh gọi đó với tham chiếu đối tượng thích hợp. Nói một cách đơn giản, một chức năng độc lập trong Python là một “hàm”, trong khi hàm là thuộc tính của một lớp hoặc một thể hiện là một “phương thức”.

Đây là đầy đủ Python 3 mã

#define a function
def func1():
   print ("I am learning Python function")
   print ("still in func1")
   
func1()

def square(x):
  	return x*x
print(square(4))

def multiply(x,y=0):
	print("value of x=",x)
	print("value of y=",y)
    
	return x*y
  
print(multiply(y=2,x=4))

Đây là đầy đủ Python 2 mã

#define a function
def func1():
   print " I am learning Python function"
   print " still in func1"
   
func1()

def square(x):
  	return x*x
print square(4)

def multiply(x,y=0):
	print"value of x=",x
	print"value of y=",y
    
	return x*y
  
print multiply(y=2,x=4)

Câu Hỏi Thường Gặp

Đúng. A Python Hàm có thể trả về nhiều giá trị bằng cách phân tách chúng bằng dấu phẩy sau từ khóa `return`. Python đóng gói chúng vào một bộ dữ liệu (tuple), mà người gọi có thể tách ra thành các biến riêng biệt, ví dụ: a, b = func().

*args thu thập các đối số vị trí bổ sung vào một bộ dữ liệu (tuple), trong khi **kwargs thu thập các đối số từ khóa bổ sung vào một từ điển (dictionary). Cả hai đều cho phép một hàm chấp nhận số lượng đầu vào thay đổi, và tên gọi args và kwargs chỉ là quy ước, không phải là yêu cầu bắt buộc.

Docstring là một chuỗi ký tự được đặt làm câu lệnh đầu tiên bên trong một hàm để mô tả chức năng của hàm đó. Nó được viết trong dấu ngoặc kép ba lần và có thể được đọc trong quá trình thực thi thông qua thuộc tính __doc__ của hàm hoặc hàm help().

Lambda là một hàm ẩn danh nhỏ được định nghĩa trong một dòng bằng từ khóa lambda thay vì def. Nó phù hợp với các logic ngắn gọn, dùng một lần được truyền cho các hàm như map(), filter() và sorted(). Xem thêm tại đây hàm lambda hướng dẫn.

Đúng vậy. Một hàm tự gọi chính nó là một hàm đệ quy. Đệ quy giải quyết các vấn đề được chia thành các vấn đề con nhỏ hơn, tương tự nhau, chẳng hạn như giai thừa. Mỗi hàm đệ quy cần một trường hợp cơ sở để dừng các lời gọi, nếu không thì sẽ không có trường hợp cơ sở nào khác xảy ra. Python Gây ra lỗi RecursionError.

Biến cục bộ được tạo ra bên trong một hàm và chỉ tồn tại trong suốt thời gian hàm đó chạy. Biến toàn cục được định nghĩa bên ngoài tất cả các hàm và có thể được nhìn thấy ở mọi nơi. Để thay đổi một biến toàn cục bên trong một hàm, trước tiên hãy khai báo nó bằng từ khóa `global`.

GitHub Copilot đề xuất toàn bộ thân hàm từ tên hàm hoặc một đoạn chú thích ngắn, bao gồm các tham số, câu lệnh return và docstring. Nó cũng đề xuất xử lý các trường hợp ngoại lệ và kiểm thử, cho phép bạn tập trung vào logic thay vì kiểu dữ liệu.ping Các khối định nghĩa mẫu.

Các hàm tổ chức mã AI và máy học thành các bước có thể tái sử dụng như tải dữ liệu, tiền xử lý, huấn luyện và đánh giá. Chúng giúp cho các thí nghiệm dễ đọc và dễ kiểm thử, và các framework như TensorFlow và scikit-learn thể hiện hầu hết hoạt động của chúng thông qua các hàm được đặt tên rõ ràng mà bạn gọi.

Tóm tắt bài viết này với: