Python 语言 30 个核心必知语法细节

开发 前端
if 语句用于检查条件是否为真。if-else 语句用于在条件为真时执行一个代码块,在条件为假时执行另一个代码块。if-elif-else 语句用于检查多个条件,并执行第一个为真的条件对应的代码块。

1. 变量与数据类型

Python 是一种动态类型语言,这意味着你不需要声明变量的数据类型。你可以直接给变量赋值。

示例:

# 定义一个整型变量
age = 25
print("年龄:", age)  # 输出 年龄: 25
# 定义一个字符串变量
name = "Alice"
print("名字:", name)  # 输出 名字: Alice
# 定义一个浮点型变量
salary = 5000.50
print("工资:", salary)  # 输出 工资: 5000.5

解释:

age 是一个整型变量。

name 是一个字符串变量。

salary 是一个浮点型变量。

2. 字符串操作

字符串是 Python 中最常用的数据类型之一。你可以使用多种方法来操作字符串。

示例:

# 字符串拼接
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name
print("全名:", full_name)  # 输出 全名: John Doe
# 字符串重复
greeting = "Hello" * 3
print("问候:", greeting)  # 输出 问候: HelloHelloHello
# 字符串索引
word = "Python"
print("首字母:", word[0])  # 输出 首字母: P
print("尾字母:", word[-1])  # 输出 尾字母: n
# 字符串切片
print("子字符串:", word[1:4])  # 输出 子字符串: yth

解释:

+ 操作符用于拼接字符串。

* 操作符用于重复字符串。

索引和切片可以用来获取字符串中的特定字符或子字符串。

3. 列表 (List)

列表是一种常用的有序集合,可以包含不同类型的元素。

示例:

# 创建一个列表
fruits = ["apple", "banana", "cherry"]
print("水果:", fruits)  # 输出 水果: ['apple', 'banana', 'cherry']
# 访问列表元素
print("第一个水果:", fruits[0])  # 输出 第一个水果: apple
print("最后一个水果:", fruits[-1])  # 输出 最后一个水果: cherry
# 修改列表元素
fruits[1] = "orange"
print("更新后的水果:", fruits)  # 输出 更新后的水果: ['apple', 'orange', 'cherry']
# 添加元素
fruits.append("grape")
print("添加后的水果:", fruits)  # 输出 添加后的水果: ['apple', 'orange', 'cherry', 'grape']
# 删除元素
fruits.remove("cherry")
print("删除后的水果:", fruits)  # 输出 删除后的水果: ['apple', 'orange', 'grape']

解释:

使用方括号 [] 来创建列表。

使用索引来访问或修改列表中的元素。

append() 方法用于在列表末尾添加元素。

remove() 方法用于删除指定元素。

4. 元组 (Tuple)

元组与列表类似,但它是不可变的,一旦定义就不能修改。

示例:

# 创建一个元组
colors = ("red", "green", "blue")
print("颜色:", colors)  # 输出 颜色: ('red', 'green', 'blue')
# 访问元组元素
print("第一个颜色:", colors[0])  # 输出 第一个颜色: red
# 元组切片
print("切片:", colors[1:])  # 输出 切片: ('green', 'blue')

解释:

使用圆括号 () 来创建元组。

元组中的元素不能被修改。

可以使用索引和切片来访问元组中的元素。

5. 字典 (Dictionary)

字典是一种键值对集合,常用于存储和检索数据。

示例:

# 创建一个字典
person = {"name": "Alice", "age": 25, "city": "New York"}
print("个人信息:", person)  # 输出 个人信息: {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 访问字典元素
print("名字:", person["name"])  # 输出 名字: Alice
# 修改字典元素
person["age"] = 26
print("更新后的个人信息:", person)  # 输出 更新后的个人信息: {'name': 'Alice', 'age': 26, 'city': 'New York'}
# 添加新元素
person["job"] = "Engineer"
print("添加后的个人信息:", person)  # 输出 添加后的个人信息: {'name': 'Alice', 'age': 26, 'city': 'New York', 'job': 'Engineer'}
# 删除元素
del person["city"]
print("删除后的个人信息:", person)  # 输出 删除后的个人信息: {'name': 'Alice', 'age': 26, 'job': 'Engineer'}

