Tôi không hiểu tại sao nó hoạt động với một đối số INT nhưng không phải với một danh sách.
Không, nó không:
Traceback [most recent call last]:
File "method.py", line 10, in
Draw.platforms[locations]
File "method.py", line 8, in platforms
print[self.locations]
AttributeError: 'int' object has no attribute 'locations'
Lý do tại sao nó không hoạt động trong cả hai trường hợp là vì bạn không bao giờ xây dựng bất kỳ trường hợp nào của lớp --- bạn chỉ cần gọi một phương thức ["công khai"] thuộc lớp. Vì vậy, khi platforms[]
cố gắng sử dụng self.locations
, nó không tồn tại.
Bạn có thể khởi tạo đối tượng trước:
locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
Hoặc, nếu bạn không quan tâm đến việc giữ ví dụ Draw
xung quanh:
locations = [0, 1]
Draw[locations].platforms[]
Hoặc bạn thay đổi phương thức để nó chấp nhận một đối số thay thế: thay vào đó
class Draw:
def platforms[value]:
print[value]
Nhưng bây giờ về cơ bản nó là một phương pháp tĩnh và bạn chỉ sử dụng lớp làm không gian tên.
W3Schools được tối ưu hóa cho việc học và đào tạo. Ví dụ có thể được đơn giản hóa để cải thiện việc đọc và học tập. Hướng dẫn, tài liệu tham khảo và ví dụ được xem xét liên tục để tránh lỗi, nhưng chúng tôi không thể đảm bảo tính chính xác đầy đủ của tất cả các nội dung. Trong khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng, cookie và chính sách bảo mật của chúng tôi.
Bản quyền 1999-2022 bởi dữ liệu refsnes. Đã đăng ký Bản quyền. W3Schools được cung cấp bởi W3.CSS.
W3Schools is Powered by W3.CSS.
Trong bài viết này, chúng tôi sẽ học cách chuyển một danh sách cho một chức năng để hoạt động như nhiều đối số trong Python. Chúng tôi sẽ hiểu cách tiếp cận cơ bản với một số mã tùy chỉnh. Trước tiên chúng ta hãy có một cái nhìn nhanh về danh sách trong Python.
Danh sách Python
Python có một loại dữ liệu tích hợp được gọi là Danh sách. Nó giống như một tập hợp các mảng với phương pháp khác nhau. Dữ liệu bên trong danh sách có thể thuộc bất kỳ loại nói, số nguyên, chuỗi hoặc giá trị float hoặc thậm chí là loại danh sách. Danh sách sử dụng các giá trị được phân tách bằng dấu phẩy trong khung vuông để lưu trữ dữ liệu. Danh sách có thể được xác định bằng bất kỳ tên biến nào và sau đó gán các giá trị khác nhau cho danh sách trong khung vuông. Danh sách được đặt hàng, thay đổi và cho phép các giá trị trùng lặp.
list1 = ["Ram", "Arun", "Kiran"]
list2 = [16, 78, 32, 67]
list3 = ["apple", "mango", 16, "cherry", 3.4]
Chuyển danh sách cho một hàm dưới dạng nhiều đối số
Trong Python, các chức năng có thể không có đối số, một đối số duy nhất hoặc nhiều hơn một đối số. Chúng ta có thể vượt qua một chuỗi, số nguyên, danh sách, bộ dữ liệu, một từ điển, vv như các đối số chức năng trong một cuộc gọi hàm. Hàm chấp nhận chúng theo cùng một định dạng và trả về đầu ra mong muốn. Bây giờ, chúng tôi muốn vượt qua một danh sách chứa nhiều yếu tố và các yếu tố này hoạt động như nhiều đối số của một hàm. Khái niệm này về một danh sách duy nhất các yếu tố là nhiều đối số được gọi là danh sách đối số giải nén. Chúng tôi sử dụng
locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
0 để giải nén đối số duy nhất thành nhiều đối số. Chúng tôi sử dụng toán tử giải nén locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
1 khi các đối số không có sẵn riêng biệt.Unpacking Argument List.
We use locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
0 to unpack the single argument into multiple arguments. We use the unpacking operator locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
1 when arguments are not available separately.Ví dụ: chức năng
2 trong Python lưu trữ ba đối số khác nhau - bắt đầu, dừng và bước. Nếu người dùng không muốn nhập riêng các giá trị, anh ta có thể viết cuộc gọi chức năng với toán tử locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
1 để giải nén các đối số ra khỏi danh sách hoặc tuple. locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
2 function in Python stores three different arguments - start, stop, and step. If the user does not want to input the values separately, he can write the function call with the locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
1 operator to unpack the arguments out of a list or tuple.Example:
Trong ví dụ này, my_list là có thể được thông qua như một đối số. Định nghĩa chức năng coi danh sách này là nhiều đối số. Các vòng lặp chương trình Python qua danh sách đã cho và sử dụng từng yếu tố của danh sách làm đối số riêng cho hàm. Mã dưới đây chỉ giải nén danh sách bằng cú pháp
locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
0 khi xác định chức năng.my_list is iterable that is passed as an argument. Function definition treats this list as multiple arguments. Python program loops over the given list and uses each element of the list as a separate argument to the function. The below code just unpacks the list using the locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
0 syntax when defining the function.#function definition
def add[*params]:
sum = 0
for num in params:
sum += num
print[sum]
#input list
my_list = [1,2,3]
#function call
add[*my_list]
6
Example:
Phương pháp này rất hữu ích khi các yếu tố không được xác định trước. Chúng ta có thể chuyển nhiều phần tử cho hàm Python mà không cần định trước các tham số chính thức. Ví dụ này sử dụng
locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
0 để tránh mã thất bại khi người dùng không biết có bao nhiêu đối số sẽ được gửi đến hàm. Bạn có thể sử dụng phương pháp này khi các phần tử trong danh sách không được xác định trước.def calculateTotalSum[*arguments]:
totalSum = 0
for number in arguments:
totalSum += number
print[totalSum]
# function call
calculateTotalSum[5,4,3,2,1]
15
Sự kết luận
Trong bài viết này, chúng tôi đã sử dụng các ví dụ khác nhau để hiểu làm thế nào chúng ta có thể giải nén các yếu tố danh sách để sử dụng chúng như nhiều đối số. Chúng tôi đã thảo luận về cú pháp
locations = [0, 1]
drawer = Draw[locations]
drawer.platforms[]
0 trong Python để giải nén các lập luận của danh sách và sử dụng chúng một cách riêng biệt trong cơ thể chức năng.