Chúng ta sẽ tạo một hàm có tên là say_things
mà chúng ta có thể gọi bằng các hàm
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
0, >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
1, >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
2 để in ra, >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
3. Nó sẽ hoạt động như thế này>>> say_things["Trey", ducks=2]
Trey has...
2 ducks
That's all!
Chúng ta sẽ bắt đầu với một hàm chỉ chấp nhận đối số
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
4>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
Chúng tôi không thể gọi chức năng này với các đối số từ khóa
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
1 và >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
2 vì chúng tôi sẽ gặp lỗi>>> say_things["Trey", ducks=2, cup=1]
Traceback [most recent call last]:
File "", line 1, in
TypeError: say_things[] got an unexpected keyword argument 'ducks'
Nắm bắt các đối số từ khóa tùy ý
Để chấp nhận bất kỳ đối số từ khóa nào được cung cấp cho hàm này, chúng ta cần sử dụng toán tử
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7. Trong định nghĩa hàm của chúng tôi, chúng tôi sẽ đặt >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7 và một tên biến [trong trường hợp của chúng tôi là ____0_______9] để nói với Python rằng hàm này sẽ chấp nhận bất kỳ đối số từ khóa nào được cung cấp cho nó và nó sẽ lưu trữ chúng trong một tên biến đó [_______0_______9] sẽ trỏ đến>>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
Khi hàm say_things
của chúng tôi được gọi, các khóa trong từ điển
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
9 sẽ là các tên đối số từ khóa đã cho [_______9_______3 và >>> say_things["Trey", ducks=2, cup=1]
Traceback [most recent call last]:
File "", line 1, in
TypeError: say_things[] got an unexpected keyword argument 'ducks'
4 trong ví dụ nguyện vọng ở trên] và các giá trị sẽ là các giá trị được cung cấp cho các đối số đó [>>> say_things["Trey", ducks=2, cup=1]
Traceback [most recent call last]:
File "", line 1, in
TypeError: say_things[] got an unexpected keyword argument 'ducks'
5 và >>> say_things["Trey", ducks=2, cup=1]
Traceback [most recent call last]:
File "", line 1, in
TypeError: say_things[] got an unexpected keyword argument 'ducks'
6]Để lặp lại từ điển này, chúng ta sẽ sử dụng phương thức để lấy các bộ giá trị khóa
>>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. for name, count in things.items[]:
.. print[f" {count} {name}"]
.. print["That's all!"]
...
Vì vậy, chức năng mới này sẽ chấp nhận đối số
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
4 của chúng tôi và bất kỳ đối số từ khóa nào được cung cấp cho nó. Ví dụ truyền >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
1 in ra >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
0>>> say_things["Trey", ducks=2]
Trey has...
2 ducks
That's all!
Nếu chúng tôi nói
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
2 và >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
2, chúng tôi cũng sẽ thấy những thứ đó được in ra>>> say_things["Trey", ducks=2, cup=1, ideas=3]
Trey has...
2 ducks
1 cup
3 ideas
That's all!
Tất cả điều này hoạt động vì
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7, đang nắm bắt bất kỳ đối số từ khóa nào được cung cấp cho chức năng này vào một từ điểnĐối số từ khóa tùy ý trong Python
Bạn không thực sự thấy
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7 được sử dụng thường xuyên. Toán tử này thường được sử dụng nhiều nhất với kế thừa lớp trong Python, nơi bạn đang nắm bắt bất kỳ đối số nào được cung cấp cho lớp của mình và chuyển chúng cho một số lớp chaTuy nhiên, có một phương thức trên một trong các kiểu dựng sẵn trong Python sử dụng
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7. phương pháp chuỗi>>> "{n} {item}".format[n=3, item="ducks"]
3 ducks
Phương thức
>>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
6 không chỉ chấp nhận đối số >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
8 và >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
9, nó chấp nhận bất kỳ đối số từ khóa nào mà chúng ta có thể nghĩ ra để cung cấp cho nó. Chúng ta có thể thấy điều đó bằng cách xem tài liệu về phương pháp >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
6>>> help[str.format]
Help on method_descriptor:
format[...]
S.format[*args, **kwargs] -> str
Bạn có thể thấy rằng phương thức chuỗi
>>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
6 chấp nhận >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. for name, count in things.items[]:
.. print[f" {count} {name}"]
.. print["That's all!"]
...
2 và >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. for name, count in things.items[]:
.. print[f" {count} {name}"]
.. print["That's all!"]
...
3. Nó nắm bắt tất cả các đối số vị trí và tất cả các đối số từ khóa được cung cấp cho nó. Vì vậy, phương pháp >>> def say_things[name, **things]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
6 có thể chấp nhận bất kỳ đối số nào bạn đưa ra cho nóSử dụng >>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7 để chấp nhận các đối số từ khóa tùy ý
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
Nếu bạn cần viết một hàm chấp nhận các đối số từ khóa tùy ý, bạn có thể sử dụng toán tử
>>> def say_things[name]:
.. print[f"{name} has..."]
.. print["That's all!"]
...
7 trong định nghĩa hàm của mình