编程指南:变量定义方法与最佳实践全解析

2 02 2 年,我参加了一个编程培训班。
当时老师讲变量定义,我一头雾水。
他给出了Python中一个简单变量的例子,x=1 0,我就跟着输入name=Zhang San。
后来我才知道,变量名必须是描述性的,不能是张三,必须是学生姓名。
我有一个极端的观点,就是变量命名太麻烦了。

在某个城市,我有一个朋友,他是Java程序员。
他告诉我Java变量必须声明类型,比如inti;。
我当时很困惑,就像C一样。
后来我知道Java应该严谨,变量应该声明类型,赋值应该明确。

还记得那年夏天我去书店买了一本C语言的书。
当我看到变量定义intage=1 5 0;时,我意识到C语言变量也必须声明类型。
我在笔记本上写下了变量命名约定,尽量具有描述性,比如ageOfStudent,这样别人一看就知道学生的年龄。

后来去一家互联网公司实习,那里有Go语言工程师。
他们告诉我Go语言有包级变量和局部变量。
我输入 vara=1 7 并得到了同样的结果。

在工作中,我遇到了很多变量命名的问题。
例如变量名可以用中文吗?我查了资料,发现有些语言虽然支持,但是不推荐。
变量名有长度限制吗?我检查了C语言,发现不能超过6 3 个字符。

我在编程中遇到了定义变量后更改数据类型的问题。
后来我才知道,动态语言可以做到这一点,而静态语言则不能。
全局变量和局部变量有什么区别?据我所知,全局变量可以在任何地方使用,局部变量仅在定义它们的地方有用。

为什么要给变量赋初值?后来我想通了,这样我就可以避免错误。
变量的作用域是如何定义的?我查了资料,范围是由定义的位置定义的。

我学习了,希望提高自己的编程水平。
定义变量时,我注意命名约定、数据类型匹配、范围控制,避免使用关键字。
我从根本上认为编程应该严谨,不能马虎。

Python中如何使用__annotations__定义类变量类型?

类变量类注解是用__annotations来存储的。

语法:变量名:类型。

Person.name:str="JohnDoe"
Person.__annotations__={'name':str, 'age':int}
直接使用 Person.__annotations__ 进行访问。

可以进行运行时检查。

例如:
输入 MyClass: x:整数=1 0 y:float=3 .1 4 def check_annotations(obj); 对于 attr,不在 obj 中。
值=getattr(obj,attr) 除非 isinstance(值,注释); 引发 TypeError(f"类型{type(value)} 的属性'{attr}' 不匹配注释{annot}")
my_instance=MyClass() check_annotations(my_instance)
我不关心约束。

Python 不强制类型保留。

Person.name=1 2 3
不会报错。

过度使用会增加代码长度。

团队需要达成共识。

mypy可以提前检测错误。

代码文档。

IDE支持补全。

数据验证。
逐步引入注解类型。

python变量定义和使用

我记得有一次我写了一个小的Python脚本来帮助我计算网上购物时订单的总价。
您定义了一个名为 Price 的变量来存储产品的单价,然后定义了一个变量 Quantity 来存储产品的数量。
我当时非常兴奋,认为这样可以更容易地计算总价。

价格 = 1 9 .9 9 Quantity = 2
我写了一个简单的表达式来计算总价:
Total = Price Quantity
然后我想将结果输出到屏幕上,所以我使用了 print 函数。
当时,我以为自己是一个编程天才。

print(f"Total: {total}")
分数屏幕显示 Total: 3 9 .9 8 我检查了计算结果,发现它完全正确。
但突然我想到:如果我想更新这个数字,比如增加到3 ,该怎么办?
数量 = 数量 + 1
这可行,但我记得似乎有一种更简单的方法。
我看了一下,发现可以使用+=操作符,这样代码就简单多了:
数量 += 1
我试了一下,发现数量确实更新了,计算出来的总价也相应增加了。
这时候我突然意识到Python的动态类型特性真是个好东西,不用声明变量类型就可以直接使用。

等等,还有一件事,在确定请求是否被激活之前,您定义了一个名为 is_active 的变量。
我在想,如果我需要取消订单,我应该如何改变这个变量的值呢?
is_active = not is_active
这行代码看起来很有趣,我认为它是用于否定的。
事实上,执行后is_active的值就从True变成了False。
Python 语法似乎设计得非常直观。

写完这个小脚本,我对Python变量有了更深入的了解。
虽然看起来简单,但是却蕴含着很多编程智慧。
例如,它教会了我如何有效地使用变量命名,如何分配和更新值,它让我体会到动态类型提供的便利。
然而,编程之路还很漫长,我还有很多东西要学。