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
Thay đổi giá trị là số, chuỗi khi ra khỏi hàm
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
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
hay e muốn nó truyền tham biến như trong C ạ
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)
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]
vì list
là mutable object
hay nhờ 1 hàm trả về nhiều gt s e cám ơn nhé
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
cái này khó giải thích hơn tí
vì 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.