
最近在紧锣密鼓的用 Python 写代码,不是 Vibe Coding 那种,因为在真实的敲代码才能碰到一些与 Python 语言相关且容易踏入的坑,记录如下
Python 3.8 引入的 Walrus 操作
即赋值表达式,
:=的使用形式,像海象的两个牙。:=让赋值有了返回值, 该赋值语句的返回值就是右边的值。C/C++ 的=同时具有 Python 的=和:=的功能。我们在 Python 中的
=与:=对比1>>> print(a=1) 2Traceback (most recent call last): 3 File "<python-input-0>", line 1, in <module> 4 print(a=1) 5 ~~~~~^^^^^ 6TypeError: print() got an unexpected keyword argument 'a' 7>>> print(a:=1) 81Python 的这种赋值又有返回值的
Read More:=功能就可以应用到if或while语句中,例如
在数据库中我们一般用整数或字符串来表示枚举值(有些数据库(如 MySQL)本身带有枚举类型), 而在使用 Hibernate 时实体对象中也用 Integer 或 String 来表示枚举就不那么友好了。试想来我们这样定义实体对象的两个属性@Entity
这样的定义很不严谨,type 和 gender 理论上可取任何值,这会造成表中数据的混乱。其实 Hibernate 在 Java 实体对象中是可以直接用枚举类型与数据库中的整数或字符串映射,需用到
public class User {
.... public Integer type; //0: Individual 类型,1: Company 类型
public String gender; //可取值 Male 和 Female
}@Enumerated注解,用法如下: Read More枚举的声明很简单, 像
enum Gender { Male, Female }, 其余事情就是 Java 编译器帮我们干的了,所以 enum 也就是一块语法糖。有了枚举确实是很方便,避免了传统常量的无范围性。那么编译器到底在后面做了什么呢?以及理解了这个之后我们可以怎么去使用 Java 的枚举, 下面就从这个例子说起:public enum Gender {
Male,
Female
}把上面的编译成 Gender.class, 然后用 javap -c Gender 反编译出来就是 Read More