`f(kw=a, *b)` with keyword argument before star arguments isn’t evaluated left-to-right
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 36k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
def f(a, kw):
pass
f(kw=print(1), *[print(2)])
In Python 3.4.10 and earlier, this prints 1 then 2, but in Python 3.5.0 and later, this prints 2 then 1.
This seems like a bug of some kind. Given that ast.parse() doesn’t distinguish between f(kw=a, *b) and f(*b, kw=a), perhaps the bug is that a keyword argument is allowed before star arguments at all—we already disallow f(kw=a, b), f(**a, b), and f(**a, *b).
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện ví dụ được cung cấp f(kw=print(1), *[print(2)]) trên các phiên bản Python bị ảnh hưởng, sau đó theo dõi cách CPython phân tích cú pháp và đánh giá các lời gọi chứa đối số từ khóa và đối số có dấu sao. Được xem là hoàn tất khi hành vi được sửa một cách nhất quán, hoặc thứ tự đối số không hợp lệ bị từ chối nếu đó là hướng giải quyết được chọn; issue không nêu tên tệp mã nguồn hay bài kiểm thử nào.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100