Python sử dụng self trong đối số mặc định
Đối số mặc định là đối số hàm nhận giá trị mặc định nếu bạn không chuyển giá trị rõ ràng khi gọi hàm. Ví dụ: định nghĩa hàm 5 cho phép bạn gọi nó có hoặc không có đối số tùy chọn 6—các lệnh gọi hợp lệ là 7, 8 hoặc thậm chí là 9. Nhưng nếu bạn không chuyển đối số tùy chọn, nó sẽ chỉ gán giá trị mặc định 0 cho đối số 6 Show
Ví dụ đối số mặc địnhdef f(x=0): print(x) f(10) # 10 f(-2) # -2 f('hello world') # hello world ######################## # DEFAULT ARGUMENT # ######################## f() # 0 Đăng kí. Khi nào nên sử dụng đối số mặc định?Giả sử, bạn đã tạo một công cụ dòng lệnh Python cho doanh nghiệp của mình. Công cụ này yêu cầu xác nhận của người dùng đối với các hoạt động khác nhau như ghi hoặc xóa tệp Để tránh mã thừa, bạn đã triển khai một chức năng chung xử lý tương tác với người dùng. Hành vi mặc định phải bao gồm ba bước
Số lần lặp lại và lời nhắc có thể tùy chỉnh thông qua các thông số Để đạt được điều này, bạn có thể chỉ định các đối số mặc định như được đưa ra trong đoạn mã sau. Bạn có thể sử dụng các tham số mặc định bằng cách gọi 2. Hoặc bạn có thể ghi đè lên chúng theo thứ tự định nghĩa của chúng (một, một số hoặc tất cả các tham số)def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?') Hãy kiểm tra xem bạn hiểu khái niệm đối số mặc định này như thế nào Đối số mặc định của câu đốdef ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')0 có phải là một lệnh gọi hàm hợp lệ không? Điều thú vị là chỉ 50% người dùng finxter giải được câu đố này. họ dường như đoán được câu trả lời. Thay thế một phần các đối số mặc định là một tính năng mới đối với hầu hết người dùng. Nó có mới đối với bạn không? Nắm vững các tính năng ngôn ngữ cơ bản này sẽ nâng bạn lên cấp độ của một lập trình viên nâng cao Bạn có phải là một lập trình viên bậc thầy không? Video liên quanHướng dẫn lập trình Python 3 - Mặc định tham số chức năng Xem video này trên YouTube Chris Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây Các hàm trong Python được sử dụng để triển khai logic mà bạn muốn thực hiện lặp lại ở các vị trí khác nhau trong mã của mình. Bạn có thể truyền dữ liệu cho các hàm này thông qua các đối số của hàm. Ngoài việc truyền đối số cho hàm thông qua lệnh gọi hàm, bạn cũng có thể đặt giá trị đối số mặc định trong hàm Python. Các giá trị mặc định này được gán cho các đối số của hàm nếu bạn không chuyển một giá trị tham số cho đối số đã cho một cách rõ ràng. Tham số là các giá trị thực sự được truyền cho các đối số của hàm Trong bài viết này, bạn sẽ thấy cách sử dụng các đối số mặc định trong các hàm Python. Nhưng trước tiên, chúng ta sẽ xem cách định nghĩa một hàm trong Python và cách chuyển các giá trị cho các đối số của hàm một cách rõ ràng Chức năng không có đối sốHãy xác định một hàm Python rất đơn giản mà không cần bất kỳ đối số nào
Đoạn script trên định nghĩa một hàm, 6, không chấp nhận bất kỳ đối số nào và chỉ in ra một chuỗiTập lệnh sau đây cho biết cách bạn thực sự gọi hàm 7
Ở đầu ra, bạn sẽ thấy một câu lệnh đơn giản được in ra màn hình bằng hàm 7
Chức năng với các đối số rõ ràngBây giờ chúng ta hãy xác định một hàm Python đơn giản, nơi chúng ta phải truyền nhiều giá trị cho các đối số của hàm. Nếu bạn không chỉ định giá trị cho tất cả các đối số của hàm, bạn sẽ gặp lỗi Đây là chức năng chúng tôi sẽ sử dụng làm ví dụ
Trong đoạn mã trên, chúng ta tạo một hàm, 9, với hai đối số 0 và 1. Hàm cộng các giá trị được truyền trong hai đối số và trả về kết quả cho người gọi hàmHãy thử gọi hàm trên với hai đối số def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')3 Đoạn script trên gọi phương thức 9 với hai giá trị tham số là i. e. 10 và 20. Ở đầu ra, bạn sẽ thấy tổng của hai giá trị này, tôi. e. 30Bây giờ chúng ta hãy thử gọi phương thức 9 mà không truyền giá trị cho các đối sốdef ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')6 Ở đầu ra, bạn sẽ thấy lỗi sau def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')7 Lỗi khá rõ ràng, lệnh gọi hàm tới 9 thiếu 2 đối số vị trí bắt buộc, 0 và 1. Về cơ bản, lỗi cho chúng ta biết rằng chúng ta cần chuyển các giá trị cho các đối số 0 và 1 thông qua lệnh gọi hàmBây giờ chúng ta hãy chuyển một giá trị cho một trong các đối số và xem điều gì sẽ xảy ra def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')3 Bây giờ ở đầu ra, bạn sẽ lại thấy lỗi sau def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')4 Sự khác biệt ở đây là lỗi bây giờ cho chúng ta biết rằng giá trị của một trong các đối số vị trí, i. e. 1, mất tích. Điều này có nghĩa là không có bất kỳ giá trị đối số mặc định nào được đặt, bạn phải chuyển các giá trị một cách rõ ràng cho tất cả các đối số của hàm, nếu không sẽ xảy ra lỗiNếu bạn muốn hàm của mình thực thi có hoặc không có các giá trị đối số trong lệnh gọi hàm thì sao? Chức năng với đối số mặc địnhĐối số mặc định trong các hàm Python là những đối số nhận giá trị mặc định nếu không có giá trị rõ ràng nào được chuyển cho các đối số này từ lệnh gọi hàm. Hãy định nghĩa một hàm với một đối số mặc định def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')6 Đoạn script trên định nghĩa một hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 với một đối số mặc định i. e. 0. Giá trị mặc định cho đối số 0 được đặt thành 2. Nếu bạn gọi phương thức def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 với một giá trị cho đối số 0, thì hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 sẽ trả về bình phương của giá trị đó Mặt khác, nếu bạn không chuyển bất kỳ giá trị nào cho đối số 0 của hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30, bạn sẽ thấy giá trị mặc định đó, i. e. 2, sẽ được gán cho 0, và hàm sẽ trả về bình phương của 2, i. e. 4Trước tiên hãy gọi phương thức def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 với giá trị đối số là 10 0đầu ra 1Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó Khi bạn thực thi đoạn script trên, giá trị 10 sẽ ghi đè giá trị mặc định là 2 cho đối số 0 của hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 và hàm trả về 100, là bình phương của 10 Bây giờ chúng ta sẽ gọi hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 mà không có bất kỳ giá trị nào cho đối số def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')63. Trong trường hợp này, bạn sẽ thấy rằng 4 sẽ được trả về bởi hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30 vì trong trường hợp không có giá trị cho hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30, giá trị mặc định của 2 sẽ được sử dụng làm giá trị cho hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')30, như minh họa bên dưới 2đầu ra 3Một hàm Python cũng có thể có nhiều đối số mặc định. Chẳng hạn, trong tập lệnh sau, hàm thêm số nguyên được truyền vào đối số. Nếu không có giá trị số nguyên nào được truyền cho hàm, thì các đối số mặc định sẽ nhận giá trị 2 và 4 tương ứng, như minh họa bên dưới 4Trước tiên hãy gọi hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')67 mà không có bất kỳ tham số nào 5đầu ra 6Vì chúng tôi không chuyển bất kỳ giá trị nào cho các đối số của hàm, các giá trị đối số mặc định, tôi. e 2 và 4, đã được cộng lại với nhau Bây giờ, hãy chuyển hai giá trị của riêng chúng ta cho hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')67 7đầu ra 8Đúng như dự đoán, 4 và 8 được cộng lại với nhau để trả về 12 Một hàm Python có thể có cả đối số bình thường (rõ ràng) và mặc định cùng một lúc. Hãy tạo một hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')69. Đối số đầu tiên của hàm là đối số bình thường trong khi đối số thứ hai là đối số mặc định có giá trị là 2. Hàm trả về kết quả của giá trị trong đối số đầu tiên được nâng lên lũy thừa của giá trị trong đối số thứ hai 9Trước tiên hãy chỉ vượt qua một đối số duy nhất 0đầu ra 1Trong đoạn mã trên, 3 đã được chuyển dưới dạng giá trị cho đối số 0 của hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')69. Không có giá trị nào được cung cấp cho đối số mặc định 1. Do đó, giá trị mặc định của 2 sẽ được sử dụng để lấy lũy thừa của 3 và bạn sẽ thấy 9 ở đầu raBây giờ chúng ta hãy chuyển hai giá trị cho hàm def ask_ok(prompt, retries=4, reminder='Try again: yes or no?'): while retries>0: ok = input(prompt) if ok in ('y', 'yes'): return True if ok in ('n', 'no'): return False retries = retries - 1 print(reminder) ask_ok('May we send you a free gift?')69 2Ở đầu ra, bạn sẽ thấy 3 được nâng lên lũy thừa 4, i. e. 81 Điều quan trọng cần lưu ý là các tham số có đối số mặc định không được theo sau bởi các tham số không có đối số mặc định. Lấy chức năng sau đây làm ví dụ 3Cố gắng gọi hàm này sẽ dẫn đến lỗi vì đối số đầu tiên có giá trị mặc định, nhưng đối số thứ hai thì không Bản thân có được coi là đối số trong Python không?self là phương thức đầu tiên của mọi lớp Python
. Biến self trỏ đến thể hiện của lớp mà bạn đang làm việc với. every method that you define, must accept that instance as its first argument (called self by convention). The self variable points to the instance of the class that you're working with.
Tại sao self là đối số đầu tiên trong Python?Đối số đầu tiên của mọi phương thức lớp, kể cả init , là luôn là tham chiếu đến phiên bản hiện tại của lớp . Theo quy ước, đối số này luôn được đặt tên là self. Trong phương thức init, self đề cập đến đối tượng mới được tạo; .
Tự đối số trong Python là gì?Tham số self là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp .
Tại sao bản thân không hoạt động trong Python?Trình tự xây dựng lớp Python
. Biến đó chỉ tồn tại khi phương thức đó đang thực thi và do đó là duy nhất đối với phương thức đó. Để tạo các trường hoặc biến toàn cục cho cả lớp, chúng ta phải khai báo chúng bên ngoài các phương thức của lớp. If we have a variable inside a method, in this case, self will not work. That variable exists only while that method is executing and is thus unique to that method. To create global fields or variables for the whole class, we must declare them outside of the class methods. |