Tôi đang sử dụng chuỗi mẫu để tạo một số tệp và tôi thích sự ngắn gọn của chuỗi f mới cho mục đích này, để giảm mã mẫu trước đó của tôi khỏi một cái gì đó như thế này:
template_a = "The current name is {name}"
names = ["foo", "bar"]
for name in names:
print (template_a.format(**locals()))
Bây giờ tôi có thể làm điều này, trực tiếp thay thế các biến:
names = ["foo", "bar"]
for name in names:
print (f"The current name is {name}")
Tuy nhiên, đôi khi có ý nghĩa nếu mẫu được xác định ở nơi khác - cao hơn trong mã hoặc được nhập từ tệp hoặc thứ gì đó. Điều này có nghĩa là mẫu là một chuỗi tĩnh có các thẻ định dạng trong đó. Điều gì đó sẽ xảy ra với chuỗi để yêu cầu trình thông dịch giải thích chuỗi đó là một chuỗi f mới, nhưng tôi không biết liệu có điều đó xảy ra hay không.
Có cách nào để đưa vào một chuỗi và nó được hiểu là chuỗi f để tránh sử dụng .format(**locals())
cuộc gọi không?
Lý tưởng nhất là tôi muốn có thể viết mã như thế này ... ( magic_fstring_function
phần tôi không hiểu nằm ở đâu):
template_a = f"The current name is {name}"
# OR [Ideal2] template_a = magic_fstring_function(open('template.txt').read())
names = ["foo", "bar"]
for name in names:
print (template_a)
... với đầu ra mong muốn này (mà không cần đọc tệp hai lần):
The current name is foo
The current name is bar
... nhưng sản lượng thực tế tôi nhận được là:
The current name is {name}
The current name is {name}
f
chuỗi. Mộtf
chuỗi không phải là dữ liệu, và nó chắc chắn không phải là một chuỗi; nó là mã. (Kiểm tra nó vớidis
mô-đun.) Nếu bạn muốn mã được đánh giá sau này, bạn sử dụng một hàm.