Làm thế nào để truyền tham biến trong Python?
Mình đã thử như thế này mà không được?
>>> def inc(a):
a=a+1
>>> a=1
>>> inc(a)
>>> a
1
>>>
Làm thế nào để truyền tham biến trong Python?
Mình đã thử như thế này mà không được?
>>> def inc(a):
a=a+1
>>> a=1
>>> inc(a)
>>> a
1
>>>
return a . chứ a vẫn ==1
Dùng global a thử đi bác
>>> def inc(b):
... global a
... a=a+1
...
>>> a=1
>>> inc(a)
>>> a
2
def inc(a):
return a + 1
a = inc(a)
cần tham chiếu để làm gì @_@ Python nó cho trả về nhiều kiểu, cần gì tham chiếu nữa
def inc(a,b,c):
return a+1, b+2, c+3 # trả về tuple (a,b,c)
a,b,c = 1,2,3
a,b,c = inc(a,b,c) #tách tuple (a,b,c) ra a=2,b=4,c=6
cái cho trả về nhiều kiểu khác nhau này rất sướng:
C++0x thì phải tạo 1 cái struct chứa 3 kiểu, ví dụ a là int, b là float, c là double thì tạo 1 cái struct có 3 biến int, float, double. rồi trả về struct này, rồi phải gán từng biến trong struct này ra vào a,b,c… rất vất vả nên người ta xài tham chiếu.
C++11 thì có kiểu std::tuple<int,float,double>
, trả về thì phải gọi return std::make_tuple(a+1,b+2,c+3)
, muốn tách tuple ra thì phải xài std::tie(a,b,c) = inc(a,b,c)
.
C++17 thì cho phép return {a+1,b+2,c+3}
và auto [a,b,c] = inc(a,b,c)
. Càng ngày càng giống Python
Kiểu int
trong python là immutable type, bạn có thể dùng mutable type để tạo biến a:
>>> def inc(a):
a[0] += 1
>>> a = [0]
>>> inc(a)
>>> a[0]
1