·
日常教程 ·
237585
final修饰基本类型变量
当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变
final修饰引用类型变量
当使用final修饰引用类型变量时,它保存的仅仅是一个引用,final只能保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以改变
package com.j1803.finalTest;
import java.util.Arrays;
public class FinalReferenceTest {
public static void main(String[] args) {
//final修饰数组变量,iArr是一个引用变量
final int [] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//对数组元素进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组iArr重新赋值,合法
iArr[2]=-100;
//下面语句对iArr重新赋值,非法
//iArr=null;
//final修饰一个Person变量,p是一个引用变量
final Person p=new Person(22);
//改变Person对象p的实例变量,合法
p.setAge(45);
System.out.println(p.getAge());
//非法
//p=null;
}
}
class Person{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(int age) {
super();
this.age = age;
}
}
python模块具有独立作用域,无法直接访问导入它的主程序中的变量(如循环计数器i);正确做法是通过函数参数显式传递值,而非重复import。 python模块具有独立作用域,无法直接访问导入它的主程序中的变量(如循环计数器i);正确做法是通过函数参数显式传递值,而非重复import。 在Pytho...
Python解包赋值不提升执行速度,其核心价值在于增强可读性、安全性和语义清晰度;它通过结构断言避免手动索引错误,适用于多值返回、可变长解包及字典传参等场景。 Python中的解包赋值本身不会提升变量交换或赋值的“执行速度”,它和传统赋值在底层开销几乎一致;真正带来收益的是代码可读性、安全性与表达意...
局部变量比全局变量快2–5倍,因Python编译时确定其栈帧固定偏移,运行用LOAD_FAST索引取值;全局变量需LOAD_GLOBAL哈希查字典。用dis.dis()可验证:STORE_FAST/LOAD_FAST为局部,LOAD_GLOBAL为全局。 局部变量为什么比全局变量快2–5倍 因为Py...
本文深入剖析Python递归函数中nonlocal变量更新失效的典型陷阱:当res+=recurse(i+1)(右值直接参与赋值)时,res仅在递归回溯阶段被反复覆盖为初始值加当前元素,导致最终结果错误;而显式绑定返回值再累加(如assigned=recurse(i+1);res+=assigned...
本文深入剖析递归函数中nonlocal变量更新失效的典型陷阱:当res+=recurse(i+1)(即右值直接参与赋值)时,res仅被最后一步覆盖为首个返回值;而正确写法需确保res的读取发生在递归“回溯”阶段,即其值已被深层调用更新之后。 本文深入剖析递归函数中`nonlocal`变量更新失效的典...
本文深入剖析递归函数中使用nonlocal变量时,因赋值表达式求值顺序不同(l-valuevsr-value位置)导致结果异常的根本原因,并通过对比代码揭示执行时序与变量读写时机的关键影响。 本文深入剖析递归函数中使用nonlocal变量时,因赋值表达式求值顺序不同(l-valuevsr-value...
应放弃KBinsDiscretizer,改用继承BaseEstimator和TransformerMixin的自定义分箱器,将业务边界存为self.bins,fit仅校验,transform用np.digitize确保训练/测试集边界一致。 KBinsDiscretizer默认等宽分箱不满足业务需求...
本文介绍在Pandasapply()场景下,如何消除global语句依赖,通过可变容器(如字典)或面向对象方式封装跨行计算所需的状态变量,提升代码可测试性、可重入性与线程安全性。 本文介绍在pandas`apply()`场景下,如何消除`global`语句依赖,通过可变容器(如字典)或面向对象方式封...