Tác động của hàm và biến trong python

Hôm nay mình có học tới bài biến toàn cục và biến cục bộ trong python. Mình có xem qua các ví dụ thể hiện sự thay đổi về biến trong các hàm thì tự nhiên bị rối não chỗ này.Dưới đây là 2 bài code:

g=5
def increment():
    g=2
    g+=1
increment()
print(g)

kết quả trên thì g=5
Hàm increment() không tác động vào được biến toàn cục
#----------------------------------------------

g=5
for i in range(10):
    g=2
    g+=1
print(g)

kết quả cho ra bằng 3. Ở đây vì sao g ở trong không phải là biến toàn cục nhưng giá trị của nó vẫn được đưa ra ngoài. sao hàm for tác động được vào giá trị trong biến toàn cục được trong khi không hề có từ khóa “global g” vậy ạ.

For block không sinh ra local scope do đó không có chuyện đưa biến ra ngoài ở đây, vẫn là cùng scope với biến g thôi. Trong python thì chỉ có function mới sinh ra local scope thì mới cần từ khóa global

7 Likes

Nếu đúng như vậy thì mình cảm ơn nhiều ạ. à tiện thể cho mình hỏi là bạn có tài liệu hay dẫn chứng cho câu trả lời này không ạ. Mình có search bằng cả 2 ngôn ngữ Anh_Việt trong cả ngày hôm nay nhưng vẫn k tìm thấy giải thích. ("Mình k có ý không tin tưởng câu trả lời đâu)

@qloved đã nhắc đến từ khóa global đấy! python keyword global

4 Likes

thanks mọi người nha

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?