Python基础语法

Python学习笔记,涵盖了基础语法、常见操作、数据结构、面向对象编程、异常处理、文件操作、常用库等方面的要点和详细解释。这份总结为初学者提供了一个系统化的学习路线和代码示例,帮助深入理解每一个知识点。


Python学习笔记

1. Python基础

1.1 变量和数据类型
  • 变量:用来存储数据的容器。变量名可以是字母、数字和下划线组成,但不能以数字开头。
  • 基本数据类型
    • 整数 (int):整数类型,表示正整数和负整数。
    • 浮点数 (float):小数类型,表示带有小数点的数值。
    • 字符串 (str):文本数据,用引号包围,例如:"Hello"。
    • 布尔值 (bool)TrueFalse,用于逻辑判断。
python 复制代码
name = "Alice"  # 字符串
age = 25        # 整数
height = 5.6    # 浮点数
is_student = True  # 布尔值
1.2 基础运算符
  • 算术运算符+(加)、-(减)、*(乘)、/(除)、//(整除)、%(取余)、**(幂运算)。
  • 比较运算符==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
  • 逻辑运算符andornot
python 复制代码
x = 10
y = 3

print(x + y)   # 输出: 13
print(x - y)   # 输出: 7
print(x * y)   # 输出: 30
print(x / y)   # 输出: 3.3333...
print(x // y)  # 输出: 3  (整除)
print(x % y)   # 输出: 1  (取余数)
print(x ** y)  # 输出: 1000 (幂运算)

2. 条件判断与循环

2.1 条件判断 (if-elif-else)
  • Python的条件语句用于控制程序的逻辑流,根据条件的真假执行不同的代码块。
  • 使用冒号 (:) 表示条件语句的开始,并缩进代码块。
python 复制代码
age = 20

if age < 18:
    print("You are a minor.")
elif age == 18:
    print("You just became an adult!")
else:
    print("You are an adult.")
2.2 循环 (forwhile)
  • for 循环:用于遍历序列(列表、字符串等)。
  • while 循环 :当条件为True时重复执行代码。
python 复制代码
# for 循环
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

# while 循环
count = 0
while count < 3:
    print(f"Count is {count}")
    count += 1

3. 函数

3.1 函数定义与调用
  • 函数是Python中实现代码重用的一个非常重要的工具。使用 def 关键字定义函数。
python 复制代码
# 定义函数
def greet(name):
    print(f"Hello, {name}!")

# 调用函数
greet("Alice")  # 输出: Hello, Alice!
3.2 带返回值的函数
  • 使用 return 语句从函数返回结果。
python 复制代码
def add(a, b):
    return a + b

result = add(5, 3)
print(result)  # 输出: 8
3.3 默认参数与可变长度参数
  • 默认参数:在函数定义时为参数提供默认值。
  • 可变长度参数 :通过 *args**kwargs 处理可变数量的参数。
python 复制代码
# 默认参数
def greet(name="Guest"):
    print(f"Hello, {name}!")

greet()  # 输出: Hello, Guest!
greet("Alice")  # 输出: Hello, Alice!

# 可变参数
def add_all(*numbers):
    total = 0
    for number in numbers:
        total += number
    return total

print(add_all(1, 2, 3, 4))  # 输出: 10

4. 列表与字典

4.1 列表操作
  • 列表是Python中的一种序列类型,可以存储多个值,并支持增删改查等操作。
python 复制代码
numbers = [1, 2, 3, 4, 5]

# 添加元素
numbers.append(6)

# 删除元素
numbers.remove(3)

# 访问元素
print(numbers[0])  # 输出: 1

# 切片操作
print(numbers[1:3])  # 输出: [2, 4]
4.2 字典操作
  • 字典是一种键值对的数据结构,键是唯一的,值可以是任意类型。
python 复制代码
# 创建字典
person = {"name": "Alice", "age": 25, "city": "New York"}

# 访问值
print(person["name"])  # 输出: Alice

# 添加键值对
person["job"] = "Engineer"

# 遍历字典
for key, value in person.items():
    print(f"{key}: {value}")

----在Python中,容器是用于存储和组织数据的结构。Python提供了多种内置的容器类型,每种容器都有其独特的特性和适用场景。常见的容器包括:列表、元组、集合、字典和字符串。每种容器类型都具有不同的方法和操作。下面是对Python不同容器及其常用方法的详细总结。


1. 列表 (list)

列表简介

  • 列表是Python中最常用的可变序列,可以存储任意类型的对象,并且可以动态改变大小(增删元素)。
  • 列表是有序的,允许重复元素。

常用方法和操作

python 复制代码
# 创建列表
fruits = ["apple", "banana", "cherry"]

# 访问元素
print(fruits[0])  # 输出: apple

# 添加元素
fruits.append("orange")         # 在列表末尾添加
fruits.insert(1, "blueberry")   # 在指定位置插入元素

# 删除元素
fruits.remove("banana")  # 删除指定元素
popped_item = fruits.pop()  # 删除并返回最后一个元素
del fruits[1]  # 删除指定位置的元素

# 计数和查找
print(fruits.count("apple"))  # 输出: 1 (apple出现的次数)
print(fruits.index("cherry"))  # 输出: 1 (cherry的索引位置)

# 排序和反转
fruits.sort()       # 按字母顺序排序
fruits.reverse()    # 反转列表顺序

# 列表复制
new_fruits = fruits.copy()  # 浅拷贝

列表常用操作

python 复制代码
# 列表连接
fruits += ["grape", "melon"]

# 切片操作
print(fruits[1:3])  # 输出: 从索引1到2的子列表

2. 元组 (tuple)

元组简介

  • 元组与列表类似,但元组是不可变的,意味着一旦创建就不能修改。
  • 元组适用于存储不需要改变的数据。

常用方法和操作

python 复制代码
# 创建元组
coordinates = (10, 20)

# 访问元素
print(coordinates[0])  # 输出: 10

# 元组的基本方法
print(coordinates.count(10))  # 输出: 1 (10出现的次数)
print(coordinates.index(20))  # 输出: 1 (20的索引位置)

# 元组不可变,所以不支持修改
# coordinates[0] = 30  # 这将抛出错误

元组解包

python 复制代码
# 元组解包
x, y = coordinates
print(x)  # 输出: 10
print(y)  # 输出: 20

3. 集合 (set)

集合简介

  • 集合是一个无序的、不可重复的元素集合。
  • 集合适用于去重、集合运算(交集、并集等)。

常用方法和操作

python 复制代码
# 创建集合
fruits_set = {"apple", "banana", "cherry"}

# 添加元素
fruits_set.add("orange")

# 删除元素
fruits_set.remove("banana")  # 删除元素,若元素不存在会抛出错误
fruits_set.discard("banana")  # 删除元素,若元素不存在不会抛出错误
popped_item = fruits_set.pop()  # 随机删除并返回元素

# 集合运算
set1 = {"apple", "banana", "cherry"}
set2 = {"banana", "cherry", "date"}

# 并集
print(set1.union(set2))  # 输出: {'apple', 'date', 'cherry', 'banana'}

# 交集
print(set1.intersection(set2))  # 输出: {'cherry', 'banana'}

# 差集
print(set1.difference(set2))  # 输出: {'apple'}

# 子集与超集
print(set1.issubset(set2))  # 输出: False (set1不是set2的子集)
print(set1.issuperset(set2))  # 输出: False (set1不是set2的超集)

# 清空集合
fruits_set.clear()

去重操作

python 复制代码
# 去除列表中的重复元素
numbers = [1, 2, 3, 4, 2, 3, 5]
unique_numbers = list(set(numbers))  # 将列表转换为集合去重,再转换为列表

4. 字典 (dict)

字典简介

  • 字典是一种键值对 (key-value) 的容器。每个键是唯一的,值可以是任意类型。
  • 字典是无序的,在Python 3.7及以后,字典在插入时会保持顺序。

常用方法和操作

python 复制代码
# 创建字典
person = {"name": "Alice", "age": 25, "city": "New York"}

# 访问值
print(person["name"])  # 输出: Alice

# 添加或修改键值对
person["job"] = "Engineer"  # 添加新键值对
person["age"] = 26          # 修改已有键的值

# 删除键值对
person.pop("city")         # 删除指定键并返回它的值
del person["age"]          # 删除指定键

# 遍历字典
for key, value in person.items():
    print(f"{key}: {value}")

# 获取键、值和键值对
print(person.keys())       # 输出: dict_keys(['name', 'job'])
print(person.values())     # 输出: dict_values(['Alice', 'Engineer'])
print(person.items())      # 输出: dict_items([('name', 'Alice'), ('job', 'Engineer')])

# 使用get方法访问键值,避免键不存在时抛出异常
print(person.get("age", "Unknown"))  # 输出: Unknown (因为age键已被删除)

# 合并字典
person.update({"city": "San Francisco", "age": 30})  # 合并新的键值对

5. 字符串 (str)

字符串简介

  • 字符串是Python中的文本容器,不可变。
  • 字符串支持许多内置方法,帮助进行文本操作。

常用方法和操作

python 复制代码
# 创建字符串
text = "Hello, Python!"

# 访问字符
print(text[0])  # 输出: H

# 字符串方法
print(text.lower())      # 输出: hello, python! (全部转为小写)
print(text.upper())      # 输出: HELLO, PYTHON! (全部转为大写)
print(text.replace("Python", "World"))  # 输出: Hello, World! (替换子字符串)
print(text.split(", "))  # 输出: ['Hello', 'Python!'] (按分隔符切分字符串)

# 查找和计数
print(text.find("Python"))  # 输出: 7 (返回子字符串的位置)
print(text.count("l"))      # 输出: 2 (统计某个字符的出现次数)

# 删除空白
strip_text = "  Hello, Python!  "
print(strip_text.strip())  # 输出: Hello, Python! (去除两边的空白字符)

字符串格式化

python 复制代码
name = "Alice"
age = 25

# 使用 f-string 进行格式化
print(f"My name is {name}, and I am {age} years old.")  # 输出: My name is Alice, and I am 25 years old.

# 使用 format 方法
print("My name is {}, and I am {} years old.".format(name, age))

字符串切片

python 复制代码
# 字符串切片
print(text[0:5])  # 输出: Hello (切片操作,取索引0到4的字符)
print(text[::-1])  # 输出: !nohtyP ,olleH (反转字符串)

下面是对Python常见容器及其方法的表格形式总结:

容器类型 描述 常用方法 示例
列表 (list) 可变的有序序列,允许重复 - append(x) 添加元素 - insert(i, x) 在指定位置插入 - remove(x) 删除第一个匹配的元素 - pop([i]) 删除并返回最后或指定位置的元素 - sort() 排序 - reverse() 反转顺序 - count(x) 统计元素出现次数 - index(x) 返回元素的索引 python fruits = ["apple", "banana"] fruits.append("cherry")
元组 (tuple) 不可变的有序序列,允许重复 - count(x) 统计元素出现次数 - index(x) 返回元素的索引 - 元组解包(多个变量赋值) python coordinates = (10, 20) x, y = coordinates
集合 (set) 无序、不可重复的元素集合 - add(x) 添加元素 - remove(x) 删除元素,不存在则报错 - discard(x) 删除元素,不存在不报错 - union(set) 并集 - intersection(set) 交集 - difference(set) 差集 - issubset(set) 是否为子集 - clear() 清空集合 python set1 = {"apple", "banana"} set1.add("cherry")
字典 (dict) 键值对的无序集合,键唯一 - get(key, default) 获取键对应的值 - keys() 获取所有键 - values() 获取所有值 - items() 获取所有键值对 - pop(key) 删除并返回指定键的值 - update(dict) 合并字典 python person = {"name": "Alice"} person["age"] = 25
字符串 (str) 不可变的字符序列 - lower() 转小写 - upper() 转大写 - replace(old, new) 替换子字符串 - split(sep) 按分隔符切割 - find(sub) 查找子字符串位置 - count(sub) 统计子字符串出现次数 - strip() 去除空白字符 python text = "Hello" print(text.upper())

容器的特点总结:

  • 列表:用于可变的、有序的数据存储。
  • 元组:适合不可变的、有序数据存储,通常用于需要保护不被修改的数据。
  • 集合:无序、元素唯一,适用于去重操作和集合运算。
  • 字典:通过键值对进行存储,键唯一,适合快速查找数据。
  • 字符串:不可变的字符序列,提供大量文本处理功能。

这个表格总结了每种容器的特性及常用方法,方便对比和理解不同容器的用途。

5. 面向对象编程 (OOP)

5.1 类与对象
  • Python支持面向对象编程。类是对象的模板,属性和方法可以封装在类中。
python 复制代码
# 定义类
class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} is barking!")

