Truyền tham biến trong Python?

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
1 Like
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}auto [a,b,c] = inc(a,b,c). Càng ngày càng giống Python :stuck_out_tongue:

4 Likes

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
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?