Tôi đã học Ruby và Python đồng thời và một trong những điều tôi nhận thấy là 2 ngôn ngữ này dường như đối xử với phạm vi khác nhau. Dưới đây là ví dụ về ý tôi:Phạm vi trong Ruby và Python
# Python
a = 5
def myfunc():
print a
myfunc() # => Successfully prints 5
# Ruby
a = 5
def myfunc
puts a
end
myfunC# => Throws a "NameError: undefined local variable or method `a' for main:Object"
Dường như khối def có thể truy cập các biến được khai báo ngoài phạm vi ngay lập tức bằng Python nhưng không phải trong Ruby. Ai đó có thể xác nhận liệu sự hiểu biết của tôi có đúng không? Và nếu có, liệu một trong những cách suy nghĩ về phạm vi này có phổ biến hơn trong lập trình không?
Đối với phía Python, bạn nói đúng (rõ ràng là có nhiều hơn để phạm vi, nhưng cách viết của bạn không mâu thuẫn với nó). – delnan
Câu trả lời bằng Python có thể có tại đây: http://stackoverflow.com/questions/370357/python-variable-scope-question –