Tôi có thể sử dụng cùng một tên biến trong các chức năng khác nhau của python không?

DCL01-C-EX2. Biến tạm thời trong phạm vi mới bên trong macro có thể ghi đè giá trị nhận dạng trong phạm vi chứa. Tuy nhiên, ngoại lệ này không áp dụng cho các đối số của chính macro

Nhớ lại rằng một biến là nhãn cho một vị trí trong bộ nhớ. Nó có thể được sử dụng để giữ một giá trị. Trong các ngôn ngữ được nhập tĩnh, các biến có các loại được xác định trước và một biến chỉ có thể được sử dụng để giữ các giá trị của loại đó. Trong Python, chúng ta có thể sử dụng lại cùng một biến để lưu trữ các giá trị thuộc bất kỳ loại nào

Một biến tương tự như chức năng bộ nhớ được tìm thấy trong hầu hết các máy tính, ở chỗ nó chứa một giá trị có thể được truy xuất nhiều lần và việc lưu trữ giá trị mới sẽ xóa giá trị cũ. Một biến khác với bộ nhớ của máy tính ở chỗ một biến có thể có nhiều biến lưu trữ các giá trị khác nhau và mỗi biến được gọi theo tên

Định nghĩa biến

Để xác định một biến mới trong Python, chúng ta chỉ cần gán một giá trị cho một nhãn. Ví dụ: đây là cách chúng tôi tạo một biến có tên count , chứa giá trị số nguyên bằng 0.

count = 0

Đây chính xác là cú pháp giống với việc gán một giá trị mới cho một biến hiện có có tên là count . Ở phần sau của chương này, chúng ta sẽ thảo luận trong trường hợp nào thì câu lệnh này sẽ tạo ra một biến mới.

Nếu chúng ta cố gắng truy cập giá trị của một biến chưa được xác định ở bất kỳ đâu, trình thông dịch sẽ thoát với lỗi tên

Chúng ta có thể định nghĩa một số biến trong một dòng, nhưng điều này thường được coi là phong cách xấu

# Define three variables at once: count, result, total = 0, 0, 0 # This is equivalent to: count = 0 result = 0 total = 0

Để phù hợp với phong cách lập trình tốt, chúng ta nên sử dụng các tên có ý nghĩa cho các biến

Phạm vi biến đổi và thời gian tồn tại

Không phải tất cả các biến đều có thể truy cập được từ tất cả các phần trong chương trình của chúng tôi và không phải tất cả các biến đều tồn tại trong cùng một khoảng thời gian. Trường hợp một biến có thể truy cập được và thời gian tồn tại của nó tùy thuộc vào cách nó được định nghĩa. Chúng tôi gọi phần của chương trình mà một biến có thể truy cập được là phạm vi của nó và thời lượng tồn tại của biến đó là thời gian tồn tại của nó

Một biến được định nghĩa trong phần thân chính của tệp được gọi là biến toàn cục. Nó sẽ hiển thị trong toàn bộ tệp và cả bên trong bất kỳ tệp nào nhập tệp đó. Các biến toàn cầu có thể gây ra những hậu quả không lường trước được do tác động trên phạm vi rộng của chúng – đó là lý do tại sao chúng ta hầu như không bao giờ nên sử dụng chúng. Chỉ những đối tượng được dự định sử dụng trên toàn cầu, như hàm và lớp, mới được đặt trong không gian tên chung

Một biến được định nghĩa bên trong một hàm là cục bộ của hàm đó. Nó có thể truy cập từ điểm mà nó được xác định cho đến khi kết thúc chức năng và tồn tại miễn là chức năng đang thực thi. Các tên tham số trong định nghĩa hàm hoạt động giống như các biến cục bộ, nhưng chúng chứa các giá trị mà chúng ta chuyển vào hàm khi chúng ta gọi nó. Khi chúng ta sử dụng toán tử gán ( = ) bên trong một hàm, hành vi mặc định của nó là tạo một biến cục bộ mới – trừ khi một biến có cùng tên là .

Dưới đây là một ví dụ về các biến trong các phạm vi khác nhau

# This is a global variable a = 0 if a == 0: # This is still a global variable b = 1 def my_function(c): # this is a local variable d = 3 print(c) print(d) # Now we call the function, passing the value 7 as the first and only parameter my_function(7) # a and b still exist print(a) print(b) # c and d don't exist anymore -- these statements will give us name errors! print(c) print(d)

