thảo luận [Python] Thread dành cho anh em Python

Anon914

Senior Member
Mấy hôm lướt diễn đàn thấy anh em kêu gọi lập box của các ngôn ngữ cho dễ thảo luận, mà tôi hóng mãi không thấy ai lập.
Nay mạn phép xin được lập ra thread này để cho những người đang học về python hay có hứng thú với python có nơi để thảo luận trao đổi với nhau.
 
lập trình hướng mạng thì python với golang cái nào nhiều dữ liệu hơn hả thím ?
 
Mấy hôm lướt diễn đàn thấy anh em kêu gọi lập box của các ngôn ngữ cho dễ thảo luận, mà tôi hóng mãi không thấy ai lập.
Nay mạn phép xin được lập ra thread này để cho những người đang học về python hay có hứng thú với python có nơi để thảo luận trao đổi với nhau.
tôi mới build forum cho ae lập trình mong ae vào ủng hộ và trải nghiệm
 
cho em hỏi về biến trong python với. Khi nào thì dùng từ khóa global trong hàm con. Với có python có phân biệt biến tham chiếu và biến tham trị không
 
cho em hỏi về biến trong python với. Khi nào thì dùng từ khóa global trong hàm con. Với có python có phân biệt biến tham chiếu và biến tham trị không
Câu hỏi 1 về global: khi mà cái PyCharm nó không suggest cho mình là đọc được biến từ bên ngoài hàm :sweat:.
//Nói thế chứ nó liên quan gì đấy đến scope của biến... Em Google ra xong lười đọc quá...
Câu hỏi 2 về biến tham chiếu và biến tham trị: Python chỉ có mutable với immutable, tức là "thay đổi được", hoặc "không thay đổi được". int hoặc str là immutable, chỉ thay đổi được bằng cách gán sang giá trị mới. list hoặc set hoặc biến mình khởi tạo bằng constructor thì là mutable, mình có thể gọi hàm, hoặc gán các attribute bên trong nó với giá trị khác :sad:.
 
cho em hỏi về biến trong python với. Khi nào thì dùng từ khóa global trong hàm con. Với có python có phân biệt biến tham chiếu và biến tham trị không
Trong hàm con nếu biến được mark là global thì khi ra khỏi hàm, vẫn có thể sử dụng được biến đó.
Nên hạn chế sử dụng global cho đỡ rối flow và dễ debug, nếu dev quản lý được thì cũng thoải mái mà dùng thôi.
Ví dụ:
1587640449391.png

Tham chiếu và tham trị là khái niệm của C, C++ và các ngôn ngữ khác, bạn nên quên đi để học Python cho đỡ rối. ^^
 
Trong hàm con nếu biến được mark là global thì khi ra khỏi hàm, vẫn có thể sử dụng được biến đó.
Nên hạn chế sử dụng global cho đỡ rối flow và dễ debug, nếu dev quản lý được thì cũng thoải mái mà dùng thôi.
Ví dụ:
View attachment 43079
Tham chiếu và tham trị là khái niệm của C, C++ và các ngôn ngữ khác, bạn nên quên đi để học Python cho đỡ rối. ^^
Thanks thím. Về biến tham chiếu với tham trị. Mình từng bị lỗi khi khai biến list b=a, khi mình thay đổi list a thì list b cũng thay đổi theo nên mình muốn tìm hiểu kỹ lý do
 
Trong hàm con nếu biến được mark là global thì khi ra khỏi hàm, vẫn có thể sử dụng được biến đó.
Nên hạn chế sử dụng global cho đỡ rối flow và dễ debug, nếu dev quản lý được thì cũng thoải mái mà dùng thôi.
Ví dụ:
View attachment 43079
Tham chiếu và tham trị là khái niệm của C, C++ và các ngôn ngữ khác, bạn nên quên đi để học Python cho đỡ rối. ^^
Mình muốn tạo 1 biến global để 2 3 hàm sử dụng chung thì nên xử lý sao cho đẹp hả thím.
 
Thanks thím. Về biến tham chiếu với tham trị. Mình từng bị lỗi khi khai biến list b=a, khi mình thay đổi list a thì list b cũng thay đổi theo nên mình muốn tìm hiểu kỹ lý do
Cái này bác tìm hiểu về deep copy và shallow copy nhé. Khá thú vị. ^^

Mình muốn tạo 1 biến global để 2 3 hàm sử dụng chung thì nên xử lý sao cho đẹp hả thím.
Thì bác cứ dùng thôi. ^^
Hoặc ở hàm main mỗi lần gọi thì truyền biến vào từng hàm.
Có mấy cách nữa nhưng mà mình cũng ít dùng với lười tìm hiểu. ^^
 
