Tên thích hợp cho toán tử python *?


208

Tên chính xác cho toán tử *, như trong là function(*args)gì? giải nén, giải nén, cái gì khác?


9
Javascript có toán tử trải tương đương ....
Wolfgang Kuehn

Câu trả lời:


168

Trong Ruby và Perl 6, cái này được gọi là "splat" và tôi nghĩ rằng hầu hết mọi người từ các cộng đồng đó sẽ hiểu ý của bạn nếu bạn gọi nó là như vậy.

Các Python hướng dẫn sử dụng cụm từ "giải nén danh sách đối số", mà là dài và mô tả. Tôi chưa nghe thấy tên cụ thể nào khác cho nó trong Python.


90
chưa từng nghe / thấy "splat" trong khoảng 10 năm sử dụng python.
Joe Koberg

8
Chà, trong python, nó cũng được sử dụng để đóng gói các danh sách đối số, vậy trong bối cảnh đó có nên gọi là unsplat không? :)
John La Rooy

45
@ THC4k tôi đề xuất splatsplat.
Josh Lee

5
Thật không may, INTERCAL không có *nhà điều hành nên chúng tôi thiếu nguồn chính thức ...
wberry 17/07/13

3
Trong JavaScript (es2015), nó được gọi là toán tử trải rộng .
Kutyel

118

Tôi gọi nó là "mở rộng vị trí", trái ngược với **cái mà tôi gọi là "mở rộng từ khóa".


49

Các Bài chỉ dẫn Python chỉ đơn giản gọi nó là 'các *-operator'. Nó thực hiện giải nén các danh sách đối số tùy ý .


1
Đây là câu trả lời chính xác nhất và thật xấu hổ vì nó không được chấp nhận!
alfasin

3
@alfasin: Biểu thức 'the *-operator' không rõ ràng vì *- tùy thuộc vào ngữ cảnh - có thể thực hiện mở rộng đối số hoặc nhân với hai thao tác khác nhau.
HelloGoodbye

1
@Hello Goodbye và thực sự không khó để hiểu đó là cái gì từ bối cảnh của nó.
alfasin

Có vẻ như OP đã hỏi cách phát âm (có thể hoặc không phải là một từ - đó là một lỗ thỏ khác) *. Bằng cách nói, đó *-operatorchỉ đơn giản là ném lại câu hỏi như một câu trả lời. OP có lẽ muốn biết làm thế nào để nói to (hoặc trong đầu) khi anh ấy gặp nó. Đây là điều hoàn toàn mới đối với tôi và tôi sẽ sử dụng "splat!".
elPastor

17

Tôi nói "star-args" và người Python dường như biết ý tôi là gì.

**là khó khăn hơn - tôi nghĩ chỉ là "qargs" vì nó thường được sử dụng như **kwhoặc**kwargs


2
Tôi cũng chỉ nói kwargs, mặc dù điều đó không thực sự đề cập đến chính nhà điều hành mà tôi cho là.
TM.

14

Người ta cũng có thể gọi *một tham số tập hợp (khi được sử dụng trong định nghĩa đối số hàm) hoặc toán tử phân tán (khi được sử dụng trong lệnh gọi hàm).

Như đã thấy ở đây: Hãy nghĩ các bộ đối số Python / Tuples / Biến có độ dài thay đổi .


1
nhưng bạn không thể la hét thu thập hoặc phân tán như bạn có thể với SPLAT: D
Samantha Branham

@SamanthaBranham Tôi thích cách thu thập và phân tán có thể dễ dàng và được hình dung rõ ràng. Tất nhiên, splat cũng hình dung rất tuyệt vời 😂💥
Anton Strogonoff 29/03/18


1

Tôi gọi * args là "star args" hoặc "varargs" và ** kwargs "keyword args".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.