Tôi không biết liệu có thuộc tính của một hàm cung cấp __dict__
không gian bên ngoài của hàm hay không khi không gian bên ngoài này không phải là không gian chung == mô-đun, đây là trường hợp khi hàm là một hàm lồng nhau, trong Python 3.
Nhưng trong Python 2, theo như tôi biết, không có thuộc tính như vậy.
Vì vậy, khả năng duy nhất để làm những gì bạn muốn là:
1) sử dụng một đối tượng có thể thay đổi, như những người khác đã nói
2)
def A() :
b = 1
print 'b before B() ==', b
def B() :
b = 10
print 'b ==', b
return b
b = B()
print 'b after B() ==', b
A()
kết quả
b before B() == 1
b == 10
b after B() == 10
.
Nota
Giải pháp của Cédric Julien có một nhược điểm:
def A() :
global b # N1
b = 1
print ' b in function B before executing C() :', b
def B() :
global b # N2
print ' b in function B before assigning b = 2 :', b
b = 2
print ' b in function B after assigning b = 2 :', b
B()
print ' b in function A , after execution of B()', b
b = 450
print 'global b , before execution of A() :', b
A()
print 'global b , after execution of A() :', b
kết quả
global b , before execution of A() : 450
b in function B before executing B() : 1
b in function B before assigning b = 2 : 1
b in function B after assigning b = 2 : 2
b in function A , after execution of B() 2
global b , after execution of A() : 2
Toàn cầu b sau khi thực hiệnA()
đã được sửa đổi và nó có thể không được đánh dấu như vậy
Đó chỉ là trường hợp nếu có một đối tượng có định danh b trong không gian tên chung