Thanks thím. Về biến tham chiếu với tham trị. Mình từng bị lỗi khi khai biến list b=a, khi mình thay đổi list a thì list b cũng thay đổi theo nên mình muốn tìm hiểu kỹ lý do
À, lỗi này là do nó dùng con trỏ, cả 2 thằng đều trỏ đến cùng vùng nhớ. Nếu bạn thay đổi phần tử ở b thì a cũng sẽ đổi.
 
python có code được tool apply với hệ thống ko vậy các thím, thấy cần chạy đc phải cài thêm thư viện,khá rắc rối so vs những ngôn ngữ bậc thấp như batch hay bash
 
Thanks thím. Về biến tham chiếu với tham trị. Mình từng bị lỗi khi khai biến list b=a, khi mình thay đổi list a thì list b cũng thay đổi theo nên mình muốn tìm hiểu kỹ lý do

Bác đã học python ở đâu mà chưa biết cái này, đây là kiến thức introductory trong python, nếu tài liệu bác dạy đến list mà không nói cái này thì em nghĩ bác nên học tài liệu khác đi.

Nếu bác dự tính kiếm cơm bằng python và muốn vững về nó thì học cuốn Learning Python và Programming Python đều của Mark Lutz, đảm bảo nền móng vững chắc.
Nếu bác đang cần học python gấp để xong task hoặc là không có nhu cầu sâu về python thì có thể học những cuốn sách khác

Về câu hỏi của bác: In python, everything is an object. Kể cả function cũng là object, số nguyên 1 cũng là object, module import vào cũng là object. Tên biến trong python luôn là một reference tới một object nào đó. Object có immutable và mutable, và list là mutable object. Khi a = [1, 2, 3] thì a sẽ là reference tới một vùng nhớ trong máy tính biểu thị cái object list [1,2,3]. Khi b=a nghĩa là b cũng là reference tới cái list đã khai báo lúc đầu luôn, do vậy khi bác thay đổi cái list đó thì lúc print(b) và print(a) đều thấy đã thay đổi, vì dưới memory chỉ có 1 cái list từ đầu tới cuối thôi.
Bác biết C++ thì nói nhanh là a, b giống như reference trong C++ bác cũng hiểu rồi, nhưng mà bác đăng câu hỏi như vậy thì em nghĩ tài liệu bác đang xài để học python nó có vấn đề, hoặc là bác đang muốn tìm hiểu python nhanh nên chưa nắm được cái model của nó.
 
Bác đã học python ở đâu mà chưa biết cái này, đây là kiến thức introductory trong python, nếu tài liệu bác dạy đến list mà không nói cái này thì em nghĩ bác nên học tài liệu khác đi.

Nếu bác dự tính kiếm cơm bằng python và muốn vững về nó thì học cuốn Learning Python và Programming Python đều của Mark Lutz, đảm bảo nền móng vững chắc.
Nếu bác đang cần học python gấp để xong task hoặc là không có nhu cầu sâu về python thì có thể học những cuốn sách khác

Về câu hỏi của bác: In python, everything is an object. Kể cả function cũng là object, số nguyên 1 cũng là object, module import vào cũng là object. Tên biến trong python luôn là một reference tới một object nào đó. Object có immutable và mutable, và list là mutable object. Khi a = [1, 2, 3] thì a sẽ là reference tới một vùng nhớ trong máy tính biểu thị cái object list [1,2,3]. Khi b=a nghĩa là b cũng là reference tới cái list đã khai báo lúc đầu luôn, do vậy khi bác thay đổi cái list đó thì lúc print(b) và print(a) đều thấy đã thay đổi, vì dưới memory chỉ có 1 cái list từ đầu tới cuối thôi.
Bác biết C++ thì nói nhanh là a, b giống như reference trong C++ bác cũng hiểu rồi, nhưng mà bác đăng câu hỏi như vậy thì em nghĩ tài liệu bác đang xài để học python nó có vấn đề, hoặc là bác đang muốn tìm hiểu python nhanh nên chưa nắm được cái model của nó.
cảm ơn bác. trc em coi mấy khoa online để làm tools. giờ đang học kỹ lại.
Btw, như vậy muốn gán b=a, nhưng không muốn b thay đổi theo a thì làm thế nào vậy thím
em đang làm theo cách sau thì chạy ok:
a= [1,2,3]
b=list()
b=a
 
Last edited:
Back
Top