在 Python 编程中,基础数据类型、变量和常量是程序最底层的构建块。题目中提到的“整型 int、浮点 float/double、字符 char”,如果直接照搬到 Python,需要做一次重要纠正:Python 有int和float,但没有 C/C++ 意义上的double和char。Python 中的浮点数统一使用float表示;单个字符也不再是独立类型,而是长度为 1 的字符串str。
因此,更准确的 Python 基础类型表述应为:整型int、浮点型float、字符串str、布尔型bool,以及表示空值的None。变量通过赋值创建,常量则主要依靠命名约定表达。标识符命名是否规范,直接影响代码可读性、可维护性和团队协作效率。
二、基础数据类型
1. 整型int
整型用于表示整数,包括正整数、负整数和 0。Python 的int没有固定位数限制,理论上可以表示任意大的整数,这一点与 C/C++ 中的short、int、long有明显区别。
age=20temperature=-5big_number=99999999999999999999print(age,type(age))# 20 <class 'int'>print(temperature,type(temperature))# -5 <class 'int'>print(big_number,type(big_number))# 很大整数 <class 'int'>2. 浮点型float
Python 中没有double类型,浮点数统一使用float。它通常对应底层 C 语言的双精度浮点数,用于表示小数。
price=19.99height=1.75pi=3.14159print(price,type(price))# 19.99 <class 'float'>print(height,type(height))# 1.75 <class 'float'>需要注意,浮点数在计算机中采用二进制近似存储,因此可能出现精度误差:
print(0.1+0.2)# 0.30000000000000004如果涉及金融计算等高精度场景,后续可进一步使用decimal模块。
3. 字符串str:Python 中没有单独的char
Python 不使用char表示单个字符。字符串由单引号、双引号或三引号定义,单个字符只是长度为 1 的字符串。
letter='A'name="Alice"sentence="Hello, Python."print(letter,type(letter))# A <class 'str'>print(name[0])# Aprint(len(letter))# 14. 布尔型bool与空值None
布尔型只有两个值:True和False,常用于条件判断。None表示“没有值”,它不是 0,也不是空字符串。
is_active=Trueis_deleted=Falseresult=Noneprint(type(is_active))# <class 'bool'>print(type(result))# <class 'NoneType'>三、变量定义与类型推断
Python 是动态类型语言,变量不需要提前声明类型,赋值时由解释器自动推断。
x=10# intx=3.14# 重新赋值为 floatx="Python"# 重新赋值为 str这种机制非常灵活,但也要求开发者注意变量含义的一致性。同一个变量名不应在短距离内反复承载完全不同语义的值,否则会降低可读性。
查看变量类型可使用type():
score=95print(type(score))# <class 'int'>四、常量定义
Python 没有真正的“常量”语法,不能从语言层面强制禁止修改。工程实践中通常采用全大写命名约定表示常量。
PI=3.14159GRAVITY=9.8MAX_RETRY_COUNT=3更规范的做法是将常量放在模块级别,避免魔法数字散落在代码中:
HOURLY_SALARY=35SOCIAL_SECURITY_TAX_RATE=0.04FEDERAL_TAX_RATE=0.10defcompute_net_salary(hours):return(hours*HOURLY_SALARY*(1-(SOCIAL_SECURITY_TAX_RATE+FEDERAL_TAX_RATE)))如果需要更强的约束,可以使用enum.Enum定义枚举常量:
fromenumimportEnumclassColor(Enum):RED=1GREEN=2BLUE=3print(Color.RED)# Color.REDprint(Color.RED.value)# 1五、标识符命名规则
1. 硬性规则
Python 标识符命名必须遵守以下规则:
- 只能由字母、数字、下划线组成;
- 不能以数字开头;
- 不能包含空格和特殊符号;
- 区分大小写,
name、Name、NAME是不同标识符; - 不能使用 Python 关键字,如
if、for、class、return等。
# 合法user_name="Alice"_score=90count_2=10# 非法# 2name = "Bob" # 不能以数字开头# user-name = "Bob" # 不能包含减号# class = 10 # class 是关键字2. 命名风格
Python 社区普遍遵循 PEP 8 规范:
| 对象 | 推荐风格 | 示例 |
|---|---|---|
| 变量、函数 | snake_case | user_name,calculate_area |
| 常量 | UPPER_CASE | MAX_SIZE,PI |
| 类名 | PascalCase | StudentInfo,DataProcessor |
| 私有属性 | _var/__var | _cache,__secret |
好的命名应“见名知意”。total_score明显优于ts,calculate_area明显优于calc。
六、综合示例代码
""" Python 基础数据类型、变量、常量与命名规范示例 """# 常量定义PI=3.14159MAX_SCORE=100SCHOOL_NAME="Python Academy"defget_student_info(name:str,age:int,score:float)->dict:"""返回学生信息字典,演示基础类型使用。"""is_excellent=score>=90return{"name":name,"age":age,"score":score,"is_excellent":is_excellent,}defcalculate_circle_area(radius:float)->float:"""使用常量 PI 计算圆面积。"""ifradius<=0:raiseValueError("半径必须大于 0")returnPI*radius**2if__name__=="__main__":# 基础类型演示student_name="Alice"# strstudent_age=20# intstudent_score=95.5# floatis_active=True# boolremark=None# NoneTypeprint("类型检查:")print(type(student_name))# <class 'str'>print(type(student_age))# <class 'int'>print(type(student_score))# <class 'float'>print(type(is_active))# <class 'bool'>print(type(remark))# <class 'NoneType'># 类型转换text_number="100"number=int(text_number)print("\n类型转换:")print(number+5)# 105print(float(number))# 100.0print(str(number))# "100"# 常量使用radius=5area=calculate_circle_area(radius)print(f"\n半径为{radius}的圆面积为:{area}")# 函数调用info=get_student_info(student_name,student_age,student_score)print("\n学生信息:",info)# 命名规范演示max_score=MAX_SCOREprint(f"满分:{max_score},学校:{SCHOOL_NAME}")七、代码解析
类型展示:通过
type()可以确认变量当前持有的数据类型。Python 的变量本身没有固定类型,类型依附于对象。类型转换:
int()、float()、str()是常见转换函数。但int("abc")会抛出ValueError,"age: " + 20会抛出TypeError,因此转换前需要确保数据合法。常量使用:
PI、MAX_SCORE、SCHOOL_NAME采用全大写命名,表明它们不应被随意修改。虽然 Python 不会强制保护,但这种约定能显著降低维护成本。函数设计:函数名使用
snake_case,参数名具有明确含义,返回字典便于后续扩展。f-string 输出:
f"...{变量}..."是 Python 推荐的字符串格式化方式,比%和.format()更直观。
八、亮点总结
- 纠正跨语言误区:明确指出 Python 没有
double和char,避免把 C/C++/Java 的类型体系直接套用过来。 - 强调动态类型特性:变量类型由赋值对象决定,灵活但需要开发者自律。
- 区分“规则”和“约定”:标识符命名既有必须遵守的语法规则,也有 PEP 8 推荐的风格约定。
- 常量工程化表达:不仅介绍全大写命名,还补充了枚举类和模块级常量管理方式。
- 代码可运行、可复用:示例覆盖类型检查、类型转换、常量使用、函数封装和格式化输出,适合作为入门练习模板。
掌握这些内容后,后续学习列表、元组、字典、函数参数、类与对象时,就能更清楚地理解“数据如何存储、变量如何绑定、命名如何表达意图”。