Python基础语法详解
一、字面量
字面量是直接在代码中表示数据的固定值。
# 数值字面量 42 # 整数 3.14 # 浮点数 2+3j # 复数 # 字符串字面量 'Hello' "World" '''多行字符串''' """也可以是多行"""
# 使用单三引号
multiline_str1 = '''
这是一个多行字符串。
它可以包含换行符,
甚至可以包含"双引号"和'单引号'。
'''
# 使用双三引号
multiline_str2 = """
这是另一个多行字符串。
用法完全相同,
可以根据需要选择单引号或双引号。
"""
# 布尔字面量 True False # 空值字面量 None
二、注释
注释用于解释代码,不会被执行。
# 单行注释。这一行井号后面的都是注释,解释器不执行 """ 多行注释 使用三引号括起来的地方, 解释器不执行 """
多行注释原理可以通过下图理解:
"""
这是一个多行字符串,
但如果没有赋值给变量,
Python 会创建这个字符串但不保存它。
"""
def add(a, b): # 返回两数之和 return a + b
三、变量
变量是存储数据的容器,使用前需赋值。
x = 10 # 整数变量 name = "Alice" # 字符串变量 is_student = True # 布尔变量 # 多重赋值 a, b, c = 1, 2, 3 # 交换变量 x, y = y, x
四、数据类型
Python是动态类型语言,变量类型由赋值自动决定。
1. 基本数据类型
# 数值类型 x = 10 # int y = 3.14 # float z = 2 + 3j # complex # 字符串 name = "Alice" message = 'Hello, World!' # 布尔 is_valid = True has_permission = False # 空值 result = None
2. 复合数据类型
# 列表(可变) fruits = ["apple", "banana", "cherry"] # 元组(不可变) point = (3, 4) # 字典 person = { "name": "Alice", "age": 30 } # 集合 numbers = {1, 2, 3, 3} # 自动去重,结果为 {1, 2, 3}
五、数据类型转换
显式转换数据类型的方法。
# 数值转换 x = int(3.14) # 3 y = float("2.71") # 2.71 z = complex(1, 2) # 1+2j # 字符串转换 s = str(42) # "42" s = repr([1, 2, 3]) # "[1, 2, 3]" # 序列转换 lst = list((1, 2, 3)) # [1, 2, 3] tup = tuple([1, 2, 3]) # (1, 2, 3) # 布尔转换 bool(0) # False bool("") # False bool([]) # False bool(None) # False
六、标识符
标识符是变量、函数、类等的名称,需遵循规则:
- 由字母、数字、下划线组成
- 不能以数字开头
- 区分大小写
- 不能使用Python关键字(如if、def、class等)
# 合法标识符 age user_name _is_valid # 非法标识符 123name # 以数字开头 class # 关键字 my-name # 包含非法字符(-)
七、运算符
Python支持多种运算符。
1. 算术运算符
x + y # 加法 x - y # 减法 x * y # 乘法 x / y # 除法(结果为浮点数) x // y # 整除 x % y # 取模(余数) x ** y # 幂运算
2. 比较运算符
x == y # 等于 x != y # 不等于 x > y # 大于 x < y # 小于 x >= y # 大于等于 x <= y # 小于等于
3. 逻辑运算符
x and y # 逻辑与 x or y # 逻辑或 not x # 逻辑非
4. 赋值运算符
x = 10 x += 5 # 等价于 x = x + 5 x -= 3 # 等价于 x = x - 3 x *= 2 # 等价于 x = x * 2 # 以此类推...
5. 成员运算符
x in lst # 判断x是否在列表lst中 x not in s # 判断x是否不在集合s中
6. 身份运算符
x is y # 判断x和y是否引用同一对象 x is not y # 判断x和y是否引用不同对象
八、字符串扩展
字符串是不可变的序列类型,支持多种操作。
1. 字符串索引与切片
s = "Hello, World!" s[0] # 'H'(索引从0开始) s[-1] # '!'(负数索引从末尾开始) s[0:5] # 'Hello'(切片:左闭右开) s[7:] # 'World!'(省略结束索引) s[::-1] # '!dlroW ,olleH'(反转字符串)
2. 字符串方法
s.lower() # 'hello, world!' s.upper() # 'HELLO, WORLD!' s.strip() # 去除首尾空格 s.replace('World', 'Python') # 'Hello, Python!' s.split(',') # ['Hello', ' World!'] ' '.join(['Hello', 'World']) # 'Hello World' s.startswith('Hello') # True s.endswith('!') # True '123'.isdigit() # True
3. 字符串格式化
# 旧式格式化 name = "Alice" age = 30 print("My name is %s and I'm %d years old." % (name, age)) # 新式格式化(Python 3.6+) print(f"My name is {name} and I'm {age} years old.") # format()方法 print("My name is {} and I'm {} years old.".format(name, age))
九、数据输入
使用input()函数从标准输入获取用户输入。
# 获取字符串输入 name = input("请输入你的名字: ") print(f"你好, {name}!") # 获取数值输入(需转换类型) age = int(input("请输入你的年龄: ")) print(f"你的年龄是 {age} 岁。") # 处理多个输入 x, y = input("请输入两个数字(用空格分隔): ").split() sum = int(x) + int(y) print(f"两数之和为: {sum}")