pythonnamed
#
合法命名
#
# 允许的命名
name = "张三"
age = 25
_user_id = 123
count2 = 10
my_variable = "值"
非法命名
#
# 不允许的命名
2count = 10 # 不能以数字开头
my-variable = 1 # 不能包含连字符
class = "test" # 不能使用关键字
命名规范(PEP 8)
#
- 使用小写字母,单词间用下划线连接:
student_name
- 避免使用单字符(除了计数器i, j, k)
- 使用有意义的名称
基本赋值
#
# 单个变量赋值
x = 10
name = "Python"
# 同时给多个变量赋值
a = b = c = 100
x, y, z = 1, 2, 3
动态类型特性
#
# 变量类型可以改变
var = 10 # 现在是整数
var = "hello" # 现在是字符串
var = [1,2,3] # 现在是列表
基本数据类型
#
# 整数
age = 25
# 浮点数
price = 19.99
# 字符串
name = "Alice"
# 布尔值
is_valid = True
# 空值
result = None
容器类型
#
# 列表
numbers = [1, 2, 3, 4]
# 元组
coordinates = (10, 20)
# 字典
person = {"name": "Bob", "age": 30}
# 集合
unique_numbers = {1, 2, 3}
局部变量
#
def my_function():
local_var = "我在函数内部" # 局部变量
print(local_var)
my_function()
# print(local_var) # 错误:局部变量在外部不可访问
全局变量
#
global_var = "我是全局变量" # 全局变量
def test_function():
print(global_var) # 可以访问全局变量
test_function()
修改全局变量
#
count = 0
def increment():
global count # 声明使用全局变量
count += 1
increment()
print(count) # 输出: 1
链式赋值
#
a = b = c = 0 # 三个变量都赋值为0
序列解包
#
# 元组解包
x, y = (10, 20)
# 列表解包
name, age = ["Tom", 25]
# 交换变量值
a, b = 1, 2
a, b = b, a # 交换a和b的值
带星号的解包
#
# 收集多余的值
first, *middle, last = [1, 2, 3, 4, 5]
# first=1, middle=[2,3,4], last=5
引用计数
#
import sys
a = [1, 2, 3]
print(sys.getrefcount(a)) # 查看引用计数
标识符检查
#
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True,指向同一个对象
print(a is c) # False,内容相同但不是同一个对象
变量命名
#
# 好的命名
student_count = 50
user_name = "john_doe"
is_logged_in = True
# 避免的命名
sc = 50 # 不明确
un = "john" # 缩写不清晰
flag = True # 含义不明确
常量命名
#
# 常量通常使用全大写
MAX_CONNECTIONS = 100
PI = 3.14159
DATABASE_URL = "postgresql://localhost:5432/mydb"
未定义变量
#
# print(undefined_var) # NameError: name 'undefined_var' is not defined
拼写错误
#
count = 10
# print(coutn) # 拼写错误导致NameError
作用域混淆
#
def bad_function():
# 这里试图修改全局变量但没有声明global
# count += 1 # UnboundLocalError
pass