一、变量的定义
什么是变量:变量是用于存储数据的容器,可以通过变量名来引用存储的值,直白一点就是变量代表了一个值,我们可以通过变量存储和获取值。
基本特点
命名规则
- 变量名只能包含:字母(a-z, A-Z)、数字(0-9)、下划线(_)
- 不能使用
Python关键字,可以通过使用 keyword.kwlist 获取当前版本Python的保留关键字
# ✅ 允许的
name = "张三"
age_1 = 25
_user_count = 100
variable = 10# 字母开头
_variable = 20# 下划线开头
var123 = 30# 字母开头,包含数字
# ❌ 不允许的
# my-name = "张三" # 不允许连字符
# my.name = "李四" # 不允许点号
# my name = "王五" # 不允许空格
# name@email = "test" # 不允许@符号
# $price = 100 # 不允许$符号
123var = 10# 数字开头
1variable = 20# 数字开头
123 = "test"# 纯数字也不行
建议的命名
| | |
|---|
| | student_name |
| | get_user_info() |
| | StudentInfo |
| | MAX_SIZE |
| | my_module.py |
| | my_package/ |
二、局部变量与全局变量
1、局部变量
定义位置:定义在函数内部的变量
作用域:只在定义它的函数内部生效
生命周期:函数调用时创建,函数结束时销毁
访问权限:只能在函数内部访问
defgreet():
msg = "Hello Python!"
print(msg) # 这里能访问 msg
greet()
print(msg) # 报错:msg 在这里不存在
2、全局变量
定义位置:函数外部,模块顶层
作用域:在整个模块中有效
生命周期:程序运行时创建,程序结束时销毁
访问权限:可以在任何地方访问
x = 10# 全局变量
defshow():
print(x) # 在函数内部访问全局变量
show()
print(x) # 同样能访问
2.1 同名遮蔽(Shadowing)
如果全局有一个变量 a,函数里也定义了 a,局部变量 不会修改 全局变量,仅在函数内遮蔽它
a = 10
deff():
a = 99# 局部变量,函数内部定义的局部变量 a 会遮蔽全局变量 a
print(a)
f() # 输出 99
print(a) # 仍然是 10
2.2 全局变量的修改
对全局变量的修改,需要借助关键字 global 完成,如果在修改全局变量时没有使用global 会发生错误。
语法:
global 变量名
# 赋值操作
错误示例:
x = 5
deff():
x = x + 1# 会出错
f()
报错:
UnboundLocalError: cannot access local variable 'x' where it isnot associated with a value
正确示例:
x = 5
definc():
global x
x += 1
inc()
print(x) # 输出6
全局变量的滥用容易导致以下问题:
三、常量
常量:一种特殊的变量,在程序整个生命周期中值不会发生改变,例如:数学的 π 。不过,Python 语言无法像Java等语言一样,通过const或final关键字来声明变量为常量,限制代码对变量的修改。
命名风格:全大写字母 + 下划线,以此种方式声明变量预期是一个常量,不应该被修改
常量的访问和变量是相同的,可以直接访问,只是声明为常量以后,不应该去修改它
PI = 3.14159
MAX_RETRIES = 5
BASE_URL = "https://api.example.com"