There aren't syntactic differences, syntactically starlark is a strict subset. But there are some semantic differences/weirdnessess.
`load` does magic, so that `load('//path', 'name')` puts `name` into the file scope, which is possible in pure python but ewww.
Containers are immutable, so they can go in default values, which is good since a lot of bzl and BUILD relies on default arguments for brevity.