解释:

使用花括号 {} 来创建字典。

使用键来访问或修改字典中的元素。

可以使用 del 关键字来删除字典中的元素。

6. 控制结构 - if 语句

条件语句用于根据不同的条件执行不同的代码块。

示例:

# if 语句
age = 18
if age >= 18:
    print("你是成年人。")  # 输出 你是成年人。
# if-else 语句
if age < 18:
    print("你是未成年人。")
else:
    print("你是成年人。")  # 输出 你是成年人。
# if-elif-else 语句
if age < 13:
    print("你是儿童。")
elif age < 18:
    print("你是青少年。")
else:
    print("你是成年人。")  # 输出 你是成年人。

解释:

if 语句用于检查条件是否为真。

if-else 语句用于在条件为真时执行一个代码块,在条件为假时执行另一个代码块。

if-elif-else 语句用于检查多个条件,并执行第一个为真的条件对应的代码块。

7. 控制结构 - for 循环

循环语句用于重复执行一段代码块。

示例:

# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
# 输出
# apple
# banana
# cherry
# 遍历字符串
word = "Python"
for char in word:
    print(char)
# 输出
# P
# y
# t
# h
# o
# n
# 使用 range() 函数
for i in range(5):
    print(i)
# 输出
# 0
# 1
# 2
# 3
# 4

解释:

for 循环可以遍历任何序列的项目,如列表或字符串。

range() 函数生成一系列数字,通常用于控制循环次数。

8. 控制结构 - while 循环

while 循环用于在条件为真时重复执行代码块。

示例:

# 基本 while 循环
count = 0
while count < 5:
    print(count)
    count += 1
# 输出
# 0
# 1
# 2
# 3
# 4
# 使用 break 和 continue
i = 0
while i < 10:
    if i == 5:
        break
    if i % 2 == 0:
        i += 1
        continue
    print(i)
    i += 1
# 输出
# 1
# 3

解释:

while 循环会在每次迭代前检查条件。

break 语句用于提前退出循环。

continue 语句用于跳过当前迭代并继续下一次迭代。

9. 函数

函数是一段可重用的代码块,可以接收参数并返回值。

示例:

# 定义一个函数
def greet(name):
    print(f"你好, {name}!")
# 调用函数
greet("Alice")  # 输出 你好, Alice!
# 返回值的函数
def add(a, b):
    return a + b
result = add(5, 3)
print("结果:", result)  # 输出 结果: 8

解释:

使用 def 关键字定义函数。

函数可以有参数。

使用 return 语句返回值。

10. 参数传递方式

Python 中函数可以使用位置参数、关键字参数、默认参数等多种方式传递参数。

示例:

# 位置参数
def print_info(name, age):
    print(f"名字: {name}, 年龄: {age}")
print_info("Alice", 25)  # 输出 名字: Alice, 年龄: 25
# 关键字参数
print_info(age=25, name="Alice")  # 输出 名字: Alice, 年龄: 25
# 默认参数
def print_info(name, age=25):
    print(f"名字: {name}, 年龄: {age}")
print_info("Alice")  # 输出 名字: Alice, 年龄: 25

解释:

位置参数按照参数顺序传递。

关键字参数使用参数名称传递。

默认参数可以在定义函数时指定默认值。

11. 变量作用域

变量的作用域决定了变量在程序中哪些地方可以被访问。

示例:

# 全局变量
x = 10
def test():
    global x
    x = 20
    print(x)  # 输出 20
test()
print(x)  # 输出 20
# 局部变量
def test():
    y = 5
    print(y)  # 输出 5