# 创建对象
my_dog = Dog("Buddy", 3)
print(my_dog.name)  # 输出: Buddy
my_dog.bark()  # 输出: Buddy is barking!
5.2 类的继承
  • 继承允许新类从已有的类中获取属性和方法。
python 复制代码
# 定义父类
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        print(f"{self.name} makes a sound")

# 定义子类
class Dog(Animal):
    def speak(self):
        print(f"{self.name} barks")

# 创建子类对象
dog = Dog("Buddy")
dog.speak()  # 输出: Buddy barks

6. 文件操作

6.1 文件读写
  • Python可以轻松处理文件的读写操作,使用 open() 函数打开文件,并使用 with 语句确保文件在使用后自动关闭。
python 复制代码
# 写入文件
with open("example.txt", "w") as file:
    file.write("Hello, Python!")

# 读取文件
with open("example.txt", "r") as file:
    content = file.read()
    print(content)  # 输出: Hello, Python!

在Python中,文件的读取和写入是常见的操作,Python提供了内置的函数和方法来轻松实现这些功能。文件操作主要包括打开文件、读取内容、写入内容以及关闭文件。下面是对Python文件操作的总结。


1. 打开文件

open() 函数

  • Python 使用 open() 函数来打开文件,返回一个文件对象。open() 函数的语法如下:
