Các chức năng là một phần thiết yếu của hầu hết các ngôn ngữ lập trình. Các chức năng là các đoạn mã có thể tái sử dụng có thể được gọi bằng tên của hàm. Các chức năng có thể được gọi là bất cứ nơi nào trong chương trình Python, bao gồm cả việc gọi các chức năng trong các chức năng khác. Các chức năng cung cấp một vài lợi ích: Các chức năng cho phép cùng một đoạn mã chạy nhiều lần Các chức năng chia các chương trình dài thành các thành phần nhỏ hơn Các chức năng có thể được chia sẻ và sử dụng bởi các lập trình viên khác Mỗi chức năng đều có một tên chức năng. Tên chức năng được sử dụng khi hàm được gọi trong một chương trình. Gọi một chức năng có nghĩa là chạy một hàm. Các chức năng có thể nhận được đầu vào từ chương trình. Đầu vào được cung cấp cho một hàm được gọi là đối số đầu vào hoặc chỉ là đối số. Đối số là mã được truyền đến một hàm làm đầu vào. Chức năng có thể tạo ra đầu ra. Chúng tôi nói một hàm trả về đầu ra cho chương trình. Đầu ra của một hàm có thể được gán cho một biến để sử dụng trong một chương trình. Dưới đây là một ví dụ gọi Python's Tại sao chức năng?
# defining.py
class Some[]:
@staticmethod
def f[]:
print["f[] method"]
2 là một hàm:
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]3.
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]3 là chức năng năng lượng. Hàm
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]3 tăng một số cho một nguồn điện. Các đối số đầu vào là các số
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]6 và
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]7. Đầu ra chức năng được gán cho biến
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]8. Trong ví dụ này, hàm trả về giá trị
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]9 [3 được nâng lên công suất 2, 3^2 = 9].3^2 = 9].
- Chức năng trong Python
Xác định và gọi các hàm Python [Tổng quan] 01:2701:27
Chức năng trong Python 02:0102:01
Các cuộc gọi và định nghĩa chức năng 06:4706:47
- Đối số thông qua
Đối số vị trí 08:3208:32
Giá trị tham số mặc định có thể thay đổi 06:2606:26
BY-BY-VALUE VS PASS-BY-EPENEPED trong C ++ 10:2910:29
BY-BY-VALUE VS PASS-BY-EPENEPED IN PYTHON 07:2207:22
Vượt qua các đối tượng có thể thay đổi và tác dụng phụ 03:5103:51
- Tuyên bố trả lại
Trả dữ liệu cho người gọi 05:5705:57
Tránh tác dụng phụ 07:1707:17
- Danh sách đối số có độ dài thay đổi
Đối số Tuple Đóng gói 05:4405:44
Đối số tuple giải nén 04:4604:46
Đóng gói từ điển đối số và giải nén 04:2304:23
Đặt tất cả lại với nhau 02:4502:45
Nhiều gói trong một chức năng Gọi 05:2005:20
- Các đối số chỉ dành cho từ khóa và chỉ có vị trí
Đối số chỉ từ khóa 08:0808:08
Tham số đối số biến trần 06:1806:18
Đối số chỉ có vị trí 04:2704:27
- Docstrings và chú thích chức năng
Chức năng Docstrings 04:2804:28
Chú thích chức năng 07:4707:47
Tạo và sửa đổi các chú thích 04:4804:48
Kiểm tra loại thực thi 05:1705:17
Xác định và gọi các hàm Python [Tóm tắt] 01:4101:41
Sửa đổi lần cuối ngày 25 tháng 10 năm 2022
Trong bài viết này, chúng tôi bao gồm các chức năng trong Python.
Định nghĩa chức năng Python
Hàm là ánh xạ bằng 0 hoặc nhiều tham số đầu vào về 0 hoặc nhiều tham số đầu ra.
Ưu điểm của việc sử dụng các chức năng là:
- Giảm sự trùng lặp của mã
- Phân hủy các vấn đề phức tạp thành các mảnh đơn giản hơn
- Cải thiện sự rõ ràng của mã
- Tái sử dụng mã
- Ẩn thông tin
Các chức năng trong Python là những công dân hạng nhất. Nó có nghĩa là các chức năng có trạng thái bình đẳng với các đối tượng khác trong Python. Các chức năng có thể được gán cho các biến, được lưu trữ trong các bộ sưu tập hoặc được truyền dưới dạng đối số. Điều này mang lại sự linh hoạt bổ sung cho ngôn ngữ.
Các loại chức năng Python
Có hai loại chức năng cơ bản: các chức năng tích hợp và các chức năng do người dùng xác định. Các chức năng tích hợp là một phần của ngôn ngữ Python; Ví dụ
def f[]: print["f[] function"]0,
def f[]: print["f[] function"]1 hoặc
def f[]: print["f[] function"]2. Các hàm do người dùng xác định là các hàm được tạo bằng từ khóa
def f[]: print["f[] function"]3.
Python tạo ra các chức năng
Một hàm được tạo với từ khóa
def f[]: print["f[] function"]3. Các câu lệnh trong khối của hàm phải được thụt vào.
def function[]: pass
Từ khóa
def f[]: print["f[] function"]3 được theo sau bởi tên hàm với dấu ngoặc tròn và dấu hai chấm. Các câu lệnh thụt lên tạo thành một cơ thể của chức năng.
Chức năng sau đó được thực hiện khi cần thiết. Chúng tôi nói rằng chúng tôi gọi chức năng. Nếu chúng ta gọi một hàm, các câu lệnh bên trong cơ thể chức năng sẽ được thực thi. Chúng không được thực thi cho đến khi hàm được gọi.
myfunc[]
Để gọi một hàm, chúng tôi chỉ định tên chức năng với dấu ngoặc tròn.
ret.py
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]
Chuỗi ở đầu tập lệnh được gọi là chuỗi tài liệu. Nó ghi lại kịch bản hiện tại. Tệp mà chúng tôi đặt mã Python được gọi là mô -đun.
Chúng tôi xác định hai chức năng. Hàm đầu tiên in chuỗi tài liệu mô -đun. Thứ hai trả về đường dẫn của mô -đun. Hàm có thể hoặc không thể trả về một giá trị. Nếu một funciton không trả về một giá trị, nó sẽ hoàn toàn trả về
def f[]: print["f[] function"]6.
def f[]: print["f[] function"]7 và
def f[]: print["f[] function"]8 là các thuộc tính trạng thái đặc biệt. Lưu ý rằng có hai dấu gạch dưới ở cả hai phía của thuộc tính.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py
Định nghĩa về các chức năng phải đi trước việc sử dụng của chúng. Nếu không, thông dịch viên sẽ phàn nàn với
def f[]: print["f[] function"]9.
func_prec.py
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]
Trong ví dụ trên, chúng tôi có hai định nghĩa về các hàm. Một dòng được bình luận. Một cuộc gọi chức năng không thể đi trước định nghĩa của nó.
#f2[] def f2[]: print["f2[]"]
Chúng ta chỉ có thể gọi
def g[]: def f[]: print["f[] inner function"] f[]0 chỉ sau định nghĩa của nó. Không đưa ra dòng chúng ta nhận được
def f[]: print["f[] function"]9.
Xác định các chức năng ở đâu
Các chức năng có thể được xác định bên trong một mô -đun, một lớp hoặc chức năng khác. Hàm được xác định bên trong một lớp được gọi là một phương thức.
defining.py
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]
Trong ví dụ này, chúng tôi xác định hàm
def g[]: def f[]: print["f[] inner function"] f[]2 ở ba nơi khác nhau.
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]
Một phương pháp tĩnh được định nghĩa với một bộ trang trí trong một lớp
def g[]: def f[]: print["f[] inner function"] f[]3.
def f[]: print["f[] function"]
Hàm được xác định trong một mô -đun.
def g[]: def f[]: print["f[] inner function"] f[]
Ở đây hàm
def g[]: def f[]: print["f[] inner function"] f[]2 được xác định bên trong một hàm
def g[]: def f[]: print["f[] inner function"] f[]5 khác. Nó là một hàm bên trong.
myfunc[]0
Phương thức tĩnh được gọi bằng cách chỉ định tên lớp, toán tử chấm và tên hàm với dấu ngoặc vuông. Các chức năng khác được gọi là bằng cách sử dụng tên và dấu ngoặc vuông của chúng.
myfunc[]1
Chức năng Python là đối tượng
Các chức năng trong Python là đối tượng. Chúng có thể được thao túng như các đối tượng khác trong Python. Do đó, các chức năng được gọi là công dân hạng nhất. Điều này không đúng trong các ngôn ngữ OOP khác như Java hoặc C#.
fun_obj.py
myfunc[]2
Trong tập lệnh này, chúng tôi cho thấy rằng chức năng của chúng tôi cũng là một đối tượng.
myfunc[]3
Chúng tôi xác định hàm
def g[]: def f[]: print["f[] inner function"] f[]2. Nó in một tin nhắn vào bảng điều khiển. Nó cũng có một chuỗi tài liệu.
myfunc[]4
Hàm
def g[]: def f[]: print["f[] inner function"] f[]7 kiểm tra xem hàm
def g[]: def f[]: print["f[] inner function"] f[]2 có phải là một thể hiện của
def g[]: def f[]: print["f[] inner function"] f[]9 hay không. Tất cả các đối tượng trong Python kế thừa từ thực thể cơ sở này.
myfunc[]5
Mỗi đối tượng trong Python có một ID duy nhất. Hàm
myfunc[]00 trả về ID của đối tượng.
myfunc[]6
Đối tượng có thể có thuộc tính; Chúng tôi in hai thuộc tính của hàm:
def f[]: print["f[] function"]7 và
myfunc[]02.
myfunc[]7
Các chức năng có thể được lưu trữ trong các bộ sưu tập và được chuyển cho các chức năng khác.
fun_coll.py
myfunc[]8
Chúng tôi xác định ba chức năng. Chúng tôi đặt chúng trong một tuple và chuyển chúng vào một chức năng.
myfunc[]9
Chúng tôi đặt ba đối tượng chức năng trong một tuple và đi qua nó với một vòng lặp.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]0
Chúng tôi vượt qua các hàm
def g[]: def f[]: print["f[] inner function"] f[]2 và
def g[]: def f[]: print["f[] inner function"] f[]5 cho hàm
myfunc[]05.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]1
Ba loại chức năng trong Python
Nhìn từ một quan điểm cụ thể, chúng ta có thể nhận ra ba loại chức năng. Các chức năng luôn có sẵn để sử dụng, các chức năng được chứa trong các mô -đun bên ngoài, phải được nhập và các chức năng được xác định bởi một lập trình viên với từ khóa
def f[]: print["f[] function"]3.
three_kinds.py
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]2
Ba loại chức năng có mặt trong mã trên.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]3
Hàm
myfunc[]07 được nhập từ mô -đun toán học.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]4
Hàm Cube [] là một hàm được xác định tùy chỉnh.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]5
Hàm
def f[]: print["f[] function"]2 là một chức năng tích hợp dễ dàng truy cập. Nó là một phần của cốt lõi của ngôn ngữ.
Python trả về từ khóa
Một chức năng được tạo để thực hiện một nhiệm vụ cụ thể. Thường thì có một kết quả từ một nhiệm vụ như vậy. Từ khóa
myfunc[]09 được sử dụng để trả về các giá trị từ một hàm. Một hàm có thể hoặc không thể trả về một giá trị. Nếu một hàm không có từ khóa trả về, nó sẽ gửi
def f[]: print["f[] function"]6.
returning.py
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]6
Chúng tôi có hai chức năng được xác định. Người ta sử dụng từ khóa
myfunc[]09, một từ khóa thì không.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]7
Hàm
myfunc[]12 không trả về một cách rõ ràng là một giá trị. Nó hiển thị một tin nhắn trên bảng điều khiển.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]4
Các hàm
myfunc[]13 tính toán một biểu thức và trả về kết quả của nó với từ khóa
myfunc[]09.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]9
Trong dòng này, chúng tôi gọi hàm
myfunc[]13. Kết quả tính toán của hàm
myfunc[]13 được trả về và gán cho biến
myfunc[]17. Nó giữ giá trị kết quả bây giờ.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py0
Chúng tôi gọi hàm
myfunc[]12 với thông báo là tham số. Thông điệp được in vào bảng điều khiển. Chúng tôi không mong đợi một giá trị từ chức năng này.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py1
Mã này tạo ra hai dòng. Một là một thông báo được in bởi hàm
myfunc[]12. Cái còn lại là giá trị
def f[]: print["f[] function"]6, được gửi hoàn toàn bởi các hàm mà không có câu lệnh
myfunc[]09.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py2
Chúng ta có thể gửi thêm một giá trị từ một hàm. Các đối tượng sau từ khóa
myfunc[]09 được phân tách bằng dấu phẩy.
returning2.py
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py3
Có một định nghĩa về hàm
myfunc[]23. Hàm này trả về bốn giá trị.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py4
Từ khóa
myfunc[]09 gửi lại bốn số. Các số được phân tách bằng một ký tự dấu phẩy. Trên thực tế, chúng tôi đã gửi một tuple chứa bốn giá trị này. Chúng tôi cũng có thể trả lại một danh sách thay vì một tuple.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py5
Các giá trị được trả về được gán cho các biến cục bộ.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py6
Hàm xác định lại chức năng Python
Python là năng động trong tự nhiên. Có thể xác định lại một hàm đã xác định.
redefinition.py
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py7
Chúng tôi xác định hàm
myfunc[]12. Sau đó, chúng tôi cung cấp một định nghĩa mới về cùng một chức năng.
$ ./ret.py The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 None C:/Users/Jano/PycharmProjects/Simple/simple.py8
Từ mô -đun thời gian, chúng tôi nhập hai chức năng được sử dụng để tính thời gian hiện tại.
#!/usr/bin/python """ The ret.py script shows how to work with functions in Python. Author: Jan Bodnar ZetCode, 2022 """ def show_module_name[]: print[__doc__] def get_module_file[]: return __file__ a = show_module_name[] b = get_module_file[] print[a, b]7
Đây là định nghĩa đầu tiên của một hàm. Nó chỉ in một tin nhắn vào bảng điều khiển.
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]0
Sau đó trong mã nguồn, chúng tôi thiết lập một định nghĩa mới về hàm
myfunc[]26. Thông điệp được đi trước với dấu thời gian.
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]1
Đối số chức năng Python
Hầu hết các chức năng chấp nhận đối số. Đối số là các giá trị được gửi đến hàm. Các chức năng xử lý các giá trị và tùy chọn trả về một số giá trị trở lại.
fahrenheit.py
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]2
Trong ví dụ của chúng tôi, chúng tôi chuyển đổi nhiệt độ Celsius thành Fahrenheit. Hàm
myfunc[]27 chấp nhận một đối số C, đó là nhiệt độ Celsius.
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]3
Các đối số trong các hàm Python có thể có các giá trị ngầm. Một giá trị ngầm được sử dụng nếu không có giá trị được cung cấp.
fun_implicit.py
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]4
Ở đây chúng tôi đã tạo ra một chức năng quyền lực. Hàm có một đối số với một giá trị ngầm. Chúng ta có thể gọi chức năng với một hoặc hai đối số.
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]5
Các hàm Python có thể chỉ định các đối số của họ với một từ khóa. Điều này có nghĩa là khi gọi một hàm, chúng tôi chỉ định cả từ khóa và giá trị. Khi chúng ta có nhiều đối số và chúng được sử dụng mà không có từ khóa, thứ tự chúng ta vượt qua các đối số đó là rất quan trọng. Nếu chúng ta mong đợi một cái tên, tuổi tác hoặc tình dục trong một chức năng không có từ khóa, chúng ta không thể thay đổi thứ tự của họ. Nếu chúng ta sử dụng từ khóa, chúng ta có thể.
fun_keywords.py
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]6
Trong ví dụ này, thứ tự chúng tôi chỉ định các đối số là quan trọng. Nếu không, chúng tôi nhận được kết quả không chính xác.
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]7
fun_keywords2.py
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]8
Bây giờ chúng tôi gọi các chức năng với từ khóa của họ. Thứ tự có thể được thay đổi, mặc dù không nên làm như vậy. Lưu ý rằng chúng tôi không thể sử dụng đối số không phải là KeyeDword sau đối số từ khóa. Điều này sẽ kết thúc trong một lỗi cú pháp.
#!/usr/bin/python # func_prec.py def f1[]: print["f1[]"] f1[] #f2[] def f2[]: print["f2[]"]9
Đây là một cấu trúc pháp lý. Một đối số không thay đổi có thể được theo sau bởi các đối số từ khóa.
#f2[] def f2[]: print["f2[]"]0
Điều này sẽ kết thúc trong một lỗi cú pháp. Một đối số không thay đổi có thể không tuân theo các đối số từ khóa.
Các chức năng trong Python có thể chấp nhận số lượng đối số tùy ý.
arbitrary_args.py
#f2[] def f2[]: print["f2[]"]1
Chúng tôi sử dụng toán tử
myfunc[]28 để chỉ ra rằng hàm chấp nhận số lượng đối số tùy ý. Hàm
myfunc[]29 trả về tổng của tất cả các đối số. Chuỗi đầu tiên trong phần thân hàm được gọi là Chuỗi tài liệu chức năng. Nó được sử dụng để ghi lại chức năng. Chuỗi phải được trích dẫn ba.
#f2[] def f2[]: print["f2[]"]2
Chúng tôi cũng có thể sử dụng cấu trúc
myfunc[]30 trong các chức năng của chúng tôi. Trong trường hợp như vậy, chức năng sẽ chấp nhận một từ điển. Từ điển có độ dài tùy ý. Sau đó chúng ta có thể thông thường phân tích từ điển, như thường lệ.
details.py
#f2[] def f2[]: print["f2[]"]3
Ví dụ này cho thấy một trường hợp như vậy. Chúng tôi có thể cung cấp số lượng đối số giá trị khóa tùy ý. Chức năng sẽ xử lý tất cả.
#f2[] def f2[]: print["f2[]"]4
Python đi qua các tham số bằng cách tham khảo
Các tham số cho các chức năng được truyền qua tham chiếu. Một số ngôn ngữ chuyển các bản sao của các đối tượng cho các chức năng. Vượt qua các đối tượng bằng cách tham chiếu có hai kết luận quan trọng: a] Quá trình này nhanh hơn so với các bản sao của các đối tượng được thông qua; b] Các đối tượng có thể thay đổi được sửa đổi trong các chức năng được thay đổi vĩnh viễn.
passing_by_reference.py
#f2[] def f2[]: print["f2[]"]5
Trong ví dụ của chúng tôi, chúng tôi chuyển một danh sách các số nguyên cho một hàm. Đối tượng được sửa đổi bên trong phần thân của chức năng. Sau khi gọi hàm, đối tượng ban đầu, danh sách các số nguyên được sửa đổi.
#f2[] def f2[]: print["f2[]"]6
Trong phần thân của chức năng, chúng ta làm việc với đối tượng ban đầu. Không phải với một bản sao của đối tượng. Trong nhiều ngôn ngữ lập trình, chúng tôi sẽ nhận được một bản sao của một đối tượng theo mặc định.
#f2[] def f2[]: print["f2[]"]7
Khi danh sách đã được sửa đổi, nó đã được sửa đổi cho tốt.
Python Global và Local Biến
Tiếp theo chúng ta nói về cách các biến được sử dụng trong các hàm Python.
local_variable.py
#f2[] def f2[]: print["f2[]"]8
Một biến được xác định trong một cơ thể chức năng có phạm vi cục bộ. Nó chỉ có giá trị trong cơ thể của chức năng.
#f2[] def f2[]: print["f2[]"]9
global_variable.py
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]0
Theo mặc định, chúng ta có thể có được nội dung của một biến toàn cầu bên trong phần thân của một hàm.
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]1
Nhưng nếu chúng ta muốn thay đổi một biến toàn cầu trong một hàm, chúng ta phải sử dụng từ khóa
myfunc[]31.
global_variable2.py
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]2
Bây giờ, chúng tôi thay đổi nội dung của một biến tên toàn cầu bên trong một hàm.
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]3
Sử dụng từ khóa
myfunc[]31, chúng tôi tham chiếu biến được xác định bên ngoài phần thân của hàm. Biến được cung cấp một giá trị mới.
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]4
Chức năng ẩn danh Python
Có thể tạo các chức năng ẩn danh trong Python. Các chức năng ẩn danh không có tên. Với từ khóa
myfunc[]33, các hàm ẩn danh nhỏ có thể được tạo. Các chức năng ẩn danh cũng được gọi là các chức năng Lambda của các lập trình viên Python. Chúng là một phần của mô hình chức năng được kết hợp trong Python.
Các hàm Lambda bị giới hạn trong một biểu thức duy nhất. Chúng có thể được sử dụng bất cứ nơi nào các chức năng bình thường có thể được sử dụng. Có một hướng dẫn chức năng Python Lambda trên ZetCode.
lambda_fun.py
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]5
Đây là một ví dụ nhỏ về chức năng Lambda.
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]6
Từ khóa
myfunc[]33 tạo ra một hàm ẩn danh.
myfunc[]17 là một tham số được truyền đến hàm Lambda. Các tham số được theo sau bởi một ký tự đại tràng. Mã bên cạnh đại tràng là biểu thức được thực thi, khi hàm Lambda được gọi. Hàm LambDA được gán cho biến
myfunc[]36.
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]7
Hàm Lambda được thực thi. Số 8 được chuyển đến hàm ẩn danh và nó trả về 48 do kết quả. Lưu ý rằng
myfunc[]36 không phải là tên cho chức năng này. Nó chỉ là một biến mà hàm ẩn danh được gán.
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]8
Hàm Lambda có thể được sử dụng thanh lịch với các phần chức năng khác của ngôn ngữ Python, như các hàm
myfunc[]38 hoặc
myfunc[]39.
lambda_fun2.py
#!/usr/bin/python # defining.py class Some[]: @staticmethod def f[]: print["f[] method"] def f[]: print["f[] function"] def g[]: def f[]: print["f[] inner function"] f[] Some.f[] f[] g[]9
Trong ví dụ, chúng tôi có một danh sách nhiệt độ Celsius. Chúng tôi tạo ra một danh sách mới chứa nhiệt độ ở Fahrenheit.
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]0
Hàm
myfunc[]38 áp dụng hàm ẩn danh cho từng phần tử của danh sách
myfunc[]41. Nó trả lại một điều đáng tin cậy của nhiệt độ Fahrenheit được tính toán.
# defining.py class Some[]: @staticmethod def f[]: print["f[] method"]1
Trong bài viết này, chúng tôi đã đề cập đến các chức năng Python.
Liệt kê tất cả các hướng dẫn Python.