test()
# print(y)  # 报错,y 是局部变量

解释:

全局变量在整个程序范围内都可以访问。

局部变量只能在定义它的函数内部访问。

使用 global 关键字可以在函数内部修改全局变量。

12. 异常处理

异常处理可以帮助程序更好地应对错误情况,避免程序崩溃。

示例:

# try-except 语句
try:
    num = int(input("请输入一个数字: "))
    result = 10 / num
    print("结果:", result)
except ZeroDivisionError:
    print("不能除以零。")
except ValueError:
    print("无效输入。")
# try-except-else 语句
try:
    num = int(input("请输入一个数字: "))
    result = 10 / num
except ZeroDivisionError:
    print("不能除以零。")
else:
    print("结果:", result)
# try-except-finally 语句
try:
    num = int(input("请输入一个数字: "))
    result = 10 / num
except ZeroDivisionError:
    print("不能除以零。")
finally:
    print("程序结束。")

解释:

try 块用于尝试可能引发异常的代码。

except 块用于捕获并处理异常。

else 块在没有异常发生时执行。

finally 块无论是否有异常都会执行。

13. 类和对象

类是面向对象编程的基础,它定义了一组属性和方法。

示例:

# 定义一个简单的类
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def introduce(self):
        print(f"我的名字是 {self.name},我今年 {self.age} 岁。")
# 创建一个对象
alice = Person("Alice", 25)
alice.introduce()  # 输出 我的名字是 Alice,我今年 25 岁。
# 创建另一个对象
bob = Person("Bob", 30)
bob.introduce()  # 输出 我的名字是 Bob,我今年 30 岁。

解释:

使用 class 关键字定义类。

__init__ 方法是一个特殊的方法,用于初始化对象的属性。

类中的方法可以通过对象调用。

14. 继承

继承允许一个类继承另一个类的属性和方法。

示例:

# 定义父类
class Animal:
    def __init__(self, name):
        self.name = name
    def speak(self):
        print("动物发出声音。")
# 定义子类
class Dog(Animal):
    def speak(self):
        print("狗说汪汪。")
# 创建对象
animal = Animal("普通动物")
animal.speak()  # 输出 动物发出声音。
dog = Dog("Buddy")
dog.speak()  # 输出 狗说汪汪。

解释:

子类 Dog 继承自父类 Animal。

子类可以覆盖父类的方法,实现多态性。

15. 多态

多态是指同一个方法在不同的对象上表现出不同的行为。

示例:

# 定义父类
class Animal:
    def __init__(self, name):
        self.name = name
    def speak(self):
        print("动物发出声音。")
# 定义子类
class Dog(Animal):
    def speak(self):
        print("狗说汪汪。")
class Cat(Animal):
    def speak(self):
        print("猫说喵喵。")
# 创建对象
animals = [Dog("Buddy"), Cat("Whiskers")]
for animal in animals:
    animal.speak()
# 输出
# 狗说汪汪。
# 猫说喵喵。

解释:

子类覆盖了父类的方法 speak。

在循环中,根据对象的实际类型调用相应的 speak 方法。

16. 类方法和静态方法

类方法和静态方法是类级别的方法,它们不依赖于具体的对象实例。

示例:

# 定义类方法
class MathUtils:
    @classmethod
    def add(cls, a, b):
        return a + b
# 使用类方法
result = MathUtils.add(5, 3)
print("结果:", result)  # 输出 结果: 8
# 定义静态方法
class MathUtils:
    @staticmethod
    def multiply(a, b):
        return a * b
# 使用静态方法
result = MathUtils.multiply(5, 3)
print("结果:", result)  # 输出 结果: 15

解释:

类方法通过 @classmethod 装饰器定义,第一个参数通常是 cls,代表类本身。

静态方法通过 @staticmethod 装饰器定义,不依赖于类或对象实例。

17. 内置函数