python 复制代码
open(file, mode='r', encoding=None)
  • 参数说明
    • file:文件路径。
    • mode:文件打开模式(见下表)。
    • encoding:编码格式(常用 utf-8)。

常见的文件打开模式:

模式 描述
'r' 以只读模式打开文件(默认模式)。
'w' 以写入模式打开文件,若文件存在则清空文件内容,若文件不存在则创建新文件。
'a' 以追加模式打开文件,写入的数据会附加到文件末尾,文件不存在则创建新文件。
'r+' 以读写模式打开文件,文件必须存在。
'b' 以二进制模式打开文件(可与其他模式组合,如 'rb')。
't' 以文本模式打开文件(默认模式,可与其他模式组合,如 'rt')。

2. 读取文件

常用的文件读取方法:

方法 描述
read(size=-1) 读取整个文件内容或指定大小的字符/字节,若 size 为负值,则读取整个文件。
readline() 读取文件的一行,遇到换行符结束。
readlines() 读取文件的所有行并返回一个包含行的列表。

读取文件示例

python 复制代码
# 打开文件并读取整个内容
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()  # 读取整个文件
    print(content)

# 逐行读取文件
with open('example.txt', 'r', encoding='utf-8') as file:
    for line in file:
        print(line.strip())  # 打印每一行,strip() 去除换行符

