【Python】语法入门
文章目录
- Python 基础语法:打印和变量
- 打印和变量的基本语法
- 打印
- 变量
- 变量操作
- 变量的命名规则
- 打印和变量的应用场景
- 示例:基本计算器
- Python 基础语法:列表推导式
- 列表推导式的基本语法
- 基本示例
- 带条件的列表推导式
- 列表推导式的应用场景
- Python 基础语法:数据类型
- 数据类型的基本介绍
- 整数和浮点数
- 字符串
- 列表
- 元组
- 字典
- 集合
- 数据类型的应用场景
- Python 基础语法:条件语句
- 条件语句的基本语法
- if 语句
- if-else 语句
- if-elif-else 语句
- 基本示例
- 条件语句的应用场景
- Python 基础语法:循环
- 循环的基本语法
- for 循环
- while 循环
- 基本示例
- for 循环示例
- while 循环示例
- 循环的应用场景
- Python 基础语法:函数
- 函数的基本语法
- 基本示例
- 带多个参数的函数
- 默认参数
- 函数的应用场景
- Python 基础语法:类和对象
- 类和对象的基本语法
- 定义类
- 创建对象
- 基本示例
- 访问对象的属性和方法
- 类和对象的应用场景
- Python 基础语法:列表推导式
- 列表推导式的基本语法
- 基本示例
- 带条件的列表推导式
- 列表推导式的应用场景
- Python 基础语法:生成器
- 生成器的基本语法
- 基本示例
- 生成器的应用场景
- Python 基础语法:文件操作
- 文件操作的基本语法
- 打开文件
- 读写文件
- 基本示例
- 读取文件
- 写入文件
- 逐行读取文件
- 文件操作的应用场景
- Python 基础语法:错误和异常处理
- 错误和异常处理的基本语法
- try-except 语句
- try-except-finally 语句
- 基本示例
- 捕获异常
- 捕获多个异常
- finally 子句
- 异常处理的应用场景
- Python 基础语法:迭代器
- 迭代器的基本语法
- 创建迭代器
- 使用迭代器
- 基本示例
- 简单的迭代器示例
- 自定义迭代器
- 迭代器的应用场景
- Python 基础语法:Lambda 表达式
- Lambda 表达式的基本语法
- 基本示例
- 在内置函数中使用 Lambda 表达式
- 排序
- 映射
- 过滤
- Lambda 表达式的应用场景
- Python 基础语法:模块和包
- 模块的基本语法
- 导入模块
- 导入特定函数或变量
- 给模块或函数取别名
- 创建自定义模块
- 例如创建一个名为 `my_module.py` 的文件:
- 在另一个文件中使用自定义模块:
- 包的基本语法
- 创建一个包结构:
- `module1.py`:
- `module2.py`:
- 使用包中的模块:
- 模块和包的应用场景
- Python 基础语法:主要标准库
- `datetime` 模块
- 基本示例
- `math` 模块
- 基本示例
- `random` 模块
- 基本示例
- `os` 模块
- 基本示例
- `sys` 模块
- 基本示例
- 标准库的应用场景
目录如下:
打印和变量
数据类型
条件语句
循环
函数
类和对象
列表推导式
生成器
文件操作
错误和异常处理
迭代器
Lambda 表达式
模块和包
主要标准库
Python 基础语法:打印和变量
在 Python 中,print
函数用于输出信息,变量用于存储数据。这是编程中的基本操作,适用于所有需要输出结果或存储临时数据的场景。
打印和变量的基本语法
打印
使用 print
函数可以输出文本或变量的值:
print("Hello, World!")
输出:
Hello, World!
变量
变量用于存储数据,可以是各种数据类型,如整数、浮点数、字符串等:
# 整数
a = 10# 浮点数
b = 20.5# 字符串
name = "Blossom"
你可以使用 print
函数输出变量的值:
print(a) # 输出: 10
print(b) # 输出: 20.5
print(name) # 输出: Blossom
变量操作
你可以对变量进行各种操作,如赋值、运算等:
# 赋值
c = a + b# 输出运算结果
print(c) # 输出: 30.5
变量的命名规则
变量名必须以字母或下划线开头,后续字符可以是字母、数字或下划线。变量名区分大小写:
age = 25
Age = 30print(age) # 输出: 25
print(Age) # 输出: 30
打印和变量的应用场景
打印和变量是编程的基本操作,适用于以下场景:
- 调试代码:使用
print
输出变量值,帮助调试和理解代码执行过程。 - 与用户交互:在命令行程序中,
print
函数用于显示提示和结果。 - 数据存储和处理:变量用于存储临时数据和中间计算结果。
示例:基本计算器
以下是一个简单的计算器示例,展示如何使用变量存储用户输入并输出计算结果:
# 获取用户输入
num1 = float(input("Enter first number: "))
num2 = float(input("Enter second number: "))# 进行加法运算
result = num1 + num2# 输出结果
print(f"The result of adding {num1} and {num2} is {result}")
在这个示例中,用户输入的两个数字被存储在变量 num1
和 num2
中,然后计算结果存储在变量 result
中并输出。
Python 基础语法:列表推导式
列表推导式是 Python 中一种简洁且优雅的创建列表的方式。通过列表推导式,你可以在一行代码中生成新的列表,并且这种方式通常比使用传统的 for
循环更加高效。
列表推导式的基本语法
列表推导式的基本语法如下:
[expression for item in iterable if condition]
expression
是你想要对每个元素执行的操作。item
是从iterable
中迭代出来的元素。condition
是一个可选的过滤条件,只有满足条件的元素才会被包含在新列表中。
基本示例
让我们从一个简单的例子开始,创建一个包含 0 到 9 的平方数的列表:
squares = [x ** 2 for x in range(10)]
print(squares)
输出:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
在这个例子中,x ** 2
是表达式,x
是从 range(10)
迭代出来的元素。
带条件的列表推导式
你可以在列表推导式中加入条件,只包含满足条件的元素。例如,创建一个仅包含偶数平方数的列表:
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)
输出:
[0, 4, 16, 36, 64]
在这个例子中,只有当 x
是偶数时,x ** 2
才会被包含在新列表中。
列表推导式的应用场景
列表推导式在许多场景中都非常有用,以下是一些常见的应用:
-
数据处理和转换:可以用来对列表中的每个元素进行转换或计算。
temperatures_celsius = [0, 10, 20, 30] temperatures_fahrenheit = [((9/5) * temp + 32) for temp in temperatures_celsius] print(temperatures_fahrenheit) # [32.0, 50.0, 68.0, 86.0]
-
过滤数据:可以用来从列表中筛选出符合条件的元素。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = [num for num in numbers if num % 2 == 0] print(even_numbers) # [2, 4, 6, 8, 10]
-
嵌套列表的扁平化:可以用来将嵌套的列表扁平化为一维列表。
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flat_list = [num for sublist in nested_list for num in sublist] print(flat_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推导式是一个强大且灵活的工具,掌握它将极大提升你的 Python 编程效率。
Python 基础语法:数据类型
Python 支持多种数据类型,包括整数、浮点数、字符串、列表、元组、字典和集合。选择合适的数据类型有助于更高效地处理数据。
数据类型的基本介绍
整数和浮点数
整数和浮点数用于表示数值数据:
# 整数
x = 5# 浮点数
y = 2.5print(x) # 输出: 5
print(y) # 输出: 2.5
字符串
字符串用于表示文本数据,可以用单引号或双引号定义:
# 字符串
name = "Blossom"print(name) # 输出: Blossom
字符串还支持多行字符串,使用三重引号定义:
# 多行字符串
multiline_string = """This is
a multi-line
string"""print(multiline_string)
列表
列表是有序的可变序列,用于存储多个元素:
# 列表
my_list = [1, 2, 3, 4]print(my_list) # 输出: [1, 2, 3, 4]
元组
元组是有序的不可变序列,用于存储多个元素:
# 元组
my_tuple = (1, 2, 3, 4)print(my_tuple) # 输出: (1, 2, 3, 4)
字典
字典是无序的键值对集合,用于存储具有映射关系的数据:
# 字典
my_dict = {"name": "Blossom", "age": 30}print(my_dict) # 输出: {'name': 'Blossom', 'age': 30}
集合
集合是无序的不重复元素集合:
# 集合
my_set = {1, 2, 3, 4}print(my_set) # 输出: {1, 2, 3, 4}
数据类型的应用场景
不同的数据类型适用于不同的场景,以下是一些常见的应用:
-
整数和浮点数:用于数学计算和数值处理。
radius = 5.0 area = 3.14 * (radius ** 2) print(area) # 输出: 78.5
-
字符串:用于存储和处理文本数据。
first_name = "John" last_name = "Doe" full_name = first_name + " " + last_name print(full_name) # 输出: John Doe
-
列表:用于存储和操作有序的元素集合。
fruits = ["apple", "banana", "cherry"] fruits.append("orange") print(fruits) # 输出: ['apple', 'banana', 'cherry', 'orange']
-
元组:用于存储不可变的元素集合。
coordinates = (10.0, 20.0) print(coordinates) # 输出: (10.0, 20.0)
-
字典:用于存储具有映射关系的数据。
person = {"name": "Alice", "age": 25} print(person["name"]) # 输出: Alice
-
集合:用于存储不重复的元素集合。
unique_numbers = {1, 2, 3, 4, 4, 5} print(unique_numbers) # 输出: {1, 2, 3, 4, 5}
掌握这些数据类型将帮助你更高效地编写 Python 程序,并使你的代码更具可读性和可维护性。
Python 基础语法:条件语句
条件语句用于根据条件执行不同的代码块。这在需要根据条件做出决策的场景中非常有用,例如用户输入验证和业务逻辑处理。
条件语句的基本语法
if 语句
if condition:# 当 condition 为 True 时执行的代码块pass
if-else 语句
if condition:# 当 condition 为 True 时执行的代码块pass
else:# 当 condition 为 False 时执行的代码块pass
if-elif-else 语句
if condition1:# 当 condition1 为 True 时执行的代码块pass
elif condition2:# 当 condition1 为 False 且 condition2 为 True 时执行的代码块pass
else:# 当 condition1 和 condition2 都为 False 时执行的代码块pass
基本示例
让我们从一个简单的例子开始,根据变量的值打印不同的信息:
x = 10
y = 20if x > y:print("x is greater than y")
elif x < y:print("x is less than y")
else:print("x is equal to y")
输出:
x is less than y
在这个例子中,条件语句检查 x
和 y
的值,并根据条件执行不同的代码块。
条件语句的应用场景
条件语句在许多场景中都非常有用,以下是一些常见的应用:
-
用户输入验证:检查用户输入的值是否符合预期。
age = int(input("Enter your age: "))if age < 0:print("Age cannot be negative") elif age < 18:print("You are a minor") else:print("You are an adult")
-
业务逻辑处理:根据不同的条件执行不同的业务逻辑。
score = 85if score >= 90:grade = "A" elif score >= 80:grade = "B" elif score >= 70:grade = "C" elif score >= 60:grade = "D" else:grade = "F"print(f"Your grade is {grade}")
-
流程控制:控制程序的执行流程,决定是否继续执行某些操作。
is_member = Trueif is_member:print("Access granted") else:print("Access denied")
掌握条件语句将帮助你编写更智能和更灵活的 Python 程序,使你的代码能够根据不同的情况做出相应的反应。
Python 基础语法:循环
循环用于重复执行一段代码,直到满足特定条件。循环广泛应用于遍历数据结构、重复计算任务和自动化处理。
循环的基本语法
for 循环
for item in iterable:# 对 iterable 中的每个 item 执行的代码块pass
while 循环
while condition:# 当 condition 为 True 时重复执行的代码块pass
基本示例
for 循环示例
让我们从一个简单的例子开始,使用 for
循环遍历一个列表并打印每个元素:
fruits = ["apple", "banana", "cherry"]for fruit in fruits:print(fruit)
输出:
apple
banana
cherry
在这个例子中,for
循环遍历列表 fruits
并打印每个水果。
while 循环示例
以下是一个使用 while
循环打印从 0 到 4 的例子:
count = 0while count < 5:print(count)count += 1
输出:
0
1
2
3
4
在这个例子中,while
循环在 count
小于 5 时重复执行,打印当前的 count
值并将 count
增加 1。
循环的应用场景
循环在许多场景中都非常有用,以下是一些常见的应用:
-
遍历数据结构:循环用于遍历列表、元组、字典等数据结构。
names = ["Alice", "Bob", "Charlie"]for name in names:print(f"Hello, {name}!")
-
重复计算任务:循环用于重复执行某个计算任务。
total = 0for i in range(1, 11):total += iprint(f"The sum of numbers from 1 to 10 is {total}")
-
自动化处理:循环用于自动化处理多项任务,例如批量处理文件。
files = ["file1.txt", "file2.txt", "file3.txt"]for file in files:with open(file, "r") as f:content = f.read()print(content)
掌握循环将帮助你编写更高效和灵活的 Python 程序,使你的代码能够自动化执行重复性任务。
Python 基础语法:函数
函数用于封装一段代码,可以多次调用,减少代码重复。函数使代码更具可读性和可维护性。
函数的基本语法
def function_name(parameters):# 函数体return result
def
关键字用于定义函数。function_name
是函数的名称。parameters
是函数的参数,可以有多个,用逗号分隔。return
关键字用于返回结果。
基本示例
让我们从一个简单的例子开始,定义一个函数并调用它:
def greet(name):return f"Hello, {name}!"print(greet("Blossom")) # 输出: Hello, Blossom!
在这个例子中,greet
函数接受一个参数 name
,返回一个问候字符串。
带多个参数的函数
你可以定义带有多个参数的函数:
def add(a, b):return a + bprint(add(3, 5)) # 输出: 8
在这个例子中,add
函数接受两个参数 a
和 b
,返回它们的和。
默认参数
函数参数可以有默认值,如果调用函数时未提供该参数,则使用默认值:
def greet(name, message="Hello"):return f"{message}, {name}!"print(greet("Blossom")) # 输出: Hello, Blossom!
print(greet("Blossom", "Hi")) # 输出: Hi, Blossom!
在这个例子中,message
参数有一个默认值 "Hello"
。
函数的应用场景
函数在许多场景中都非常有用,以下是一些常见的应用:
-
代码重用:函数使代码可以重复使用,避免代码重复。
def square(x):return x ** 2print(square(2)) # 输出: 4 print(square(3)) # 输出: 9
-
提高可读性:函数使代码更具结构性和可读性。
def is_even(number):return number % 2 == 0print(is_even(4)) # 输出: True print(is_even(5)) # 输出: False
-
分解问题:函数使你可以将复杂的问题分解为多个小问题,每个小问题对应一个函数。
def calculate_area(radius):return 3.14 * (radius ** 2)def calculate_circumference(radius):return 2 * 3.14 * radiusradius = 5 print(f"Area: {calculate_area(radius)}") # 输出: Area: 78.5 print(f"Circumference: {calculate_circumference(radius)}") # 输出: Circumference: 31.400000000000002
掌握函数将帮助你编写更简洁和高效的 Python 程序,使你的代码更具可维护性。
Python 基础语法:类和对象
类是面向对象编程的核心,用于定义对象的属性和行为。对象是类的实例,类和对象使
程序具有更高的可重用性和可维护性。
类和对象的基本语法
定义类
class ClassName:def __init__(self, parameters):# 初始化属性self.attribute = valuedef method(self):# 方法体pass
创建对象
# 创建类的实例
object_name = ClassName(arguments)
基本示例
让我们从一个简单的例子开始,定义一个类并创建它的对象:
class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):return f"{self.name} says woof!"# 创建对象
my_dog = Dog("Buddy", 3)
print(my_dog.bark()) # 输出: Buddy says woof!
在这个例子中,Dog
类有一个初始化方法 __init__
,用于设置 name
和 age
属性,并有一个方法 bark
,返回狗叫的声音。
访问对象的属性和方法
# 访问属性
print(my_dog.name) # 输出: Buddy
print(my_dog.age) # 输出: 3# 调用方法
print(my_dog.bark()) # 输出: Buddy says woof!
类和对象的应用场景
类和对象在许多场景中都非常有用,以下是一些常见的应用:
-
模拟现实世界实体:类和对象用于模拟现实世界中的实体及其行为。
class Car:def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yeardef description(self):return f"{self.year} {self.make} {self.model}"my_car = Car("Toyota", "Corolla", 2020) print(my_car.description()) # 输出: 2020 Toyota Corolla
-
封装数据和行为:类和对象用于封装数据和相关的行为,提高代码的可维护性和可扩展性。
class BankAccount:def __init__(self, owner, balance=0):self.owner = ownerself.balance = balancedef deposit(self, amount):self.balance += amountreturn self.balancedef withdraw(self, amount):if amount <= self.balance:self.balance -= amountreturn self.balanceelse:return "Insufficient funds"account = BankAccount("Alice", 100) print(account.deposit(50)) # 输出: 150 print(account.withdraw(30)) # 输出: 120 print(account.withdraw(200)) # 输出: Insufficient funds
-
实现代码重用:类和对象用于实现代码重用,通过继承和多态实现复杂的功能。
class Animal:def __init__(self, name):self.name = namedef speak(self):raise NotImplementedError("Subclass must implement abstract method")class Dog(Animal):def speak(self):return f"{self.name} says woof!"class Cat(Animal):def speak(self):return f"{self.name} says meow!"my_dog = Dog("Buddy") my_cat = Cat("Kitty") print(my_dog.speak()) # 输出: Buddy says woof! print(my_cat.speak()) # 输出: Kitty says meow!
掌握类和对象将帮助你编写更具结构性和可维护性的 Python 程序,使你的代码能够更好地模拟现实世界的问题和解决方案。
Python 基础语法:列表推导式
列表推导式是 Python 中一种简洁且优雅的创建列表的方式。通过列表推导式,你可以在一行代码中生成新的列表,并且这种方式通常比使用传统的 for
循环更加高效。
列表推导式的基本语法
[expression for item in iterable if condition]
expression
是你想要对每个元素执行的操作。item
是从iterable
中迭代出来的元素。condition
是一个可选的过滤条件,只有满足条件的元素才会被包含在新列表中。
基本示例
让我们从一个简单的例子开始,创建一个包含 0 到 9 的平方数的列表:
squares = [x ** 2 for x in range(10)]
print(squares)
输出:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
在这个例子中,x ** 2
是表达式,x
是从 range(10)
迭代出来的元素。
带条件的列表推导式
你可以在列表推导式中加入条件,只包含满足条件的元素。例如,创建一个仅包含偶数平方数的列表:
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
print(even_squares)
输出:
[0, 4, 16, 36, 64]
在这个例子中,只有当 x
是偶数时,x ** 2
才会被包含在新列表中。
列表推导式的应用场景
列表推导式在许多场景中都非常有用,以下是一些常见的应用:
-
数据处理和转换:可以用来对列表中的每个元素进行转换或计算。
temperatures_celsius = [0, 10, 20, 30] temperatures_fahrenheit = [((9/5) * temp + 32) for temp in temperatures_celsius] print(temperatures_fahrenheit) # [32.0, 50.0, 68.0, 86.0]
-
过滤数据:可以用来从列表中筛选出符合条件的元素。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = [num for num in numbers if num % 2 == 0] print(even_numbers) # [2, 4, 6, 8, 10]
-
嵌套列表的扁平化:可以用来将嵌套的列表扁平化为一维列表。
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flat_list = [num for sublist in nested_list for num in sublist] print(flat_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推导式是一个强大且灵活的工具,掌握它将极大提升你的 Python 编程效率。
Python 基础语法:生成器
生成器(Generator)是一种特殊的迭代器,用于逐个产生(或“生成”)值,而不是一次性地生成所有值。生成器在处理大量数据或需要延迟计算时特别有用。
生成器的基本语法
生成器使用 yield
关键字逐个返回值,而不是使用 return
一次性返回。
def generator_function():yield value
基本示例
让我们从一个简单的例子开始,定义一个生成器并使用它:
def count_up_to(max):count = 1while count <= max:yield countcount += 1# 使用生成器
counter = count_up_to(5)
for num in counter:print(num) # 输出: 1 2 3 4 5
在这个例子中,count_up_to
生成器按需生成从 1 到 max 的数字。每次 yield
返回一个值后,生成器暂停并保留其状态,直到下次调用。
生成器的应用场景
生成器在许多场景中都非常有用,以下是一些常见的应用:
-
处理大数据集:生成器按需生成值,避免一次性占用大量内存。
def read_large_file(file_path):with open(file_path, 'r') as file:for line in file:yield line.strip()# 使用生成器逐行读取大文件 for line in read_large_file('large_file.txt'):print(line)
-
延迟计算:生成器在需要时生成值,可以提高
程序的性能。
def fibonacci(n):a, b = 0, 1while n > 0:yield aa, b = b, a + bn -= 1# 使用生成器生成前10个斐波那契数
for num in fibonacci(10):print(num) # 输出前10个斐波那契数
-
生成无限序列:生成器可以用于生成无限序列,直到满足特定条件。
def infinite_sequence():num = 0while True:yield numnum += 1# 使用生成器生成无限序列 for num in infinite_sequence():if num > 10:breakprint(num) # 输出: 0 1 2 3 4 5 6 7 8 9 10
掌握生成器将帮助你编写更高效和灵活的 Python 程序,特别是在处理大数据集或需要延迟计算的场景中。
Python 基础语法:文件操作
文件操作是编程中常见的任务,Python 提供了一组函数来读写文件。文件操作在数据处理和存储中非常常用。
文件操作的基本语法
打开文件
使用 open
函数打开文件:
file = open("filename.txt", "mode")
filename.txt
是文件名。mode
是文件打开模式,如读取('r'
)、写入('w'
)、追加('a'
)等。
读写文件
# 读取文件
with open("example.txt", "r") as file:content = file.read()print(content)# 写入文件
with open("example.txt", "w") as file:file.write("Hello, World!")
基本示例
读取文件
以下是一个读取文件内容并打印的例子:
with open("example.txt", "r") as file:content = file.read()print(content)
写入文件
以下是一个将文本写入文件的例子:
with open("example.txt", "w") as file:file.write("Hello, World!")
逐行读取文件
以下是一个逐行读取文件内容的例子:
with open("example.txt", "r") as file:for line in file:print(line.strip())
文件操作的应用场景
文件操作在许多场景中都非常有用,以下是一些常见的应用:
-
日志记录:将程序运行的日志写入文件,便于后续分析和调试。
def log_message(message):with open("log.txt", "a") as file:file.write(message + "\n")log_message("Program started") log_message("An error occurred")
-
数据存储和读取:将数据存储到文件中,以便后续读取和处理。
data = ["line 1", "line 2", "line 3"]# 写入数据 with open("data.txt", "w") as file:for line in data:file.write(line + "\n")# 读取数据 with open("data.txt", "r") as file:content = file.read()print(content)
-
配置文件:读取和写入配置文件,动态配置程序参数。
# 写入配置 with open("config.txt", "w") as file:file.write("username=admin\n")file.write("password=secret\n")# 读取配置 config = {} with open("config.txt", "r") as file:for line in file:key, value = line.strip().split("=")config[key] = valueprint(config) # 输出: {'username': 'admin', 'password': 'secret'}
掌握文件操作将帮助你处理数据的读写任务,使你的程序能够持久化数据并与外部文件进行交互。
Python 基础语法:错误和异常处理
错误和异常处理用于捕获和处理程序中的错误,确保程序在发生错误时不会崩溃。异常处理使你的代码更具鲁棒性和可靠性。
错误和异常处理的基本语法
try-except 语句
try:# 可能引发异常的代码pass
except SomeException as e:# 处理异常的代码pass
try-except-finally 语句
try:# 可能引发异常的代码pass
except SomeException as e:# 处理异常的代码pass
finally:# 始终执行的代码pass
基本示例
捕获异常
以下是一个捕获除零错误的例子:
try:result = 10 / 0
except ZeroDivisionError:print("You can't divide by zero!")
输出:
You can't divide by zero!
捕获多个异常
你可以捕获多个异常,并对每种异常进行不同的处理:
try:value = int("abc")
except ValueError:print("ValueError: Could not convert string to int")
except TypeError:print("TypeError: Unsupported operation")
输出:
ValueError: Could not convert string to int
finally 子句
finally
子句中的代码始终会执行,无论是否发生异常:
try:file = open("example.txt", "r")content = file.read()
except FileNotFoundError:print("File not found")
finally:file.close()print("File closed")
异常处理的应用场景
异常处理在许多场景中都非常有用,以下是一些常见的应用:
-
用户输入验证:捕获和处理用户输入的错误。
while True:try:age = int(input("Enter your age: "))breakexcept ValueError:print("Invalid input. Please enter a number.") print(f"Your age is {age}")
-
文件操作:捕获和处理文件读写中的错误。
try:with open("data.txt", "r") as file:content = file.read()print(content) except FileNotFoundError:print("File not found")
-
网络请求:捕获和处理网络请求中的错误。
import requeststry:response = requests.get("https://api.example.com/data")data = response.json() except requests.ConnectionError:print("Failed to connect to the server") except requests.Timeout:print("The request timed out") except requests.RequestException as e:print(f"An error occurred: {e}")
掌握错误和异常处理将帮助你编写更健壮和可靠的 Python 程序,使你的代码能够在发生错误时优雅地处理并继续运行。
Python 基础语法:迭代器
迭代器(Iterator)是一个对象,它包含一个 countable 的元素序列,可以遍历其中的元素。迭代器在处理序列数据时非常有用。
迭代器的基本语法
创建迭代器
使用 iter()
函数可以将一个可迭代对象转换为迭代器:
iterable = [1, 2, 3, 4]
iterator = iter(iterable)
使用迭代器
使用 next()
函数可以获取迭代器的下一个元素:
print(next(iterator)) # 输出: 1
print(next(iterator)) # 输出: 2
print(next(iterator)) # 输出: 3
print(next(iterator)) # 输出: 4
当迭代器没有更多元素时,next()
函数会引发 StopIteration
异常。
基本示例
简单的迭代器示例
以下是一个使用迭代器遍历列表的例子:
my_list = [1, 2, 3, 4]
my_iterator = iter(my_list)for item in my_iterator:print(item)
输出:
1
2
3
4
自定义迭代器
你可以通过实现 __iter__()
和 __next__()
方法来自定义迭代器:
class MyIterator:def __init__(self, start, end):self.current =startself.end = enddef __iter__(self):return selfdef __next__(self):if self.current >= self.end:raise StopIterationelse:self.current += 1return self.current - 1# 使用自定义迭代器
for num in MyIterator(1, 5):print(num)
输出:
1
2
3
4
迭代器的应用场景
迭代器在许多场景中都非常有用,以下是一些常见的应用:
-
遍历大型数据集:迭代器按需生成元素,避免一次性加载所有数据。
def read_large_file(file_path):with open(file_path, 'r') as file:for line in file:yield line.strip()# 使用生成器逐行读取大文件 for line in read_large_file('large_file.txt'):print(line)
-
自定义序列生成:通过自定义迭代器,可以生成复杂的序列。
class FibonacciIterator:def __init__(self, max):self.max = maxself.a, self.b = 0, 1def __iter__(self):return selfdef __next__(self):if self.a > self.max:raise StopIterationcurrent = self.aself.a, self.b = self.b, self.a + self.breturn current# 使用自定义迭代器生成斐波那契数列 for num in FibonacciIterator(100):print(num)
-
延迟计算:迭代器在需要时生成值,提高程序的性能和内存利用率。
def infinite_sequence():num = 0while True:yield numnum += 1# 使用生成器生成无限序列 for num in infinite_sequence():if num > 10:breakprint(num) # 输出: 0 1 2 3 4 5 6 7 8 9 10
掌握迭代器将帮助你编写更高效和灵活的 Python 程序,使你的代码能够优雅地处理大型数据集和复杂的序列生成。
Python 基础语法:Lambda 表达式
Lambda 表达式是一种简洁的定义小型匿名函数的方法。Lambda 表达式通常用于需要一个简单函数的场景,如排序或过滤数据。
Lambda 表达式的基本语法
lambda parameters: expression
parameters
是函数的参数,可以有多个,用逗号分隔。expression
是函数的返回值,通常是一个简单的计算或操作。
基本示例
让我们从一个简单的例子开始,定义一个 Lambda 表达式并调用它:
add = lambda x, y: x + y
print(add(3, 5)) # 输出: 8
在这个例子中,lambda x, y: x + y
定义了一个接受两个参数并返回它们和的匿名函数。
在内置函数中使用 Lambda 表达式
Lambda 表达式常用于内置函数中,如 sorted
、map
和 filter
。
排序
使用 sorted
函数和 Lambda 表达式对列表进行排序:
my_list = [(1, 2), (3, 4), (5, 0)]
sorted_list = sorted(my_list, key=lambda x: x[1])
print(sorted_list) # 输出: [(5, 0), (1, 2), (3, 4)]
映射
使用 map
函数和 Lambda 表达式对列表中的每个元素进行操作:
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # 输出: [1, 4, 9, 16, 25]
过滤
使用 filter
函数和 Lambda 表达式过滤列表中的元素:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出: [2, 4, 6, 8, 10]
Lambda 表达式的应用场景
Lambda 表达式在许多场景中都非常有用,以下是一些常见的应用:
-
简化代码:Lambda 表达式用于定义简单的匿名函数,简化代码结构。
multiply = lambda x, y: x * y print(multiply(2, 3)) # 输出: 6
-
排序和过滤:Lambda 表达式常用于排序和过滤数据,使代码更简洁。
students = [{"name": "Alice", "score": 85},{"name": "Bob", "score": 92},{"name": "Charlie", "score": 78} ]# 按分数排序 sorted_students = sorted(students, key=lambda student: student["score"]) print(sorted_students)
-
回调函数:Lambda 表达式常用于回调函数中,使代码更紧凑。
def apply_function(func, value):return func(value)result = apply_function(lambda x: x ** 2, 5) print(result) # 输出: 25
掌握 Lambda 表达式将帮助你编写更简洁和高效的 Python 代码,使你的代码更具可读性和可维护性。
Python 基础语法:模块和包
模块和包是组织和管理代码的基本单元。模块是包含 Python 代码的文件,包是包含多个模块的文件夹。通过模块和包,你可以将代码分割成更小、更易管理的部分,提高代码的重用性和可维护性。
模块的基本语法
导入模块
使用 import
关键字可以导入模块:
import mathprint(math.sqrt(16)) # 输出: 4.0
导入特定函数或变量
使用 from ... import ...
语法可以从模块中导入特定的函数或变量:
from math import piprint(pi) # 输出: 3.141592653589793
给模块或函数取别名
使用 as
关键字可以给模块或函数取一个别名:
import numpy as nparray = np.array([1, 2, 3])
print(array) # 输出: [1 2 3]
创建自定义模块
你可以将常用的函数和变量放在一个 Python 文件中,作为自定义模块:
例如创建一个名为 my_module.py
的文件:
# my_module.py
def greet(name):return f"Hello, {name}!"PI = 3.14159
在另一个文件中使用自定义模块:
import my_moduleprint(my_module.greet("Blossom")) # 输出: Hello, Blossom!
print(my_module.PI) # 输出: 3.14159
包的基本语法
包是包含多个模块的文件夹,每个包通常包含一个 __init__.py
文件,用于初始化包。你可以将相关的模块放在一个包中,以便更好地组织代码。
创建一个包结构:
my_package/__init__.pymodule1.pymodule2.py
module1.py
:
# module1.py
def func1():return "Function 1 from module 1"
module2.py
:
# module2.py
def func2():return "Function 2 from module 2"
使用包中的模块:
from my_package import module1, module2print(module1.func1()) # 输出: Function 1 from module 1
print(module2.func2()) # 输出: Function 2 from module 2
模块和包的应用场景
模块和包在许多场景中都非常有用,以下是一些常见的应用:
-
组织代码:模块和包用于将代码分割成更小、更易管理的部分,提高代码的可读性和可维护性。
# 例如,将数学相关的函数放在一个模块中 # math_utils.py def add(a, b):return a +
b
def subtract(a, b):
return a - b
2. **代码重用**:通过模块和包,你可以在多个项目中重用相同的代码。```python
# 例如,在项目 A 中使用自定义模块
import math_utilsresult = math_utils.add(5, 3)
print(result) # 输出: 8
-
第三方库:Python 的模块和包系统使你可以轻松地使用和分享第三方库。
# 例如,使用 requests 库进行 HTTP 请求 import requestsresponse = requests.get("https://api.example.com/data") data = response.json() print(data)
掌握模块和包将帮助你编写更有组织和更易维护的 Python 代码,使你的代码更具可重用性和扩展性。
Python 基础语法:主要标准库
Python 提供了大量的标准库,以下是一些常用的标准库,了解和掌握这些标准库将帮助你更高效地完成各种编程任务。
datetime
模块
datetime
模块用于处理日期和时间。
基本示例
import datetimenow = datetime.datetime.now()
print(now) # 当前日期和时间# 格式化日期
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_date) # 格式化后的日期
math
模块
math
模块提供数学函数和常量。
基本示例
import mathprint(math.sqrt(16)) # 输出: 4.0
print(math.pi) # 输出: 3.141592653589793
random
模块
random
模块用于生成随机数和随机选择。
基本示例
import randomprint(random.randint(1, 10)) # 生成 1 到 10 之间的随机整数
print(random.choice(["apple", "banana", "cherry"])) # 随机选择一个元素
os
模块
os
模块用于与操作系统进行交互,处理文件和目录。
基本示例
import os# 获取当前工作目录
cwd = os.getcwd()
print(cwd)# 列出目录中的文件和子目录
files = os.listdir(cwd)
print(files)
sys
模块
sys
模块提供与 Python 解释器相关的函数和变量。
基本示例
import sys# 打印命令行参数
print(sys.argv)# 打印 Python 版本
print(sys.version)
标准库的应用场景
标准库在许多场景中都非常有用,以下是一些常见的应用:
-
日期和时间处理:使用
datetime
模块处理日期和时间。import datetimenow = datetime.datetime.now() print(f"Current date and time: {now}")
-
数学计算:使用
math
模块进行数学计算。import mathradius = 5 area = math.pi * (radius ** 2) print(f"Area of circle: {area}")
-
生成随机数:使用
random
模块生成随机数。import randomrandom_number = random.randint(1, 100) print(f"Random number: {random_number}")
-
文件和目录操作:使用
os
模块进行文件和目录操作。import oscurrent_directory = os.getcwd() print(f"Current directory: {current_directory}")
-
与解释器交互:使用
sys
模块与 Python 解释器进行交互。import sysprint(f"Python version: {sys.version}")
掌握标准库将帮助你更高效地完成各种编程任务,使你的代码更具功能性和可靠性。
相关文章:
【Python】语法入门
文章目录 Python 基础语法:打印和变量打印和变量的基本语法打印变量 变量操作变量的命名规则打印和变量的应用场景示例:基本计算器 Python 基础语法:列表推导式列表推导式的基本语法基本示例带条件的列表推导式列表推导式的应用场景 Python 基…...

匠心独运:红酒与手工艺的很好结合
在岁月的长河中,红酒与手工艺都以其不同的魅力和技艺,书写着各自的故事。当这两者相遇,仿佛是一场跨越时空的对话,不仅展现了匠心独运的技艺之美,更在无声中诉说着对品质与生活的热爱。今天,就让我们一起探…...

第20章 Mac+VSCode配置C++环境
1. 下载VSCode VSCode下载地址在mac终端里输入xcode- select --install命令,根据提示安装xcode工具。 2. 安装插件(4个) 打开VScode,点击应用右侧菜单栏 C/C(必装) Code Runner(必装…...
FactoryBean 原理简介
FactoryBean 首先是一个工厂类,它可以生产指定的Bean,特殊之处在于它可以向Spring容器中注册两个Bean,一个是它本身,一个是FactoryBean.getObject()方法返回值所代表的Bean。通过实现 FactoryBean 接口,你可以控制某个…...

Redis中hash类型的操作命令(命令的语法、返回值、时间复杂度、注意事项、操作演示)
文章目录 字符串和哈希类型相比hset 命令hget 命令hexistshdelhkeyshvalshgetallhmgethlenhsetnxhincrbyhincrbyfloat 字符串和哈希类型相比 假设有以下一种场景:现在要在 Redis 中存储一个用户的基本信息(id1、namezhangsan、age17),下图表示使用字符串…...

UE5基本操作(二)
文章目录 前言相机的移动速度修改默认地图使用初学者内容包文件夹结构 总结 前言 在我们的上一篇文章中,我们已经介绍了一些Unreal Engine 5(UE5)的基本操作。UE5是一款强大的游戏开发引擎,它提供了许多工具和功能,使…...
React Navigation 和 Expo Router
React Navigation 是 React Native 社区最常用的导航库,其具有高度可定制性且性能良好的特性。它提供了一系列导航器(如堆栈导航器、标签导航器、抽屉导航器等),可以满足绝大多数的页面导航需求。 Expo Router 是 Expo 官方最新发…...

如何使用python网络爬虫批量获取公共资源数据教程?
原文链接:如何使用python网络爬虫批量获取公共资源数据教程?https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608240&idx4&snef281f66727afabfaae2066c6e92f792&chksmfa826657cdf5ef41571115328a09b9d34367d8b11415d5a5781dc4c…...

常见位运算总结
1.基础位运算 左移 (<<): 最左侧位不要了, 最右侧补 0 右移(>>): 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1) 按位取反(~):如果该位为 0 则转为 1, 如果该位为 1 则转为…...

自动化任务工具 -- zTasker v1.94 绿色版
软件简介 zTasker 是一款功能强大的自动化任务管理软件,以其简洁易用、一键式操作而著称。软件体积小巧,启动迅速,提供了超过100种任务类型和30多种定时/条件执行方法,能够满足用户在自动化方面的多样化需求。 zTasker 支持定时任…...

mybatis mapper.xml 比较运算符(大于|小于|等于)的写法: 转义和<![CDATA[]]>
文章目录 引言I 使用xml 原生转义的方式进行转义II 使用 <![CDATA[ 内容 ]]>引言 应用场景:查询时间范围 背景:在 *.xml 中使用常规的 < > = <= >= 会与xml的语法存在冲突 <![CDATA[]]> 比 转义符 来的繁琐 <![CDATA[]]> 表示xml解析器忽略…...
UE5的基本操作
涵盖了从建模、快捷键使用、界面操作到性能分析等多个方面,以下是一些关键点和技巧:12 建模操作: 使用Shift5切换到建模模式,可以通过Shapes创建基本图元如立方体、球体等。 利用Create面板中的工具,如polyext自由创…...
C++ 实现学生成绩管理系统
C 实现学生成绩管理系统 思路: 定义 Student 类,包含学生的基本信息和成绩。实现添加学生、删除学生、修改成绩、显示所有学生成绩和查找学生的功能。使用向量(vector)存储学生信息。 #include <iostream> #include <…...

Elasticsearch 第四期:搜索和过滤
序 2024年4月,小组计算建设标签平台,使用ES等工具建了一个demo,由于领导变动关系,项目基本夭折。其实这两年也陆陆续续接触和使用过ES,两年前也看过ES的官网,当时刚毕业半年多,由于历史局限性导…...
力扣1124.表现良好的最长时间段
力扣1124.表现良好的最长时间段 哈希表存最小的下标 当s[i] > 0 那么他到头可以构成一个合法时间段否则 找到之前的 s[i] - 1 的下标: 因为连续的前缀和一定只相差1若想算更小的s[i] - 2,s[i] - 3…一定会先算到s[i] - 1那么这些更小数必然在 s[i]−1 首次出现的…...
算法训练营day67
题目1: #include <iostream> #include <vector> #include <string> #include <unordered_set> #include <unordered_map> #include <queue>using namespace std;int main() {string beginStr, endStr;int n;cin >> n;ci…...

人工智能--图像语义分割
个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏:专业知识 文章目录 🍉引言 🍉介绍 🍈工作原理 🍍数据准备 🍍特征提取 🍍像素分…...

fl studio20和21用哪一个好?FL-Chan from FL Studio欣赏
最近接到很多小伙伴的私信,都在问我平时会使用哪些音乐软件,能不能给一些参考。其实每个人的使用习惯不一样,需求也不一样。以DAW为例,有些人就是喜欢FL Studio,有些人吹爆Studio One,还有些人习惯使用Cuba…...

OpenCV直方图计算函数calcHist的使用
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 功能描述 图像的直方图是一种统计表示方法,用于展示图像中不同像素强度(通常是灰度值或色彩强度)出现的频率分布。具体来说…...

09 docker 安装tomcat 详解
目录 一、安装tomcat 1. tomcat镜像的获取 2. docker创建容器实列 3. 访问测试 404错误 4. 解决方案 5. 使用免修改版容器镜像 5.1. 运行实列的创建 5.2. 出现问题及解决: 6. 验证 OK 一、安装tomcat 1. tomcat镜像的获取 docker search tomcat #docker …...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...