Python 提供了许多内置函数,用于处理各种常见的编程任务。

示例:

# len() 函数
fruits = ["apple", "banana", "cherry"]
print("长度:", len(fruits))  # 输出 长度: 3
# type() 函数
num = 5
print("类型:", type(num))  # 输出 类型:
# sum() 函数
numbers = [1, 2, 3, 4, 5]
print("总和:", sum(numbers))  # 输出 总和: 15
# sorted() 函数
fruits = ["banana", "apple", "cherry"]
sorted_fruits = sorted(fruits)
print("排序后:", sorted_fruits)  # 输出 排序后: ['apple', 'banana', 'cherry']

解释:

len() 函数用于获取序列的长度。

type() 函数用于获取变量的数据类型。

sum() 函数用于计算数值列表的总和。

sorted() 函数用于对列表进行排序。

18. 生成器

生成器是一种特殊的迭代器,可以节省内存。

示例:

# 定义一个生成器函数
def fibonacci(n):
    a, b = 0, 1
    while a < n:
        yield a
        a, b = b, a + b
# 使用生成器
for num in fibonacci(10):
    print(num)
# 输出
# 0
# 1
# 1
# 2
# 3
# 5
# 8

解释:

使用 yield 关键字定义生成器函数。

生成器函数每次调用时返回一个值,并保留状态。

19. Lambda 函数

Lambda 函数是一种简洁的匿名函数定义方式。

示例:

# 定义 lambda 函数
add = lambda x, y: x + y
print("加法结果:", add(5, 3))  # 输出 加法结果: 8
# 使用 lambda 函数
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("偶数:", even_numbers)  # 输出 偶数: [2, 4]

解释:

lambda 关键字用于定义匿名函数。

Lambda 函数可以作为参数传递给其他函数,如 filter()。

20. 列表推导式

列表推导式是一种简洁的创建列表的方式。

示例:

# 基本列表推导式
squares = [x ** 2 for x in range(5)]
print("平方数:", squares)  # 输出 平方数: [0, 1, 4, 9, 16]
# 带条件的列表推导式
even_squares = [x ** 2 for x in range(5) if x % 2 == 0]
print("偶数平方数:", even_squares)  # 输出 偶数平方数: [0, 4, 16]

解释:

列表推导式使用 [expression for item in iterable] 的形式。

可以在列表推导式中加入条件表达式。

21. 字典推导式

字典推导式是一种简洁的创建字典的方式。

示例:

# 基本字典推导式
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
age_dict = {name: age for name, age in zip(names, ages)}
print("年龄字典:", age_dict)  # 输出 年龄字典: {'Alice': 25, 'Bob': 30, 'Charlie': 35}
# 带条件的字典推导式
even_age_dict = {name: age for name, age in zip(names, ages) if age % 2 == 0}
print("偶数年龄字典:", even_age_dict)  # 输出 偶数年龄字典: {}

解释:

字典推导式使用 {key_expression: value_expression for item in iterable} 的形式。

可以在字典推导式中加入条件表达式。

22. 装饰器

装饰器是一种函数,可以修改其他函数的行为。

示例:

# 定义一个装饰器
def my_decorator(func):
    def wrapper():
        print("在函数调用之前做一些事情。")
        func()
        print("在函数调用之后做一些事情。")
    return wrapper
# 应用装饰器
@my_decorator
def say_hello():
    print("你好!")
say_hello()
# 输出
# 在函数调用之前做一些事情。
# 你好!
# 在函数调用之后做一些事情。

解释:

使用 def 关键字定义装饰器函数。

装饰器函数返回一个包装函数 wrapper,该函数在调用原函数前后执行额外的操作。

使用 @ 符号将装饰器应用到目标函数上。

23. 文件操作

文件操作是 Python 中常见的任务,包括读取、写入和追加文件内容。

示例:

