30/09/2018, 19:30

Thay đổi giá trị là số, chuỗi khi ra khỏi hàm

Kiểu dữ liệu cơ bản: Số, chuỗi, bool sẽ mặc định là tham trị (biến trong hàm thay đổi giá trị thì biến gọi vào không đổi)
Kiểu dữ liệu cấu trúc: List, dict, set sẽ là tham biến (biến trong hàm thay đổi thì biến truyền vào khi gọi hàm sẽ thay đổi theo)
vậy làm sao e có thể thay đổi được 1 số hay chuỗi khi ra khỏi hàm ạ
e cám ơn

viết 21:35 ngày 30/09/2018

trả về số hay chuỗi mới.

Python cho trả về nhiều giá trị (có thể có kiểu ko liên quan) thông qua tuple thay vì chỉ trả về 1 kiểu như C
ví dụ:

def f():
   return 1, "Nguyen Van A", 9.5

sample = f()

thì sample sẽ là 1 tuple chứa (1, "Nguyen Van A", 9.5).
sample[0] chứa số thứ tự là số nguyên 1
sample[1] chứa họ tên là chuỗi "Nguyen Van A"
sample[2] chứa điểm số là số thực 9.5

tuple là immutable object, nghĩa là object 1 khi đã tạo rồi ko thể thay đổi được nữa. String trong Python cũng là immutable object. Muốn sửa 1 ký tự của chuỗi cho trước cũng phải tạo 1 chuỗi hoàn toàn mới

Ngọa Long viết 21:45 ngày 30/09/2018

1 hàm đơn giản thôi vd:
a,b=3,4
def convert(a,b):
a,b=b,a
convert(a,b)
print a,b

em muốn ra khỏi hàm convert thi a ,b nó thay đổi

Ngọa Long viết 21:37 ngày 30/09/2018

hay e muốn nó truyền tham biến như trong C ạ

viết 21:38 ngày 30/09/2018

Python ko có truyền tham biến. Em muốn viết vậy thì ghi là

def convert(a, b):
    return b, a

a, b = convert(a, b)
Ngọa Long viết 21:42 ngày 30/09/2018

tuple là immutable object, nghĩa là object 1 khi đã tạo rồi ko thể thay đổi được nữa. String trong Python cũng là immutable object. Muốn sửa 1 ký tự của chuỗi cho trước cũng phải tạo 1 chuỗi hoàn toàn mới

tại sao lại vậy bởi vì e vẫn thay đổi được chư
a=[0,1,2,4,5]
a[0]=6
a

lúc này nó hiện ra [6,1,2,4,5]

viết 21:36 ngày 30/09/2018

list là mutable object

Ngọa Long viết 21:43 ngày 30/09/2018

Python ko có truyền tham biến. Em muốn viết vậy thì ghi là

def convert(a, b):
return b, a

a, b = convert(a, b)

hay nhờ 1 hàm trả về nhiều gt s e cám ơn nhé

Ngọa Long viết 21:33 ngày 30/09/2018

e còn cái nữa muốn hỏi
a=[0,1,2,3,4]
def test():
a[0]=5
a

nó in ra [5,1,2,3,4]
trong khi mình có truyền a vào cho nó đâu

viết 21:45 ngày 30/09/2018

cái này khó giải thích hơn tí

a được định nghĩa trước hàm test() nên test() biết a là 1 list object. Tuy nó ko thể thay đổi a (ví dụ gán a = [], nhưng nó vẫn có thể thay đổi giá trị nằm trong a, hay thay đổi giá trị của a[i], vì a là mutable object.

Bài liên quan
0