Tôi có một số mã mà không một awful nhiều định dạng chuỗi, Thông thường, tôi kết thúc với mã dọc theo dòng:Trình định dạng chuỗi có kéo biến từ thực tiễn xấu phạm vi gọi điện của nó không?
"...".format(x=x, y=y, z=z, foo=foo, ...)
Nơi tôi đang cố gắng để suy một số lượng lớn các biến thành một chuỗi lớn .
Có lý do chính đáng để không viết chức năng như thế này sử dụng mô-đun inspect
để tìm các biến nội suy không?
import inspect
def interpolate(s):
return s.format(**inspect.currentframe().f_back.f_locals)
def generateTheString(x):
y = foo(x)
z = x + y
# more calculations go here
return interpolate("{x}, {y}, {z}")
bạn cũng có thể chỉ cần sử dụng 'người dân địa phương() 'hoặc' globals() ' –
@FC: Trên thực tế, nhưng có' Nội suy ("...", người dân địa phương **()) 'tất cả các nơi trông lộn xộn, cộng với nó thất bại trong trường hợp hiếm hoi mà' s' là một biến địa phương, vì nó cố gắng thiết lập đối số đầu tiên hai lần – Eric
Tôi sẽ đặt câu hỏi rõ ràng. Tại sao các biến này trong phạm vi toàn cầu và không có trong từ điển ở vị trí đầu tiên? – Wilduck