前景提要
HDC调试需求开发(15万预算),能者速来!>>>
在 Perl 语言中,变量声明和变量赋值是用不同的关键字来标记的: my $var = 1 $var = 2
Lisp 语系也是一样: (let ($var 1) (set $var 2))
支持这种区别的语言还有 Lua,C,Go. 但在别的语言,例如 Ruby, Julia, Python 中变量声明和变量赋值是一起的:var = 1 var = 2
因为代码在编写过程中,程序员会经常写错变量,导致使用未定义的变量,就会导致不可预料的错误。
如果赋值和声明分开,如果在赋值的时候,写错一个变量的名称,那么这个错误就不会被编译器捕捉到。
但在变量赋值语句中写错变量的可能性,比起在引用变量的所有场景中写错变量的可能性要低很多,所以用赋值代替声明这种做法,不会引入许多因为变量名称拼写错误导致的问题。
但这种写法会导致每次赋值的时候,编译器会查找所有可用的命名空间,以确定变量是新定义还是赋值。所以这种合在一起的语法,比分开的语法效率更低。尤其在函数中,变量赋值的代价是很高的。(所以,Python 用 global 来特别声明全局变量来避免这种无谓的查找)。
虽然赋值和声明用一种语法会简化编程,降低程序员的负担,但会降低代码效率。用这种语言写代码,首先要搞明白全局变量和全局函数到底有哪些,省的命名冲突。
不知道大家感觉哪种风格好、