likes
comments
collection
share

JS 与 Py 变量

作者站长头像
站长
· 阅读数 7

一、简介

JavaScript 在浏览器领域和服务端领域都有大量的应用,但是 python 在数据处理方面有自己的的优势,编程语言无所谓好坏,趁手的语言使得工作能高效的完成。

二、声明变量与关键字

2.1)js

var v = 123;
let vl = 123
const VC = 123;

2.2)py

v = 123
vl = 123
VC = 123

js 声明后关键字,但是 py 没有。从变量声明来看,py 比 js 更加简单。

三、常用数据类型

以下是 Python 和 JavaScript 数据类型的对比,它们放在一个列表中以便比较:

Python 数据类型JavaScript 数据类型
整数 (int)数字 (Number)
浮点数 (float)数字 (Number)
字符串 (str)字符串 (String)
布尔值 (bool)布尔值 (Boolean)
列表 (list)数组 (Array)
元组 (tuple)-
集合 (set)Set(数据结构)
字典 (dict)对象 (Object)
字节串 (bytes)-
字节数组 (bytearray)-
范围 (range)-
空类型 (NoneType)未定义(undefined) 空对象(null)
自定义类 (class)类(class)

在数据类型上 JS 的数据类型, JS 不包含元组,也没有 字节串/字节数组 等类型

3.1)js

// 数字
let x = 123;
let y = -123;

// 字符串
let name = "string";
let greeting = 'string';

// 布尔值
let isTrue = true;
let isFalse = false;

// 数组
let string_arr = ["a", "b", "c"];
let numbers_arr = [1, 2, 3, 4, 5];

// 对象
let p = {name: "n", age: 0, sex: "male"};

// 特殊类型:日期对象
let d = new Date();

// 特殊类型:正则表达式
let reg_pattern = /hello/i;

// 空
let undf = undefined
let nl = null

// class
class An {
    constructor(a, b) {
        this.a = a
        this.b = b
    }
}

// set
let mySet = new Set();  // 创建一个空的 Set
let mySet2 = new Set([1, 2, 3, 2, 1]);  // 从数组初始化 Set

3.2)py

# 整数
x = 123
y = -123

# 浮点数
f_pi = 3.14159
f_t = 98.6

# 字符串
s_str = "string"
s_str = 'string'

# 布尔值
is_true = True
is_false = False

# 列表
str_arr = ["a", "b", "c"]
numbers_arr = [1, 2, 3, 4, 5]

# 元组
tuple_point = (3, 4)

# 集合
unique_numbers = {1, 2, 3, 4, 5}
unique_letters = set("abcabcde")

# 字典
py_d = {name: "n", age: 0, sex: "male"};

# 字节串
data = b'Hello, world, this is bytes'

# 字节数组
byte_array = bytearray(b'Hello, world, this is bytes')

# 范围
my_range = range(1, 6)

# 空类型
no_value = None

# class
class An:
 def __init__(self, a, b):
     self.a = a
     self.b = b

四、独有的数据类型

4.1)js

  • undefined
  • null
  • Symbol

4.2)py

  • tuple
  • Complex

五、类型转换

5.1)js

  • js 使用分文显示类型转换和隐式类型转换
  • js 使用 String/Boolean/Number 等包装类型进行显示类型转换。
  • 使用 toString 转向字符串。
  • 一些其他的显示的api

5.2)py

  • str(): 值 => 字符串
  • int(): 值 => 整数
  • float(): 值 => 浮点数
  • bool(): 值 => 浮点数
  • list(): 值 => 列表
  • tuple(): 值 => 元组
  • set(): 值 => 集合

六、print 与 console.log 对比

6.1)基础用法

  • ts
console.log("Hello, World!");
console.log("Hello, World!", "the second hello world!");

let p = 'Li';
console.log(`${p} hello!`);
  • py
print("Hello, World!")  # Python 3
print "Hello, World!"    # Python 2

基础用法基本一致,但是分为 py2 和 py3 两种不同的版本。

6.2)格式化输出(占位符与格式函数)

  • %s 用于字符串
  • %d 用于整数
  • %f 输出浮点数
let str = "str";
let num = 5;
console.log("Str: %s, Num: %d", str, num);

在 py2 中也支持占位符号,此处关注 py3, py3 使用 format 函数格式化

f_name = "Li"
l_name = "Lei"
age = 5
print("Name: {} {}, Age: {2}".format(f_name, l_name, age))

format 函数与 {} 结合,更加函数式,在 js 中输出字符串,有多个变量时可以使用模板字符串

6.3)输出对象

js 中 console.log 能直接输出一个对象,但是 print 不能,如果想要实现相容的效果,需要在 class 中定义 __str__ 方法。

  • js
let p = {
  name: "Li",
  age: 5,
};

console.log(person);
  • py
class P:
    def __init__(self, name, age, city):
        self.name = name
        self.age = age

    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"

p = P("Li", 5)
print(p)

七、小结

文本主要关注 jspy 的变量和类型,以及常用的输出技巧。 js 和 py 都是脚本语言,从变量定义来看 py 更加简单,因为它不需要声明关键字,从数据类型来看 js 的数据类型没有 py 丰富,js 没有自己的 tuple 类型,但是这些 js 完全可以模拟实现类似的效果, 同时关注了 console 与 print 的使用, print 分为 py2 和 py3 版本,都能使用占位符,py3 支持 format 函数格式化数据,而 console 支持模板字符串。