# 写入文件
with open('example.txt', 'w', encoding='utf-8') as file:
    file.write('你好,世界!')
# 读取文件
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
print("文件内容:", content)  # 输出 文件内容: 你好,世界!
# 追加文件
with open('example.txt', 'a', encoding='utf-8') as file:
    file.write('\n再见,世界!')
# 重新读取文件
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
print("更新后的文件内容:", content)  # 输出 更新后的文件内容: 你好,世界!\n再见,世界!

解释:

使用 with 语句打开文件,确保文件在操作完成后自动关闭。

'w' 模式用于写入文件,会清空原有内容。

'r' 模式用于读取文件。

'a' 模式用于追加文件,不会清空原有内容。

24. 列表切片

列表切片是 Python 中一种强大的特性,用于访问和操作列表的子部分。

示例:

# 获取列表的前 n 个元素
lst = [0, 1, 2, 3, 4, 5]
n = 3
print("前3个元素:", lst[:n])  # 输出 前3个元素: [0, 1, 2]
# 获取列表的后 n 个元素
print("后3个元素:", lst[-n:])  # 输出 后3个元素: [3, 4, 5]
# 获取列表的中间 n 个元素
print("中间部分元素:", lst[n:-n])  # 输出 中间部分元素: [3, 4]
# 获取列表的第一个元素
print("第一个元素:", lst[0])  # 输出 第一个元素: 0
# 获取列表的最后一个元素
print("最后一个元素:", lst[-1])  # 输出 最后一个元素: 5
# 获取列表的倒数第二个元素
print("倒数第二个元素:", lst[-2])  # 输出 倒数第二个元素: 4
# 反转列表
print("反转后的列表:", lst[::-1])  # 输出 反转后的列表: [5, 4, 3, 2, 1, 0]
# 获取列表的奇数索引元素
print("奇数索引元素:", lst[1::2])  # 输出 奇数索引元素: [1, 3, 5]
# 获取列表的偶数索引元素
print("偶数索引元素:", lst[0::2])  # 输出 偶数索引元素: [0, 2, 4]
# 获取列表的步长为 2 的元素
print("步长为2的元素:", lst[::2])  # 输出 步长为2的元素: [0, 2, 4]

解释:

切片操作使用 : 分隔符来指定起始和结束索引。

负索引从列表末尾开始计数。

可以使用步长来指定切片的间隔。

25. 字符串格式化

字符串格式化用于将变量插入到字符串中。

示例:

# 使用 % 操作符
name = "Alice"
age = 25
print("我的名字是 %s,我今年 %d 岁。" % (name, age))  # 输出 我的名字是 Alice,我今年 25 岁。
# 使用 format() 方法
print("我的名字是 {}, 我今年 {} 岁。".format(name, age))  # 输出 我的名字是 Alice,我今年 25 岁。
# 使用 f-string
print(f"我的名字是 {name},我今年 {age} 岁。")  # 输出 我的名字是 Alice,我今年 25 岁。

解释:

% 操作符是最传统的字符串格式化方式。

format() 方法提供更灵活的格式化选项。

f-string 是 Python 3.6 以后引入的新特性,更简洁易读。

26. 列表排序

列表排序可以按升序或降序排列列表元素。

示例:

# 升序排序
numbers = [3, 1, 4, 1, 5, 9]
sorted_numbers = sorted(numbers)
print("升序排序:", sorted_numbers)  # 输出 升序排序: [1, 1, 3, 4, 5, 9]
# 降序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
print("降序排序:", sorted_numbers_desc)  # 输出 降序排序: [9, 5, 4, 3, 1, 1]
# 原地排序
numbers.sort()
print("原地排序:", numbers)  # 输出 原地排序: [1, 1, 3, 4, 5, 9]

解释:

sorted() 函数返回一个新的排序后的列表。

reverse=True 参数用于降序排序。

sort() 方法在原列表上进行排序。

27. 列表去重

