2016-06-07 24 views
6

Tại sao chúng ta phải làm điều này:Tại sao biến phải được khai báo một biến toàn cầu trước khi nó được gán?

global x 
x = "Hello World!" 

Khi điều này là dễ đọc hơn:

global x = "Hello World" 

Tại sao điều này, là có một lý do đằng sau nó?

+7

Python không có bất kỳ công cụ sửa đổi biến nào khác, nhưng có các câu lệnh khác; điều này do đó giữ cho ngữ pháp đơn giản hơn. Vì đó là dễ đọc hơn, đó là chắc chắn là một vấn đề của ý kiến. – jonrsharpe

+0

Nó sẽ trở nên ít đọc được với nhiều biến hơn. ví dụ: 'global x =" Hello world ", y =" What's up world ", z =" Goodbye world ", nó hơi đầy. – BradTheBrutalitist

+0

Tôi không nghĩ rằng bạn sẽ nhận được bất kỳ thanh câu trả lời dứt khoát nào yêu cầu Guido hoặc một số nhà phát triển. –

Trả lời

1

Mục tiêu của Python là dễ đọc nhất có thể. Để đạt được mục tiêu này, người dùng phải bị buộc phải hành động theo cách được xác định rõ ràng - ví dụ: bạn phải sử dụng chính xác bốn dấu cách. Và giống như vậy, nó xác định rằng từ khóa global là một chỉ số đơn giản. Điều này có nghĩa là:

Một câu lệnh đơn giản được bao gồm trong một dòng logic duy nhất. Simple Statements

Programmer của lưu ý: toàn cầu là một chỉ thị để phân tích cú pháp. Nó chỉ áp dụng cho mã được phân tích cú pháp cùng lúc với câu lệnh chung. The global statement

Nếu bạn muốn viết những dòng này:

global x = 5 

Bạn sẽ có hai phép toán logic:

  1. Interpreter xin vui lòng sử dụng x toàn cầu không phải là một địa phương một
  2. Gán 5 đến x

trong một dòng. Cũng có vẻ như global chỉ áp dụng cho dòng hiện tại chứ không áp dụng cho toàn bộ khối mã.

TL; TR

Đó là để buộc người dùng phải viết tốt hơn readably mã, được tách ra để hoạt động logic duy nhất.

+0

Falx, cảm ơn vì đã dành thời gian và công sức để trả lời câu hỏi của tôi, giờ tôi đã hiểu rõ hơn, +1. –

-1

Tôi thích nghĩ rằng nó tập trung vào thực tế là bạn đang sử dụng hình cầu, luôn là một thực tiễn đáng ngờ trong kỹ nghệ phần mềm. Python chắc chắn không phải là đại diện cho một giải pháp vấn đề theo cách nhỏ gọn nhất. Tiếp theo bạn sẽ nói rằng chúng ta chỉ nên thụt lề một không gian, hoặc sử dụng các tab! ;-)

+0

Holdenweb, cảm ơn bạn đã dành thời gian và công sức để trả lời câu hỏi của tôi, +1. –

+1

Bằng mọi cách, vui lòng đánh dấu nó xuống – holdenweb

0

Các document viết rằng

tên được liệt kê trong một tuyên bố global phải không được sử dụng trong khối cùng mã textually trước rằng tuyên bố toàn cầu.

Chi tiết triển khai CPython: Triển khai hiện tại không thực thi hai hạn chế sau, nhưng chương trình không được lạm dụng quyền tự do này, vì việc triển khai trong tương lai có thể thực thi chúng hoặc âm thầm thay đổi ý nghĩa của chương trình.

Đối với câu hỏi dễ đọc, tôi nghĩ câu hỏi thứ hai có vẻ giống như câu lệnh C. Ngoài ra nó không có cú pháp chính xác

+0

Gdlmx, cảm ơn bạn vì đã dành thời gian và công sức để trả lời câu hỏi của tôi, +1. –

Các vấn đề liên quan