Viết một vài dòng mã Python, X
không tham chiếu bất kỳ biến toàn cục nào, sao cho
def method():
X
print(a)
method()
in 1
nhưng
def method():
X
X
print(a)
method()
bản in 2
.
Vì vậy, tôi ghét trở thành một stickler, nhưng có vẻ như vars
và locals
thực sự là các biến toàn cục trong Python:
def test_global_1():
global vars, locals
vars = lambda: 2
locals = lambda: 3
def test_global_2():
print(vars())
print(locals())
test_global_1()
test_global_2()
Ngoài ra, có vẻ như mọi người muốn thấy các tiêu chí chiến thắng khách quan cho các câu đố như thế này. Độ dài mã không thực sự cảm thấy ngay tại đây vì vậy có lẽ chúng ta có thể tạo ra một hệ thống các điểm brownie cho các tính năng mới lạ khác nhau của mã? Tôi không chắc chính xác những gì có thể nhưng đây là một sự khởi đầu:
- +1 cho thực sự thực sự không có toàn cầu (không
vars
hoặclocals
) - +1 vì là người đầu tiên đăng một kỹ thuật cụ thể
- +1 cho giải pháp ngắn nhất được đăng
- +1 cho một giải pháp chỉ liên quan đến một câu lệnh Python
- +1 cho các "hack" thú vị như tham gia ở các ranh giới từ vựng
- +1 không sử dụng ngoại lệ
Và nếu bạn có thể nghĩ nhiều hơn, bạn có thể chỉnh sửa câu hỏi này để thêm vào danh sách.
Vấn đề này có thể được giải quyết mà không cần sử dụng ngoại lệ và không sử dụng toàn cầu như vars
và locals
không? Tôi nghi ngờ điều đó có thể, mặc dù tôi vẫn chưa biết chính xác ...
X
, nhưng có những lựa chọn khác.