That Python uses the exact same string if they contain the same immutable content can probably be a bit confusing. But if you want truly confusing behavior look at how Java treats numbers wrapped in their object type:
public class Main{
public static void main(String[] args){
Integer a = 300;
Integer b = 300;
System.out.printf(" %s == %s: %s\n", a, b, (a == b));
a = 100;
b = 100;
System.out.printf(" %s == %s: %s\n", a, b, (a == b));
}
}
// output
300 == 300: false
100 == 100: true
When combined with Java's auto-boxing, this can create some serious confusion