Chà, chúng ta đã học về cách chúng ta có thể tạo các chức năng của riêng mình. Nhưng một câu hỏi có thể nảy ra trong đầu một số người ngẫu nhiên, tại sao chúng ta lại tạo ra chức năng của riêng mình?
Ưu điểm của hàm trong Python
Vì vậy, ở đây, chúng ta sẽ xem xét những ưu điểm khác nhau của việc viết các hàm của riêng mình
- Giảm sự trùng lặp của mã
Chà, chúng ta có thể sử dụng chức năng in bao nhiêu lần tùy thích trong chương trình của mình. Nhưng chức năng được viết một lần. Theo cách tương tự, chúng ta cũng chỉ cần viết hàm một lần và chúng ta có thể gọi hàm bao nhiêu lần tùy ý trong chương trình của mình. Vì vậy, chúng ta không cần phải viết cùng một mã mỗi lần. Chúng ta chỉ viết một lần vào hàm, sau đó gọi hàm bao nhiêu lần tùy thích
Chỉ cần nhớ rằng mỗi khi bạn muốn sử dụng chức năng này, bạn cần gọi nó
- Cải thiện khả năng sử dụng lại mã
Chà, chúng ta chỉ viết hàm một lần và chúng ta có thể sử dụng hàm đó bao nhiêu lần tùy thích. Vì vậy, điều này dẫn đến khả năng tái sử dụng tốt mã trong chương trình
- mã rõ ràng hơn
Khi chúng ta viết các hàm, mã của chúng ta trông rõ ràng và có tổ chức hơn. Nếu trong trường hợp có sự cố xảy ra trong mã, bạn cũng sẽ dễ dàng tìm ra điều gì sai và ở đâu.
- Các vấn đề lớn hơn được chia thành các vấn đề nhỏ hơn
Nếu chúng tôi đang làm việc để tạo phần mềm, chúng tôi có thể làm việc riêng trên các thành phần và tiện ích khác nhau của phần mềm. Vì vậy, nếu chúng ta tạo một máy tính, chúng ta có nhiều phép toán, như cộng, trừ, nhân, chia, v.v. Chúng ta có thể giải nó thành toàn bộ, nhưng chúng ta cũng có thể chia nó thành các bài toán nhỏ hơn, chẳng hạn như một hàm khác cho phép cộng, phép nhân, phép chia, phép trừ, v.v.
Vì vậy, đây là một số lợi thế của việc sử dụng các chức năng trong các chương trình của chúng tôi. Chà, chúng ta cũng sẽ tạo các hàm bất cứ nơi nào được yêu cầu trong chương trình và một lần nữa chúng ta sẽ khám phá thêm khái niệm về hàm, vì vậy bạn sẽ biết thêm một số điều mới về các hàm. Vì vậy, chúng ta hãy bắt đầu ngay bây giờ
Hàm là một khái niệm quan trọng trong thế giới lập trình. Trong bài viết này, chúng ta sẽ khám phá các hàm Python. Bạn sẽ tìm hiểu lý do tại sao chúng lại quan trọng như vậy, cách xác định hàm bằng từ khóa def của Python, cách gọi hàm và chúng ta sẽ tìm hiểu về một chủ đề phát sinh khi sử dụng hàm. phạm vi biến đổi
Mục lục
Hàm trong Python là gì?
Hãy xác định chính xác chức năng là gì
Chức năngHàm Python là một phần được đặt tên của chương trình thực hiện một tác vụ cụ thể và trả về một giá trị tùy chọnCác hàm là các khối xây dựng thực sự của bất kỳ ngôn ngữ lập trình nào. Chúng tôi định nghĩa một hàm Python với từ khóa
>>> result = print['Hello'] Hello >>> print[result] None2. Nhưng trước khi chúng ta bắt đầu làm như vậy, trước tiên chúng ta hãy điểm qua những ưu điểm của các hàm và hãy xem xét một số hàm tích hợp sẵn mà bạn có thể đã biết
Ưu điểm của việc sử dụng chức năng
tái sử dụng mã
Hàm Python có thể được định nghĩa một lần và được sử dụng nhiều lần. Vì vậy, nó hỗ trợ tái sử dụng mã. bạn không muốn viết cùng một đoạn mã nhiều lần
Các hàm là một cách tuyệt vời để giữ cho mã của bạn ngắn gọn, súc tích và dễ đọc. Bằng cách đặt cho một hàm một cái tên được lựa chọn tốt, mã của bạn sẽ trở nên dễ đọc hơn vì tên hàm giải thích trực tiếp điều gì sẽ xảy ra. Bằng cách này, những người khác [hoặc bạn trong tương lai] có thể đọc mã của bạn và không cần nhìn vào tất cả mã, vẫn hiểu mã đó đang làm gì nhờ các tên hàm được chọn tốt
Các hình thức sử dụng lại mã khác sẽ được giải thích sau. e. g. , bạn cũng có thể nhóm mã thành các mô-đun và gói
Thông số
Các hàm chấp nhận một tham số và bạn sẽ thấy nó hoạt động như thế nào trong giây lát. Ưu điểm lớn ở đây là bạn có thể thay đổi hành vi của hàm bằng cách thay đổi tham số
Giá trị trả về
Một hàm có thể trả về một giá trị. Giá trị này thường là kết quả của một số tính toán hoặc hoạt động. Trên thực tế, một hàm Python thậm chí có thể trả về nhiều giá trị
Các hàm Python tích hợp
Trước khi bắt đầu tự định nghĩa các hàm, chúng ta sẽ xem xét một số hàm có sẵn của Python. Hãy bắt đầu với chức năng tích hợp nổi tiếng nhất, được gọi là
>>> result = print['Hello'] Hello >>> print[result] None3
>>> print['Hello, readers!'] Hello, readers! >>> print[15] 15
Print lấy một đối số và in nó ra màn hình
Như đã nêu trong định nghĩa của chúng tôi, các chức năng có thể tùy ý trả về một giá trị. Tuy nhiên,
>>> result = print['Hello'] Hello >>> print[result] None3 không trả lại bất cứ thứ gì. Bởi vì nó in một cái gì đó lên màn hình, nó có thể trông giống như vậy, nhưng không phải vậy. Chúng ta có thể kiểm tra điều này bằng cách gán kết quả của câu lệnh in cho một biến Python
>>> result = print['Hello'] Hello >>> print[result] None
>>> result = print['Hello'] Hello >>> print[result] None5 là một loại giá trị đặc biệt trong Python, về cơ bản có nghĩa là 'không có gì'. ’
Một hàm tích hợp khác trả về giá trị là
>>> result = print['Hello'] Hello >>> print[result] None6. Nó trả về độ dài của bất cứ thứ gì bạn cho nó ăn
>>> mylength = len['Hello'] >>> print[mylength] 5
Tạo một hàm Python
Bây giờ chúng ta đã biết cách sử dụng một hàm, hãy tự tạo một hàm đơn giản. Để làm như vậy, chúng tôi sử dụng từ khóa
>>> result = print['Hello'] Hello >>> print[result] None2 của Python
>>> def say_hi[]: .. print['Hi!'] ... >>> say_hi[] Hi!
Nó chỉ là một vài dòng, nhưng rất nhiều đang xảy ra. Hãy mổ xẻ điều này
- Đầu tiên chúng ta xem từ khóa
>>> result = print['Hello'] Hello >>> print[result] None
2, đây là từ khóa của Python để định nghĩa một hàm - Tiếp đến là tên hàm của chúng ta, say_hi
- Sau đó, chúng tôi bắt gặp hai dấu ngoặc đơn, [], cho biết rằng chức năng này không chấp nhận bất kỳ tham số nào [không giống như
>>> result = print['Hello'] Hello >>> print[result] None
3 và>>> mylength = len['Hello'] >>> print[mylength] 5
0] - Chúng tôi kết thúc dòng bằng dấu hai chấm [. ]
- Và cuối cùng, chúng tôi bắt gặp một tính năng khiến Python khác biệt với nhiều ngôn ngữ lập trình khác. vết lõm
thụt đầu dòng
Python sử dụng thụt đầu dòng để phân biệt các khối mã thuộc về nhau. Các dòng liên tiếp có thụt đầu dòng bằng nhau là một phần của cùng một khối mã
Để nói với Python rằng các dòng sau là phần thân của hàm của chúng ta, chúng ta cần thụt lề chúng. Bạn thụt lề các dòng bằng phím TAB trên bàn phím. Trong Python, bạn nên sử dụng bốn khoảng trắng để thụt đầu dòng. Toàn bộ cộng đồng Python làm như vậy. Nếu bạn nhấn phím TAB, trình bao tương tác Python [REPL] và tất cả các trình soạn thảo phù hợp sẽ tự động thụt vào bốn dấu cách
Quay lại chức năng của chúng tôi. nó chỉ có một dòng mã trong phần thân của nó. lệnh in. Sau đó, chúng tôi nhấn enter thêm một lần nữa để cho Python REPL biết rằng đây là phần cuối của chức năng. Cái này quan trọng. Một chức năng phải luôn được theo sau bởi một dòng trống để báo hiệu kết thúc chức năng. Cuối cùng, chúng ta có thể gọi hàm của mình bằng
>>> mylength = len['Hello'] >>> print[mylength] 51
Các tham số và đối số của hàm Python
Chúng ta có thể làm cho điều này trở nên thú vị hơn bằng cách cho phép một đối số được chuyển đến hàm của chúng ta. Một lần nữa, chúng tôi định nghĩa một hàm với def, nhưng chúng tôi thêm một tên biến vào giữa các dấu ngoặc đơn
>>> def say_hi[name]: .. print['Hi', name] ... >>> say_hi['Erik'] Hi Erik
Hàm của chúng tôi hiện chấp nhận một giá trị, giá trị này được gán cho tên biến. Chúng tôi gọi các biến như vậy là tham số, trong khi giá trị thực mà chúng tôi cung cấp [‘Erik’] được gọi là đối số
Tham số và đối số Một hàm Python có thể có tham số. Các giá trị chúng ta chuyển qua các tham số này được gọi là đối sốNhư bạn có thể thấy,
>>> mylength = len['Hello'] >>> print[mylength] 52 chấp nhận nhiều đối số, được phân tách bằng dấu phẩy. Điều này cho phép chúng tôi in cả 'hi' và tên được cung cấp. Để thuận tiện cho chúng ta,
>>> mylength = len['Hello'] >>> print[mylength] 52 tự động đặt khoảng cách giữa hai chuỗi
Hàm Python có nhiều đối số
Hãy làm cho điều này thậm chí còn hoang dã hơn và xác định một hàm có nhiều đối số
>>> def welcome[name, location]: .. print["Hi", name, "welcome to", location] ... >>> welcome['Erik', 'this tutorial'] Hi Erik welcome to this tutorial
Nó không khó lắm đâu;
Trở về từ một chức năng
Một hàm chạy cho đến khi kết thúc hàm đó, sau đó Python quay trở lại nơi hàm được gọi từ đó. Trong ví dụ sau, tôi muốn bạn dự đoán đầu ra trước khi chạy nó
Dự đoán đầu ra của chương trình nàyKỳ vọng của bạn có phù hợp với thực tế không? . Một số người tại thời điểm này mong đợi được nhìn thấy dòng chữ “Hãy chào cả thế giới” hai lần. Nếu bạn là một trong số họ, đừng lo lắng và hãy tiếp tục đọc
Python theo dõi điểm mà hàm được gọi. Trong trường hợp của chúng tôi, nó ở dòng 5. Sau khi được gọi, Python chạy khối mã bên trong từng dòng chức năng cho đến khi nó kết thúc chức năng đó. Và khi kết thúc hàm, Python sẽ nhảy trở lại dòng ngay sau khi hàm được gọi từ đó. dòng 6
Nói ngắn gọn. một lệnh gọi hàm không phải là một bước nhảy hoặc 'đi tới', mà là một lệnh gọi đến một đoạn mã có thể tái sử dụng, mã này sẽ quay trở lại nơi nó được gọi từ đó. Lời gọi hàm cũng là một biểu thức. hầu hết các chức năng trả về một giá trị
Trả về giá trị
Cho đến nay, chức năng của chúng tôi chỉ in một cái gì đó và không trả lại gì. Điều làm cho các chức năng trở nên hữu ích hơn rất nhiều là khả năng trả về một giá trị. Hãy xem một ví dụ về cách một hàm Python có thể trả về một giá trị
Đây là cách bạn trả về một giá trị từ hàm PythonNhư bạn có thể thấy, chúng tôi sử dụng từ khóa
>>> mylength = len['Hello'] >>> print[mylength] 54 để trả về một giá trị từ hàm của chúng tôi. Các hàm trả về một giá trị có thể được sử dụng ở mọi nơi chúng ta có thể sử dụng một biểu thức. Trong ví dụ trên, chúng ta có thể gán giá trị trả về cho biến
>>> mylength = len['Hello'] >>> print[mylength] 55
Chúng ta cũng có thể sử dụng hàm trong câu lệnh if. Ví dụ
if add[1, 1] == 2: print["That's what you'd expect!"]
Tuyên bố trả lại trống
Nếu hàm của bạn không trả về bất cứ thứ gì, nhưng bạn vẫn muốn trả về từ hàm, bạn có thể sử dụng câu lệnh trả về rỗng. Đây là một ví dụ ngớ ngẩn
def optional_greeter[name]: if name.startswith['X']: # We don't greet people with weird names :p return print['Hi there, ', name] optional_greeter['Xander']
Đây là một mô hình thú vị; . Tôi muốn quay lại sớm vì giải pháp thay thế là sử dụng khối câu lệnh if…else
def optional_greeter[name]: if name.startswith['X']: # We don't greet people with weird names :p pass else: print['Hi there, ', name] optional_greeter['Xander']
Cái nào bạn cảm thấy trông sạch hơn? . Và mặc dù sự khác biệt là nhỏ với một ví dụ nhỏ như vậy, nhưng điều này bắt đầu tăng lên khi bạn có khối mã lớn hơn
Phạm vi biến đổi
Biến
>>> mylength = len['Hello'] >>> print[mylength] 56 chỉ tồn tại bên trong hàm của chúng ta. Chúng ta nói rằng phạm vi của biến
>>> mylength = len['Hello'] >>> print[mylength] 56 được giới hạn trong hàm
>>> mylength = len['Hello'] >>> print[mylength] 58, nghĩa là nó không tồn tại bên ngoài hàm nàyPhạm viKhả năng hiển thị của một biến được gọi là phạm vi. Phạm vi xác định những phần nào trong chương trình của bạn có thể nhìn thấy và sử dụng một biến
Nếu chúng ta định nghĩa một biến ở cái gọi là cấp cao nhất của chương trình, nó sẽ hiển thị ở mọi nơi
Hãy chứng minh điều này
>>> def say_hi[]: .. print["Hi", name] .. answer = "Hi" ... >>> name = 'Erik' >>> say_hi[] Hi Erik >>> print[answer] Traceback [most recent call last]: File "", line 1, in NameError: name 'answer' is not defined
>>> mylength = len['Hello'] >>> print[mylength] 58 đã có thể sử dụng biến
>>> mylength = len['Hello'] >>> print[mylength] 56, như mong đợi, vì đây là biến cấp cao nhất. nó có thể nhìn thấy ở khắp mọi nơi. Tuy nhiên,
>>> def say_hi[]: .. print['Hi!'] ... >>> say_hi[] Hi!1, được xác định bên trong say_hi, không được biết bên ngoài hàm và gây ra một
>>> def say_hi[]: .. print['Hi!'] ... >>> say_hi[] Hi!2. Python cung cấp cho chúng tôi một lỗi thông tin và chi tiết. “tên 'câu trả lời' không được xác định. ”
Giá trị mặc định và tham số được đặt tên
Một tính năng hấp dẫn của Python là khả năng cung cấp các giá trị mặc định cho các tham số
>>> result = print['Hello'] Hello >>> print[result] None0
Hoặc, nếu bạn thích, hãy sử dụng ví dụ tương tác bên dưới
Trình diễn các giá trị mặc định và các tham số được đặt tênVì các thông số của chúng tôi có giá trị mặc định nên bạn không cần phải điền vào. Nếu không, mặc định được sử dụng. Nếu bạn làm như vậy, bạn ghi đè giá trị mặc định bằng giá trị của riêng bạn
Gọi các hàm Python trong khi đặt tên rõ ràng các tham số khác với những gì chúng ta đã làm cho đến bây giờ. Các tham số này được gọi là tham số được đặt tên vì chúng tôi chỉ định cả tên và giá trị thay vì chỉ giá trị. Nhờ các tham số được đặt tên này, thứ tự chúng tôi cung cấp chúng không thành vấn đề. Nếu bạn nghĩ về nó, đó là cách tự nhiên và duy nhất để làm cho các giá trị mặc định trở nên hữu ích
Nếu bạn không muốn sử dụng các tham số được đặt tên, bạn có thể. Khi bạn dựa vào vị trí thay vì tên, bạn cung cấp cái mà chúng tôi gọi là tham số vị trí. Vị trí quan trọng, như có thể được nhìn thấy dưới đây
>>> result = print['Hello'] Hello >>> print[result] None1
Hiện tại, bạn đã học đủ về các hàm để tiếp tục với phần hướng dẫn. Nếu bạn muốn tìm hiểu thêm, hãy đọc phần tìm hiểu sâu về các hàm Python của tôi