Python
Duyệt các bài viết được gắn thẻ Python
104 bài viết

Biến toàn cục (global), biến cục bộ (local), biến nonlocal trong Python
Bài viết được sự cho phép của tác giả Nguyễn Chí Thức Trong bài Python này bạn sẽ học về biến toàn cục (global), biến cục bộ (local), biến nonlocal trong Python và trường hợp sử dụng các biến này. Biến toàn cục trong Python Trong ngôn ngữ lập trình Python , một biến được khai báo bên ngoài hàm hoặc trong phạm vi toàn cục được gọi là biến toàn cục hay biến global. Biến toàn cục có thể được truy cập từ bên trong hoặc bên ngoài hàm. Tuyển dụng lập trình python mới nhất trên Station D Hãy xem ví dụ về cách tạo biến toàn cục trong Python. x = "Biến toàn cục" #khai báo biến x #Gọi x từ trong hàm vidu() def vidu (): print( "x trong hàm vidu() :" , x) vidu() #Gọi x ngoài hàm vidu() print( "x ngoài hàm vidu():" , x) Trong ví dụ trên, ta khai báo biến x là biến toàn cục, và định nghĩa hàm vidu() để in biến x. Cuối cùng ta gọi hàm vidu() để in giá trị của biến x. Chạy code trên ta sẽ được kết quả là: x trong hàm vidu(): Biến toàn cục x ngoài hàm vidu(): Biến toàn cục Chuyện gì sẽ xảy ra nếu bạn thay đổi giá trị của x trong hàm? x = 2 def vidu (): x=x* 2 print(x) vidu() Nếu chạy code này bạn sẽ nhận được thông báo lỗi: UnboundLocalError: local variable 'x' referenced before assignment Lỗi này xuất hiện là do Python xử lý x như một biến cục bộ và x không được định nghĩa trong vidu(). Để thay đổi biến toàn cục trong một hàm bạn sẽ phải sử dụng từ khóa global. Chúng tôi sẽ nói kỹ hơn trong bài...

Dùng MicroPython với wifi board ESP-8266
Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Khi trở thành một trong những ngôn ngữ lập trình phổ biến nhất thế giới, Python không chỉ được dùng trong làm web, data science, hay sysadmin tool mà nó còn đá sang cả một lĩnh vực vốn giới hạn về tài nguyên: nhúng. Bình thường khi bật Python lên để in ra màn hình dòng “hello, world” ta đã dùng tới 8MB bộ nhớ. Vậy nên việc dùng Python cho lập trình nhúng thường nghe có vẻ không phù hợp. MicroPython ra đời, là một bản thu gọn của Python, tối ưu chạy trên các vi xử lý cũng như các môi trường giới hạn về tài nguyên. Bài này khám phá việc chạy MicroPython trên một thiết bị tí hon có tên WEMOS D1 mini. WEMOS D1 mini Là 1 bảng mạch điện có khả năng thu phát sóng wifi (wifi board) có kích thước nhỏ hơn ngón chân cái của người lớn, thiết bị này có giá 2 USD. Bảng mạch này sử dụng vi điều khiển (microcontroller) ESP-8266, với xung nhịp 80MHz/160MHz, 96KB RAM và 4 MB Flash. Microcontroller A microcontroller is a small computer on a single integrated circuit. In modern terminology, it is similar to, but less sophisticated than, a system on a chip or SoC; an SoC may include a microcontroller as one of its components. A microcontroller contains one or more CPUs along with memory and programmable input/output peripherals. Một vi điều khiển là một máy tính nhỏ, trên một mạch điện tử (P/S: SoC là khái niệm tương tự, nhưng phức tạp hơn). Nó có một hoặc nhiều CPU, memory và chỗ để thực hiện vào ra dữ liệu. Hãy nhìn vào chiếc máy bàn hay laptop bạn đang...

