Học Python khi đã biết JavaScript

Bài viết này tổng hợp những kiến thức mình học được khi học Python tại https://www.learnpython.org/ với góc nhìn từ một JavaScript developer.

Điểm giống nhau

  • Cách gọi hàm: func(input)
  • String nằm trong "" hoặc ''
  • Nối string dùng toán tử +
  • Array được mô tả bằng []
  • Split string: str.split(' ')
  • Để dùng self trong method thì phải khai báo nó như tham số đầu vào đầu tiên của method: def some_method(self):
  • Kiểu dữ liệu Dictionary trong Python giống như plain object trong JS phonebook = {}
  • Truy xuất vào key của dictionary cũng giống truy xuất vào key của object: phonebook["John"] = 938477566

Tương đương

JavaScriptPython
if (condition) {}if condition:
elseelif
console.log(...)print(...)
let [a,b] = [3,4];a, b = 3, 4
a instanceof SomeClassisinstance(a, SomeClass)
a && ba and b
a || ba or b
let a = nulla = None
arr.push(value)list.append(value)
for (const item of arr) {}for item in list:
Math.pow(2, 3)2 ** 3
arr1.concat(arr2)arr1 + arr2
arr.lengthlen(arr)
str.lengthlen(str)
console.log('name %s age %d', 'Thinh', 30)print("name %s age %d" % ("Thinh", 30))
str.toUpperCase()str.upper()
str.toLowerCase()str.lower()
str.startsWith('...')str.starswith('...')
str.endsWith('...')str.endswith('...')
str.indexOf(sub)str.index(sub)
arr.includes(item)item in arr
a === ba is b
!anot a
function doSomething(value) {}def do_something(value):
this self
Object.entries(obj)dict.items() (Dictionary’s method)
delete obj.keydel dict["key"] hoặc dict.pop("key")
import { func } from 'module';from module import func
...rest*rest

Điểm khác nhau

JavaScriptPython
Khai báo biến cần var, let, constKhai báo biến chỉ cần name = value
Code block: { ... }Khi lùi vào 1 tab -> Python hiểu là 1 code block
Kết thúc câu lệnh bằng ; Kết thúc câu lệnh không có ;
So sánh bằng: == hoặc ===Chỉ có == (nhưng hoạt động khác bên JavaScript). Ví dụ ở Python: [1,2] == [1,2] trả về true
Kiểu số: NumberKiểu số: int, float, số ảo (complex number)
1 + 'a' -> '1a'1 + 'a' -> error
Truy cập vào phần tử ở index ngoài array -> nhận undefinedVới Python thì sẽ gặp error
Không có. Có thể workaround bằng: new Array(5).fill("s").join("")"s" * 5 -> "sssss"
Không có[1,2] * 2 -> [1, 2, 1, 2]
Không có, có thể dùng _.count hoặc arr.filter(x => x === value).lengtharr.count(value) -> Đếm số lần xuất hiện của value trong arr
str.count(char) -> Đếm số lần xuất hiện
Kiểu tuple (list có size cố định): (value1, value2)
Sử dụng pass keyword để hợp thức hoá cú pháp (ví dụ khi viết 1 function để trống)
Sử dụng camelCase cho tên biến, hàmSử dụng snake_case cho tên biến, hàm

Tricks

  • n ký tự đầu tiên của string: str[:n]
  • n ký tự cuối cùng của string: str[-n:]
  • range(5) -> [1,2,3,4,5]

Module

  • Một module là một file .py với tên file là tên module
  • Các function định nghĩa trong file tự động được export
  • Để sử dụng module thì dùng import

Package

  • Mỗi directory là 1 package nếu có chứa file __init__.py
  • Để require 1 module trong package: import package.module
  • Để chỉ cho phép truy cập 1 số module trong package: Tạo biến __all__ và gán giá trị 1 array tên các module

Package management tool

  • pip
  • poetry (Giống npm)
    • Khi init sẽ tạo ra file pyproject.toml giống file package-lock.json có chứa thông tin về project, dependencies, dev dependencies + versioning
  • https://pypi.org/ (Giống npmjs.com)

Partial function

from functools import partial

def multiply(x,y):
  return x * y

# create a new function that multiplies by 2
dbl = partial(multiply,2)
print(dbl(4))

Tương đương với

function multiply(x, y) {
  return x * y;
}
const dbl = multiply.bind(null, 2);
console.log(dbl(4));