30/09/2018, 22:00

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
>>> 
Nap Fvn viết 00:06 ngày 01/10/2018

return a . chứ a vẫn ==1

Dùng global a thử đi bác

Nap Fvn viết 00:16 ngày 01/10/2018
>>> def inc(b):
...     global a
...     a=a+1
...
>>> a=1
>>> inc(a)
>>> a
2
viết 00:11 ngày 01/10/2018
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

anon10499953 viết 00:08 ngày 01/10/2018

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
Bài liên quan
0