分别读取文件的几种方式:

python 复制代码
# 读取指定字符数
with open('example.txt', 'r', encoding='utf-8') as file:
    partial_content = file.read(10)  # 读取前10个字符
    print(partial_content)

# 读取一行
with open('example.txt', 'r', encoding='utf-8') as file:
    line = file.readline()  # 读取第一行
    print(line.strip())

# 读取所有行
with open('example.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()  # 返回文件中所有行的列表
    for line in lines:
        print(line.strip())

3. 写入文件

常用的文件写入方法:

方法 描述
write(string) 将字符串写入文件。
writelines(list) 将列表中的字符串写入文件,列表中的每个元素应为字符串。

写入文件示例

python 复制代码
# 写入文件(覆盖模式)
with open('example.txt', 'w', encoding='utf-8') as file:
    file.write("Hello, World!\n")
    file.write("Python file handling is easy.\n")

# 追加模式
with open('example.txt', 'a', encoding='utf-8') as file:
    file.write("This is an additional line.\n")

写入多行

python 复制代码
lines = ["First line.\n", "Second line.\n", "Third line.\n"]

# 使用 writelines() 方法写入多行
with open('example.txt', 'w', encoding='utf-8') as file:
    file.writelines(lines)  # 每个元素代表一行

4. 文件关闭

  • 在文件操作完成后,应该关闭文件以释放系统资源。这可以通过调用 close() 方法来完成。
  • 使用 with 语句 是管理文件上下文的最佳实践,能够在代码块结束时自动关闭文件。
python 复制代码
file = open('example.txt', 'r', encoding='utf-8')
content = file.read()
file.close()  # 手动关闭文件

# 更好的方法是使用 with 语句:
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()  # 自动关闭文件

5. 二进制文件的读写

  • 对于图片、音频等非文本文件,使用二进制模式进行读写。

读取二进制文件

python 复制代码
# 读取图片文件
with open('image.png', 'rb') as file:
    binary_content = file.read()
    print(binary_content[:10])  # 读取前10字节

写入二进制文件

python 复制代码
# 写入二进制文件
with open('output.bin', 'wb') as file:
    file.write(b'\x00\xFF\x10\x20')  # 写入字节数据

6. 文件的其他操作

seek()tell() 方法

  • seek(offset, whence) :用于移动文件指针到指定位置。
    • offset:偏移量,表示移动的字节数。
    • whence:起始位置,0 表示从文件头开始(默认),1 表示从当前位置开始,2 表示从文件末尾开始。
  • tell():返回当前文件指针的位置。
python 复制代码
# 文件指针的操作
with open('example.txt', 'r', encoding='utf-8') as file:
    print(file.read(5))  # 读取前5个字符
    print(file.tell())   # 输出当前文件指针位置(5)
    
    file.seek(0)         # 移动到文件开始
    print(file.read(5))  # 重新读取前5个字符

文件存在性检查

python 复制代码
import os

# 检查文件是否存在
if os.path.exists('example.txt'):
    print("File exists.")
else:
    print("File does not exist.")

7. 异常处理

在文件操作中,使用异常处理可以确保在文件操作发生错误时能够安全关闭文件。

python 复制代码
try:
    with open('non_existent_file.txt', 'r', encoding='utf-8') as file:
        content = file.read()
except FileNotFoundError:
    print("File not found.")
except Exception as e:
    print(f"An error occurred: {e}")

8. 总结表格

操作 方法 描述
打开文件 open(file, mode, encoding) 打开文件,并返回文件对象
读取文件 read(), readline(), readlines() 读取整个文件、一行或所有行
写入文件 write(), writelines() 写入字符串或字符串列表
关闭文件 close() 关闭文件,释放资源
二进制操作 rb, wb 模式 读取和写入二进制文件
文件指针 seek(offset, whence) 移动文件指针到指定位置
检查文件 os.path.exists(file) 检查文件是否存在

通过使用这些方法和技巧,Python中的文件操作可以变得非常简单且高效。在实际开发中,建议总是使用 with 语句来自动管理文件的打开和关闭,确保资源得到正确释放。

7. 异常处理

  • Python中的异常处理使用 try-except 语句,用于捕获和处理代码运行时的错误。
python 复制代码
try:
    result = 10 / 0
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")
finally:
    print("This block always runs.")

8. 常用库

8.1 datetime库
  • datetime 用于处理日期和时间。
python 复制代码
import datetime

now = datetime.datetime.now()
print(now)  # 输出当前日期和时间

formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted)  # 输出格式化的日期
8.2 random库
  • random 用于生成随机数。