列表去重可以去除列表中的重复元素。

示例:

# 使用 set 去重
numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = list(set(numbers))
print("去重后的列表:", unique_numbers)  # 输出 去重后的列表: [1, 2, 3, 4, 5]
# 使用列表推导式去重
unique_numbers = []
for num in numbers:
    if num not in unique_numbers:
        unique_numbers.append(num)
print("去重后的列表:", unique_numbers)  # 输出 去重后的列表: [1, 2, 3, 4, 5]

解释:

set 是一种无序不重复的集合,可以快速去重。

列表推导式可以手动去重,保持元素的原始顺序。

28. 列表反转

列表反转可以将列表中的元素顺序颠倒。

示例:

# 使用 reversed() 函数
numbers = [1, 2, 3, 4, 5]
reversed_numbers = list(reversed(numbers))
print("反转后的列表:", reversed_numbers)  # 输出 反转后的列表: [5, 4, 3, 2, 1]
# 使用切片反转
reversed_numbers = numbers[::-1]
print("反转后的列表:", reversed_numbers)  # 输出 反转后的列表: [5, 4, 3, 2, 1]

解释:

reversed() 函数返回一个反向迭代器,需要转换为列表。

切片操作 [::-1] 可以直接反转列表。

29. 列表合并

列表合并可以将多个列表合并为一个列表。

示例:

# 使用 + 操作符
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = list1 + list2
print("合并后的列表:", merged_list)  # 输出 合并后的列表: [1, 2, 3, 4, 5, 6]
# 使用 extend() 方法
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1.extend(list2)
print("合并后的列表:", list1)  # 输出 合并后的列表: [1, 2, 3, 4, 5, 6]

解释:

+ 操作符可以将两个列表合并为一个新的列表。

extend() 方法在原列表上添加另一个列表的元素。

30. 列表索引

列表索引用于查找列表中元素的位置。

示例:

# 查找元素的索引
fruits = ["apple", "banana", "cherry"]
index = fruits.index("banana")
print("香蕉的索引:", index)  # 输出 香蕉的索引: 1
# 查找不存在的元素会抛出 ValueError
try:
    index = fruits.index("grape")
except ValueError:
    print("葡萄不在列表中。")  # 输出 葡萄不在列表中。

解释:

index() 方法返回指定元素在列表中的第一个匹配项的索引。

如果元素不存在,会抛出 ValueError。

总结

以上是Python 语言的核心语法细节,涵盖了从基本的变量和数据类型、字符串操作、列表和元组、字典和集合,到控制结构、函数、类和对象、异常处理、文件操作、列表切片、字符串格式化、列表排序、去重、反转、合并和索引等各个方面。熟悉这些语法细节可以大大提高你在编程中的效率和代码的可读性。

责任编辑:武晓燕 来源: 测试开发学习交流
相关推荐

2018-06-21 11:03:54

shelllinux命令

2020-04-10 13:04:19

微服务架构RPC

2023-05-08 15:25:19

Python编程语言编码技巧

2023-04-20 14:31:20

Python开发教程

2024-06-19 10:08:34

GoChannel工具

2020-08-23 18:18:27

Python列表数据结构

2020-03-31 08:42:14

程序员操作系统 Linux

2018-03-28 14:10:10

GoPython代码

2018-04-23 11:24:37

多云模式公共云多云策略

2018-10-26 14:10:21

2024-11-21 12:55:11

Promise异步操作

2009-09-11 10:33:52

招聘秘籍

2024-09-02 09:00:59

2018-04-23 10:28:01

Java误区

2018-04-20 11:19:17

Java误区细节

2023-10-13 00:00:00

设计模式GO语言

2015-05-19 14:34:17

程序员编程语言

2011-05-31 14:48:31

PHP

2022-09-21 15:11:28

MySQL数据库技巧

2020-07-10 07:58:14

Linux
点赞
收藏

51CTO技术栈公众号