Lưu ý: Đây là không trùng lặp của linked answer, tập trung vào các vấn đề liên quan đến hiệu suất và điều gì xảy ra phía sau màn cửa khi thực hiện cuộc gọi hàm dict(). Câu hỏi của tôi là về các đối số từ khóa luôn dẫn đến các khóa thuộc loại string
. Chắc chắn không phải là một bản sao.Sẽ dict (** kwargs) luôn luôn cung cấp cho từ điển nơi Keys là loại chuỗi?
Phương pháp 1:
suit_values = {'spades':3, 'hearts':2, 'diamonds':1, 'clubs':0}
Phương pháp 2:
suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0)
Method-1 có ý nghĩa đối với tôi. Nó giống như nói với python để cung cấp cho tôi một từ điển nơi các khóa là các chuỗi và giá trị là số. Nhưng trong Phương pháp 2, làm thế nào để python biết rằng các khóa là chuỗi và không phải cái gì khác?
Đây có phải là xu hướng không? nếu có, một số ví dụ khác (ngoài các từ điển) cho thấy hành vi kinda này?
EDIT-1:
hiểu biết của tôi từ các câu trả lời là:
- Method-2 là cách
dict(**kwargs)
của việc tạo ra một từ điển. - Trong
spades=3
,spades
là một số nhận dạng Python hợp lệ, do đó, nó được lấy làm khóa của loạistring
.
Vì vậy, sẽ dict(**kwargs)
luôn kết quả trong một cuốn từ điển mà các phím là loại string
?
EDIT-2: ^^ CÓ.
tôi đã không thực sự nhận được "Và các đối số từ khóa chỉ có thể được chuyển với chuỗi như tham số" một phần. – Somjit
@Somjit Hmmm, tôi đã chỉnh sửa một chút. Hy vọng nó là rõ ràng bây giờ. – thefourtheye
Ok. Điều đó có ý nghĩa. Vì vậy, các đối số từ khóa có thể được chuyển thành chuỗi chỉ. Nhưng sau khi thay thế được thông qua, chúng cũng được 'hấp thụ' như chuỗi, tức là, được lưu trữ như là các đối tượng kiểu chuỗi? Chỉnh sửa của tôi hỏi câu hỏi đó ở cuối. – Somjit