python 复制代码
import random

# 生成1到10之间的随机整数
print(random.randint(1, 10))
8.3 math库
  • math 提供了常见的数学函数和常量。
python 复制代码
import math

print(math.sqrt(16))  # 输出: 4.0
print(math.pi)        # 输出: 3.141592653589793

9. 进阶特性

9.1 列表生成式
  • 列表生成式提供了一种简洁的语法,用于基于已有的列表生成新的列表。
python 复制代码
squares = [x**2 for x in range(1,

 11)]
print(squares)  # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
9.2 装饰器
  • 装饰器是修改函数行为的高级技术。
python 复制代码
def my_decorator(func):
    def wrapper():
        print("Before function call")
        func()
        print("After function call")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

通过这份详细的学习笔记,可以帮助初学者从基础到进阶逐步掌握Python编程语言的核心概念、语法和实战技能。每一个知识点都配有代码示例,便于理解和实践。

相关推荐
CT随3 分钟前
Redis内存碎片详解
java·开发语言
anlog12 分钟前
C#在自定义事件里传递数据
开发语言·c#·自定义事件
奶香臭豆腐25 分钟前
C++ —— 模板类具体化
开发语言·c++·学习
晚夜微雨问海棠呀33 分钟前
长沙景区数据分析项目实现
开发语言·python·信息可视化
graceyun34 分钟前
C语言初阶习题【9】数9的个数
c语言·开发语言
cdut_suye43 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
dundunmm1 小时前
机器学习之scikit-learn(简称 sklearn)
python·算法·机器学习·scikit-learn·sklearn·分类算法
古希腊掌管学习的神1 小时前
[机器学习]sklearn入门指南(1)
人工智能·python·算法·机器学习·sklearn
波音彬要多做1 小时前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法
Swift社区1 小时前
Excel 列名称转换问题 Swift 解答
开发语言·excel·swift