Ghi chú

Phần bên trong của thân lớp cũng là một phạm vi biến cục bộ mới. Các biến được định nghĩa trong thân lớp (nhưng bên ngoài bất kỳ phương thức lớp nào) được gọi là thuộc tính lớp. Chúng có thể được tham chiếu bằng tên trần trong cùng một phạm vi, nhưng chúng cũng có thể được truy cập từ bên ngoài phạm vi này nếu chúng ta sử dụng toán tử truy cập thuộc tính ( . ) trên một lớp hoặc một thể hiện (một đối tượng sử dụng lớp đó làm kiểu của nó). Một thuộc tính cũng có thể được đặt rõ ràng trên một thể hiện hoặc lớp từ bên trong một phương thức. Các thuộc tính được đặt trên các thể hiện được gọi là các thuộc tính thể hiện. Các thuộc tính lớp được chia sẻ giữa tất cả các phiên bản của một lớp, nhưng mỗi phiên bản có các thuộc tính phiên bản riêng của nó. Chúng ta sẽ xem xét điều này chi tiết hơn trong chương về các lớp học.

Toán tử gán

Như chúng ta đã thấy trong các phần trước, toán tử gán trong Python là một dấu bằng ( = ). Toán tử này gán giá trị ở phía bên phải cho biến ở phía bên trái, đôi khi tạo biến trước. Nếu vế phải là một biểu thức (chẳng hạn như biểu thức số học), thì nó sẽ được đánh giá trước khi phép gán diễn ra. Đây là vài ví dụ.

a_number = 5 # a_number becomes 5 a_number = total # a_number becomes the value of total a_number = total + 5 # a_number becomes the value of total + 5 a_number = a_number + 1 # a_number becomes the value of a_number + 1

Câu lệnh cuối cùng có thể hơi lạ nếu chúng ta hiểu = dưới dạng dấu bằng toán học – rõ ràng một số không thể bằng . Hãy nhớ rằng = là một toán tử gán – câu lệnh này đang gán một giá trị mới cho biến a_number which is equal to the old value of a_number plus one.

Gán giá trị ban đầu cho biến gọi là khởi tạo biến. Trong một số ngôn ngữ, việc xác định một biến có thể được thực hiện trong một bước riêng biệt trước khi gán giá trị đầu tiên. Do đó, trong các ngôn ngữ đó, một biến có thể được xác định nhưng không có giá trị – điều này có thể dẫn đến lỗi hoặc hành vi không mong muốn nếu chúng ta cố gắng sử dụng giá trị trước khi nó được gán. Trong Python, một biến được định nghĩa và gán giá trị chỉ trong một bước, nên hầu như chúng ta sẽ không bao giờ gặp phải những tình huống như thế này

Phía bên trái của câu lệnh gán phải là một mục tiêu hợp lệ

# this is fine: a = 3 # these are all illegal: 3 = 4 3 = a a + b = 3

Một câu lệnh gán có thể có nhiều mục tiêu được phân tách bằng dấu bằng. Biểu thức ở phía bên phải của dấu bằng cuối cùng sẽ được gán cho tất cả các mục tiêu. Tất cả các mục tiêu phải hợp lệ

# both a and b will be set to zero: a = b = 0 # this is illegal, because we can't set 0 to b: a = 0 = b

Toán tử gán hợp chất

Chúng ta đã thấy rằng chúng ta có thể gán kết quả của một biểu thức số học cho một biến

total = a + b + c + 50

Đếm là thao tác được thực hiện thường xuyên trong chương trình. Ví dụ: chúng ta có thể muốn đếm số lần một sự kiện nhất định xảy ra bằng cách sử dụng một biến có tên count . Chúng tôi sẽ khởi tạo biến này thành 0 và thêm một biến vào mỗi khi sự kiện xảy ra. Chúng tôi sẽ thực hiện bổ sung với tuyên bố này.

count = count + 1

Đây thực tế là một thao tác rất phổ biến. Python có một toán tử tốc ký, += cho phép chúng ta diễn đạt nó rõ ràng hơn mà không cần phải viết tên biến hai lần.

________số 8

Có một toán tử tương tự, -= , cho phép chúng ta giảm các số.

# These statements mean exactly the same thing: count = count - 3 count -= 3

Các toán tử gán phức hợp phổ biến khác được đưa ra trong bảng dưới đây

Toán tửVí dụTương đương với +=a += 5

Chủ đề