python格式化方式

name = 'James'
height = 168.7

# 使用 + 运算符
str_1 = name + ' has a height of ' + str(height) + ' cm.'
print(str_1)

# 使用 % 
str_2 = '%s has a height of %.3f cm.' %(name, height)
print(str_2)

# 使用 str.format()
str_3 = '{} has a height of {:.3f} cm.'.format(name, height)
print(str_3)

# 使用f-strings
str_4 = f'{name} has a height of {height:.3f} cm.'
print(str_4)

阅读更多

export default foo和export { foo as default }的区别

1. export default foo;

这种语法导出的是一个值,或者说是表达式值,而不是标识符。导入时,可以随意给予任何名字,这个名字只是用于在导入模块中引用默认导出的值。

//your-module
// 在导出模块的模块中
function foo() {
    // 函数实现部分
    // ...
}

export default foo;
// 在导入模块的模块中
import myFunction from './your-module';

在这种情况下,myFunction 是一个新的标识符,与 foo 没有直接关联。

阅读更多

“Fast InvSqrt” 算法

大神约翰·卡马克(John Carmack)的一段代码:

// 快速计算浮点数的平方根的倒数
float Q_rsqrt(float number) {
    long i;
    float x2, y;
    const float threehalfs = 1.5F;  // 1.5的浮点表示,用于之后的牛顿迭代

    // 将浮点数的值的一半存储在 x2
    x2 = number * 0.5F;
    // 将浮点数的值存储在 y
    y = number;

    // 将浮点数的位表示转换为长整型
    i = *(long *)&y;

    // 使用魔法常数和位运算进行近似平方根的倒数计算
    i = 0x5f3759df - (i >> 1);
    // 将计算得到的值重新转换回浮点数。
    y = *(float *)&i;

    // 使用牛顿迭代法提高精度,这个步骤会通过迭代逐渐接近平方根的倒数。
    y = y * (threehalfs - (x2 * y * y));
    
    // 返回最终计算结果,即输入浮点数的平方根的倒数
    return y;
}

阅读更多

JS中iterable和iterator的区别

iteratoriterable 是 JavaScript 中与迭代相关的两个概念,它们之间有一些关键的区别。

Iterable(可迭代对象)

  • 定义: 可迭代对象是实现了 Symbol.iterator 方法的对象。这个方法返回一个迭代器对象。
  • 特点: 可迭代对象可以被用于 for...of 循环,其中迭代器对象负责定义迭代的顺序。
  • 示例: 数组、字符串、Map、Set 等都是可迭代对象,因为它们都实现了 Symbol.iterator 方法。
let iterableObject = {
  [Symbol.iterator]: function () {
    // 返回迭代器对象的逻辑
  }
};

阅读更多

JS的this绑定

js的this关键字一般有四种绑定,当然也有一些例外绑定。

一、默认绑定

function foo() {
    console.log(this.a);
}
var a = 2;
foo(); // 2

foo()是直接使用不带任何修饰的函数引用进行调用的,会使用默认绑定,无法应用其他规则。

默认绑定在非严格模式下,foo()最后会将this设置为全局对象。

在严格模式下,这是未定义的行为。

function foo() {
    "use strict";
    console.log(this.a);
}
var a = 2;
foo(); // TypeError: this is undefined

虽然this的绑定规则完全取决于调用位置,但是只有foo()运行在非strict mode下时,默认绑定才能绑定到全局对象;在严格模式下调用foo()则不影响默认绑定:

阅读更多