Một số thủ thuật hay trong Python
Bài viết được sự cho phép của tác giả Nguyễn Chí Thức Copy một list Giả dụ chúng ta có đoạn code sau: >>> A = [ 1 , 2 , 3 , 4 , 5 ] >>> B = A thì nếu chúng ta in list B thì sẽ được các phần tử của list A, nhưng thực ra B chỉ là một biến tham chiếu đến A trong bộ nhớ, tức là thực chất trong bộ nhớ chỉ có 1 list [1, 2, 3, 4, 5] và cả A và B cùng trỏ đến list đó chứ không phải A và B có 2 list giống nhau. 71 trích đoạn code Python cho các vấn đề hàng ngày của bạn Bỏ túi cheatsheet dành cho Python newbie >>> C = A[:] Còn trong dòng code trên thì chúng ta mới thực sự tạo ra một list khác là C có các phần tử giống như list A. Bây giờ chúng ta thử đổi một phần tử trong list A: >>> A[ 0 ] = 8 >>> A >>> [ 8 , 2 , 3 , 4 , 5 ] >>> B >>> [ 8 , 2 , 3 , 4 , 5 ] >>> C >>> [ 1 , 2 , 3 , 4 , 5 ] Rõ ràng khi in list A và B đều cho kết quả giống nhau vì chúng cùng tham chiếu tới một list, nhưng C thì lại khác vì các phần tử trong list C tồn tại độc lập. Việc làm python các công ty lớn Khởi tạo giá trị mặc định cho đối tượng Dictionary Các đối tượng Dictionary được tạo ra là rỗng. Nhiều khi chúng ta làm việc với Dictionary mà không biết khóa đó có giá trị hay...
![[Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module](https://img-cdn.stationd.blog/w800-h600/featured/class-trong-python-218x150_20250424021716_74252f78.png)
[Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module
Tất cả ví dụ cho đến thời điểm này đều được thực thi trong command line hoặc từ một file python .py . Tuy nhiên, đối với các ứng dụng lớn, có nhiều chức năng thì phân chia nhỏ dự án thành các file khác nhau sẽ giúp dễ bảo trì và tái sử dụng các thành phần đã thiết kế. Chương này sẽ giúp bạn thiết kế các tính năng theo mô hình các module và khi cần thì sẽ gọi file tương ứng và sử dụng. Việc làm python mới ra trường cho bạn 3.1. Các loại module / thư viện Có 3 loại module thường thấy là: Viết bằng Python: có phần mở rộng là .py Các thư viện liên kết động: có phần mở rộng là .dll , .pyd , .so , .sl ,… C-Module liên kết với trình phiên dịch. [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module Phần 3 : Phân chia module”] [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module Phần 4 : Class”] [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module Phần 5 : thao tác trên tập tin và thư mục”] [Python cơ bản thường dùng trong công việc] Phần 3 : Phân chia module Phần 6 : Xử lý hình ảnh”] 3.2. Đường dẫn tìm để load module Để tải một module vào script của bạn, sử dụng cú pháp đơn giản: import modulename khi gặp câu lệnh trên thì trình biên dịch sẽ tiến hành tìm kiếm file module tương ứng theo thứ tự thư mục sau: Thư mục hiện hành mà script đang gọi Các thư mục trong PYTHONPATH (nếu có set) Các thư mục cài đặt chuẩn trên Linux/Unix.....

Biết Python – quen ngay Julia
Bài viết được sự cho phép của tác giả Nguyễn Việt Hưng Julia là ngôn ngữ lập trình mới, trông rất giống code Python, chạy nhanh hơn Python3 ít nhất 2 lần và có nhiều tính năng hấp dẫn. Bạn không cần phải từ bỏ Python hay ngôn ngữ XYZ để học Julia, Julia chỉ đơn giản là một bông hoa đẹp mà ai thích… thì múc. Julia là ngôn ngữ lập trình “làm gì cũng được”, nhưng được tập trung vào lĩnh vực tính toán khoa học và muốn thế chỗ Python (nhưng đường còn dài, và còn nhiều hơn chông gai). Cài đặt Xem https://docs.julialang.org/en/v1/ Tại thời điểm viết bài (2019 tháng 4), Julia ở bản 1.1.0 – đã ổn định hơn trước rất nhiều, ít bug hơn, chạy nhanh hơn. Từ Python ngó sang Julia trông rất giống Python , cách dùng các học, cách code cũng tương tự, nên nếu biết Python thì việc viết được code để làm công việc thường ngày (của 1 DevOps) chỉ trong vòng vài tiếng. REPL Gõ lệnh trực tiếp bằng lệnh julia trên Linux/MacOS $ julia _ _ _ _ ( _ ) _ | Documentation : https :// docs . julialang . org ( _ ) | ( _ ) ( _ ) | _ _ _ | | _ __ _ | Type "?" for help , "]?" for Pkg help . | | | | | | |/ _ ` | | | | |_| | | | (_| | | Version 1.1.0 (2019-01-21) _/ |__'_|_|_|__'_| | Official https://julialang.org/ release |__/ | julia> 1 + 1 2 Đây gọi là chế độ “REPL” (Read-Eval-Print-Loop) == (gõ vào – chạy – in ra kết quả – cứ thế mà làm). Những cải tiến đáng giá của Python...

Python Lists: Append vs Extend (Có ví dụ)
Bài viết được sự cho phép của tác giả Phạm Văn Nguyên Hai trong số các phương thức Danh sách phổ biến nhất trong Python là các phương thức “append” và “extend” Tuy nhiên, hai phương thức này là nguyên nhân của rất nhiều nhầm lẫn và hiểu lầm giữa những người mới bắt đầu Python. Trong bài viết này, tôi sẽ giải thích từng phương pháp làm gì và cho bạn thấy chính xác sự khác biệt giữa chúng. Đầu tiên: Append append phương thức được sử dụng để thêm một đối tượng vào một danh sách. Đối tượng này có thể thuộc bất kỳ kiểu dữ liệu , chuỗi, số nguyên, boolean hoặc thậm chí một danh sách khác. Giả sử bạn muốn thêm một mục vào danh sách L ban đầu có 4 phần tử >>> L = [1, 2, 3, 4] >>> L.append(5) >>> L [1, 2, 3, 4, 5] Như bạn có thể thấy, phương thức chắp thêm mục 5 mới vào danh sách. Không cần phải nói, độ dài của danh sách đã tăng thêm một (và chỉ một) vì phương thức chắp thêm chỉ thêm một đối tượng vào danh sách. Đây là một sự khác biệt quan trọng bởi vì bạn sẽ thấy sau này không nhất thiết phải là trường hợp “extend” . Được rồi, vì tò mò, hãy thử nối thêm một danh sách vào danh sách của chúng tôi. >>> L = [1, 2, 3, 4] >>> L.append([5, 6, 7]) >>> L [1, 2, 3, 4, [5, 6, 7]] Vì vậy, những gì chúng tôi đã làm ở đây là chúng tôi đã thêm một đối tượng (có thể thuộc danh sách loại) vào danh sách L của chúng tô. Một lần nữa, sau khi sửa đổi, chiều dài...
![[Python cơ bản thường dùng trong công việc] Phần 12 : Kết nối RabbitMQ](https://img-cdn.stationd.blog/w800-h600/featured/class-trong-python-218x150_20250424085601_f5e1af0f.png)
[Python cơ bản thường dùng trong công việc] Phần 12 : Kết nối RabbitMQ
RabbitMQ là gì? RabbitMQ là một phần mềm cho phép xây dựng Message Queue theo protocol AMQP và khá thông dụng trên thế giới. Để kết nối đến RabbitMQ trên Python, ta sẽ sử dụng thư viện pika . 12.1. Cài đặt Có thể xem thêm về hướng dẫn cài đặt thư viện này tại https://pika.readthedocs.org/en/0.10.0/ Đơn giản cài thông qua pip là: $ sudo pip install pika 12.2 Gởi một message đến Server – Provider Ví dụ để gởi một message đến server import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='hello') channel.basic_publish(exchange='', routing_key='hel lo', body='Hello World!') print " [x] Sent 'Hello World!'" connection.close() Để gởi một message, chúng ta cần kết nối đến server và khai báo một channel, ở đây là channel có tên là hello . Sau khi khai báo channel, tao tiến hành gởi message có nội dung Hello World! thông qua channel này, kèm theo khai báo routing_key là hello . Routing Key sẽ giúp điều hướng message này đến đúng các worker được khai báo nhận message theo routing key (Consumer) Tuyển dụng python lương cao 12.3. Nhận message – Consumer Ở bước trước, ta đã tạo một message lên queue. Ở bước này, ta sẽ khai báo một worker xử lý các message nhận được từ channel hello . import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue='hello') print ' [*] Waiting for messages. To exit press CTR L+C' def callback(ch, method, properties, body): print " [x] Received %r" % (body,) channel.basic_consume(callback, queue='hello', no_a ck=True) channel.start_consuming() Đoạn code này cũng có phần khai báo connection , channel . Tuy nhiên, vì là consumer nên sẽ sử dụng phương thức basic_consume để lắng nghe trên queue hello , khi có message đến sẽ gọi hàm callback() để xử lý. Trong trường hợp ví...

Hướng dẫn cài đặt, lập trình Python trên Ubuntu (Linux)
Bài viết được sự cho phép của tác giả Trần Hữu Cương Hướng dẫn cài đặt, lập trình Python trên Ubuntu (Linux). Cài Python qua repository Đây là cách đơn giản nhất, các bạn không cần phải lên trang chủ python để tải file, giải nén… Chỉ cần chạy lệnh là được. B1: Update lại repository sudo apt - get update B2: Cài python sudo apt - get install python Mặc định nó sẽ cài cho bạn 2 bản python là 2.x và 3.x Để kiểm tra version của python sau khi cài đặt các bạn dùng lệnh sau: Với python 2.x: python hoặc python -V Với python 3.x: python3 hoặc python3 -V Học Python: Từ Zero đến Hero (phần 1) Demo: Chạy lệnh python và nhập print('hello') sau đó ấn enter sẽ thấy nó in ra dòng hello Chuyển đổi hệ cơ số trong Python Cài đặt pip cho python pip (python package manager) là một trình quản lý module, thư viện của python. Ví dụ bạn muốn thực hiện kết nối tới database bằng python thì bạn phải có module mysqlclient (trong java thì là thư viện jdbc). Nhưng khi cài python nó chưa có sẵn module đó, để cài module mysqlclient ta cài qua pip bằng lệnh pip install mysqlclient Thông thường các bản python mới sẽ tích hợp sẵn pip. Để kiểm tra pip đã cài chưa, các bạn dùng lệnh pip –version với python 2.x hoặc pip3 –version với python 3.x Trường hợp python của bạn chưa tích hợp sẵn pip thì bạn có thể cài đặt pip bằng lệnh sau: sudo apt - get install pip hoặc sudo apt - get install pip3 References: https://docs.python.org/3/ Bài viết gốc được đăng tải tại codecute.com Có thể bạn quan tâm: Dùng MicroPython với wifi board ESP-8266...

71 trích đoạn code Python cho các vấn đề hàng ngày của bạn
Để bắt đầu, mình sẽ khởi động bằng cách chuyển tất cả trích đoạn code trong bài viết này tới Jupyter Notebooks (1 nguồn mở cho phép bạn tạo và chia sẻ các live code, phương trình, hiệu ứng hình ảnh cũng như các văn bản, v..v..). Nếu bạn có hứng thú với các loại project như vầy, thì hãy tiếp tục tới the GitHub repo nhé. Mình sẽ rất trân trọng sự giúp đỡ này! Các Vấn đề thường gặp Trong phần này, chúng ta sẽ xem thử các kịch bản phổ biến khác nhau thường phát sinh và làm thế nào để giải quyết chúng với code Python. Đặc biệt, mình sẽ chia sẻ qua lời giải thích ngắn gọn về vấn đề với 1 danh sách các giải pháp với code Python. Sau đó, mình sẽ link tất cả các nguồn tài nguyên mà mình có. Tìm việc làm python lương cao Đảo ngược Dictionary Đôi khi chúng ta có 1 dictionary trong tay, và muốn có thể nhảy tới đúng key và value của nó. Dĩ nhiên, có nhiều mối lo lắng như “làm cách nào để chúng ta có thể đối phó với các ‘clone value’?” và “sẽ ra sao nếu các value đang không ‘hashable’?”. Điều đó nói rằng, trong các trường hợp đơn giản, sẽ có vài cách hóa giải: # Use to invert dictionaries that have unique values my_inverted_dict = dict(map(reversed, my_dict.items())) # Use to invert dictionaries that have unique values my_inverted_dict = {value: key for key, value in my_dict.items()} # Use to invert dictionaries that have non-unique values from collections import defaultdict my_inverted_dict = defaultdict(list) {my_inverted_dict[v].append(k) for k, v in my_dict.items()} # Use to invert dictionaries that have non-unique values my_inverted_dict = dict() for key, value in my_dict.items(): my_inverted_dict.setdefault(value, list()).append(key) #...

Str trong Python là gì? Kiểu dữ liệu chuỗi và định dạng chuỗi trong Python
Bài viết được sự cho phép của tác giả Kien Dang Chung Xử lý văn bản là công việc thường xuyên trong các ứng dụng hiện đại, văn bản có ở khắp mọi nơi, do vậy nắm vững kiến thức về kiểu chuỗi sẽ giúp bạn giải quyết được các vấn đề. 1. Kiểu dữ liệu chuỗi Kiểu dữ liệu chuỗi – string trong Python là một trong những kiểu dữ liệu cơ bản và được sử dụng rất phổ biến trong Python , một từ, một đoạn văn bản đều là kiểu chuỗi. Chuỗi (string) được đặt trong dấu ngoặc kép, có thể là dấu ngoặc kép đơn (”) hoặc dấu ngoặc kép đôi (“”). Ví dụ: "Hello, World!" hay 'Python' str trong Python là một lớp (class) được sử dụng để biểu diễn và xử lý các chuỗi ký tự. 1.1 Chuỗi đơn giản Chuỗi trong Python được đánh dấu bằng dấu nháy đơn ‘ hoặc nháy kép “, tuy nhiên nếu bắt đầu bằng dấu nào thì phải kết thúc bằng dấu đấy . Ví dụ: first_name = "Nguyễn" middle_name = 'Văn' last_name = 'A" # Lỗi khi thực hiện do bắt đầu và kết thúc chuỗi khác nhau. Khi muốn đưa các dấu nháy đơn và nháy kép vào trong chuỗi có hai cách: Cách 1: Đóng mở chuỗi bằng dấu khác với loại dấu nháy cần đưa vào chuỗi. speech = 'Một chuyên gia nói: "Python hiện là ngôn ngữ được nhiều người tìm hiểu nhất hiện nay", phát biểu tại Ngày hội Trí tuệ nhân tạo 2019' sentence = "It 's my car" Cách 2: Sử dụng dấu gạch chéo , dấu này giúp Python nhận biết là phải bỏ qua ngữ nghĩa của ký tự ngay sau. example = "Trong một câu có...

Python và cách tiết kiệm dung lượng cho phần mềm nhúng
Bài viết được sự cho phép của tác giả Nguyễn Hồng Quân Khi tôi bắt đầu bước chân vào mảng IoT đầu năm 2016, tôi bắt đầu lân la tiếp xúc với cộng đồng làm IoT Việt Nam (trên Facebook là chính). Ở Việt Nam, lực lượng tech làm IoT đa phần là dân điện tử đi lên, thế nên tôi hay gặp những câu hỏi như “nên dùng ngôn ngữ nào để lập trình nhúng” từ những bạn sinh viên mới. Tôi cũng ngạc nhiên khi thấy các bạn kháo nhau dùng NodeJS, theo phong trào. Nếu cần dùng các ngôn ngữ biên dịch như C++ , Go thì không nói. Nhưng nếu dùng ngôn ngữ thông dịch thì Python nên được dùng hơn NodeJS/JavaScript. Một khía cạnh nên tính đến là độ lớn file cần lưu trữ. Các board máy tính nhúng chạy Linux thường dùng thẻ nhớ, hoặc bộ nhớ flash trong (còn có cách gọi khác là NAND Flash, SPI Flash, eMMC) để thay thế ổ cứng (HDD) nên có dung lượng khiêm tốn. Nếu cách lưu trữ không phù hợp, có khi thư viện đã ngốn hết không gian lưu trữ đáng lẽ phải dành cho chương trình và dữ liệu (data). Để học tốt Python Thứ nhất , cách quản lý các gói thư viện phụ thuộc của NodeJS cực kỳ tốn dung lượng, với sự trùng lắp các file thư viện. Hình bên trên là ví dụ về cách lưu trữ thư viện khi cài bằng yarn . Tình hình còn tệ hơn nếu cài bằng npm , vốn có truyền thống không thèm phân giải mối ràng buộc phiên bản (dependency version resolve) mà cứ lồng các gói phụ thuộc vào nhau, dẫn đến câu châm biếm sau: Ghi chú : Có...

Date & Time trong Python
Bài viết được sự cho phép của tác giả Nguyễn Chí Thức Với Python, bạn có thể dễ dàng thu được Date và Time hiện tại. Chương này sẽ giới thiệu một số phương thức được phổ biến trong khi làm việc với Date và Time bởi sử dụng Python . Lấy Time hiện tại trong Python Để lấy Time hiện tại, bạn sử dụng hàm tiền định nghĩa localtime(). Hàm localtime() này nhận một tham số là time.time(). Ở đây, time là module, time() là một hàm mà trả về system time hiện tại được biểu diễn dưới dạng số tick (số tích tắc) từ 12:00 am, 1/1/1970. Về cơ bản, tick là một số thực. import time; localtime = time.localtime(time.time()) print "Thoi gian hien tai la :" , localtime Kết quả là: Thoi gian hien tai la : time.struct_time(tm_year=2015, tm_mon=11, tm_mday=29, tm_hour=19, tm_min=16, tm_sec=54, tm_wday=6, tm_yday=333, tm_isdst=0) Dưới đây là phần giải thích: Time được trả về là một cấu trúc gồm 9 thuộc tính. Như trong bảng sau: Thuộc tính Miêu tả tm_year Trả về năm hiện tại (ví dụ: 2015) tm_mon Trả về tháng hiện tại (1-12) tm_mday Trả về ngày hiện tại (1-31) tm_hour Trả về giờ hiện tại (0-23) tm_min Trả về phút hiện tại (0-59) tm_sec Trả về giây hiện tại (0-61 với 60 và 61 là các dây nhuận) tm_wday Trả về ngày trong tuần (0-6 với 0 là Monday) tm_yday Trả về ngày trong năm (1-366 kể cả năm nhuận) tm_isdst Trả về -1, 0 hoặc 1 tức là có xác định DST không Lấy Time đã được định dạng trong Python Bạn có thể định dạng bất kỳ time nào theo yêu cầu của bạn, nhưng phương thức đơn giản nhất là asctime(). Đây là một hàm đã được định...