Python 基础语法笔记

125 阅读7分钟

Python 基础语法笔记

1. 变量与数据类型

1.1 变量

  • 定义: 变量是用来存储数据的命名内存位置。

  • 声明与赋值: Python 中声明变量不需要指定类型,直接赋值即可。

    name = "张三"  # 字符串类型
    age = 25      # 整数类型
    height = 1.75 # 浮点数类型
    is_student = True # 布尔类型
    
  • 变量命名规则:

    • 可以包含字母、数字和下划线。
    • 不能以数字开头。
    • 区分大小写 (nameName 是不同的变量)。
    • 不能使用 Python 关键字 (如 if, for, while 等)。
  • 动态类型: Python 是一种动态类型语言,这意味着变量的类型可以在运行时改变。

    x = 10
    print(type(x)) # 输出: <class 'int'>
    x = "hello"
    print(type(x)) # 输出: <class 'str'>
    

1.2 基本数据类型

  • 数值类型 (Numeric Types) :

    • int (整数): 任意大小的整数,例如 10, -5, 1000000
    • float (浮点数): 带有小数点的数字,例如 3.14, -0.5, 2.0
    • complex (复数): 由实部和虚部组成,例如 1 + 2j
  • 布尔类型 (Boolean Type) :

    • bool: 只有两个值 TrueFalse。常用于条件判断。
  • 字符串类型 (String Type) :

    • str: 用单引号 (')、双引号 (") 或三引号 ('''""") 括起来的文本序列。
    • 三引号可以用于多行字符串。
    s1 = 'Hello'
    s2 = "World"
    s3 = """This is a
    multi-line string."""
    
    • 字符串是不可变的 (immutable)。
  • 列表类型 (List Type) :

    • list: 有序、可变 (mutable) 的元素集合,用方括号 [] 表示。
    • 可以包含不同类型的元素。
    my_list = [1, "apple", 3.14, True]
    print(my_list[0])   # 访问元素: 1
    my_list.append("new_item") # 添加元素
    my_list[0] = 100    # 修改元素
    
  • 元组类型 (Tuple Type) :

    • tuple: 有序、不可变 (immutable) 的元素集合,用圆括号 () 表示。
    • 一旦创建,元组中的元素不能被修改。
    my_tuple = (1, "banana", 2.71)
    print(my_tuple[1])  # 访问元素: banana
    # my_tuple[0] = 10  # 错误: 元组不可修改
    
  • 字典类型 (Dictionary Type) :

    • dict: 无序、可变 (mutable) 的键值对 (key-value pairs) 集合,用花括号 {} 表示。
    • 键 (key) 必须是唯一的且不可变 (通常是字符串、数字或元组)。
    my_dict = {"name": "Alice", "age": 30, "city": "New York"}
    print(my_dict["name"]) # 访问值: Alice
    my_dict["age"] = 31    # 修改值
    my_dict["job"] = "Engineer" # 添加新键值对
    
  • 集合类型 (Set Type) :

    • set: 无序、不重复 (unique) 元素的集合,用花括号 {} 表示。
    • 主要用于成员测试和消除重复元素。
    my_set = {1, 2, 3, 2, 1}
    print(my_set) # 输出: {1, 2, 3} (重复元素被自动移除)
    my_set.add(4) # 添加元素
    

2. 运算符

2.1 算术运算符

  • + (加)
  • - (减)
  • * (乘)
  • / (除,结果为浮点数)
  • % (取模,返回余数)
  • ** (幂,例如 2 ** 3 等于 8)
  • // (整除,返回商的整数部分)

2.2 比较运算符 (关系运算符)

  • == (等于)
  • != (不等于)
  • > (大于)
  • < (小于)
  • >= (大于等于)
  • <= (小于等于)
  • 比较结果为布尔值 (TrueFalse)。

2.3 逻辑运算符

  • and (逻辑与): 如果两个操作数都为真,则结果为真。
  • or (逻辑或): 如果至少一个操作数为真,则结果为真。
  • not (逻辑非): 反转操作数的值。

2.4 赋值运算符

  • = (简单赋值)
  • += (加法赋值,例如 x += 1 等同于 x = x + 1)
  • -= (减法赋值)
  • *= (乘法赋值)
  • /= (除法赋值)
  • %= (取模赋值)
  • **= (幂赋值)
  • //= (整除赋值)

2.5 成员运算符

  • in: 如果序列中包含指定值,则返回 True

  • not in: 如果序列中不包含指定值,则返回 True

    fruits = ["apple", "banana", "cherry"]
    print("apple" in fruits)    # True
    print("grape" not in fruits) # True
    

2.6 身份运算符

  • is: 判断两个变量是否引用同一个对象 (内存地址)。

  • is not: 判断两个变量是否不引用同一个对象。

    a = [1, 2]
    b = [1, 2]
    c = a
    print(a is b) # False (a和b是不同的列表对象,尽管内容相同)
    print(a is c) # True (a和c引用同一个列表对象)
    

3. 控制流

3.1 条件语句 (if, elif, else)

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

score = 85

if score >= 90:
    print("优秀")
elif score >= 70:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

3.2 循环语句

  • for 循环: 遍历序列 (列表、元组、字符串、字典、集合) 或其他可迭代对象。

    # 遍历列表
    for item in ["apple", "banana", "cherry"]:
        print(item)
    
    # 遍历数字序列 (使用 range())
    for i in range(5): # 从 0 到 4
        print(i)
    
    for i in range(1, 6): # 从 1 到 5
        print(i)
    
    for i in range(0, 10, 2): # 从 0 到 8,步长为 2
        print(i)
    
  • while 循环: 当给定条件为真时重复执行代码块。

    count = 0
    while count < 5:
        print(f"Count is: {count}")
        count += 1
    

3.3 循环控制语句

  • break: 立即终止当前循环,跳出循环体。

    for i in range(10):
        if i == 5:
            break
        print(i) # 输出 0, 1, 2, 3, 4
    
  • continue: 跳过当前循环的剩余部分,进入下一次迭代。

    for i in range(5):
        if i == 2:
            continue
        print(i) # 输出 0, 1, 3, 4
    
  • pass: 占位符,表示什么都不做。当语法要求有语句但你不想执行任何操作时使用。

    if True:
        pass # 以后再添加代码
    

4. 函数

4.1 定义函数

使用 def 关键字定义函数。

def greet(name):
    """
    这个函数用于向指定的人打招呼。
    """
    print(f"你好, {name}!")

greet("小明") # 调用函数

4.2 函数参数

  • 位置参数: 按照参数的顺序传递。

    def add(a, b):
        return a + b
    print(add(5, 3)) # a=5, b=3
    
  • 关键字参数: 通过参数名传递,可以不按顺序。

    print(add(b=3, a=5))
    
  • 默认参数: 为参数设置默认值,调用时可以不传。

    def power(base, exp=2):
        return base ** exp
    print(power(3))   # 3的2次方,输出 9
    print(power(3, 3)) # 3的3次方,输出 27
    
  • 可变参数 (*args) : 接收任意数量的位置参数,作为元组。

    def sum_all(*numbers):
        total = 0
        for num in numbers:
            total += num
        return total
    print(sum_all(1, 2, 3))    # 输出 6
    print(sum_all(10, 20, 30, 40)) # 输出 100
    
  • 关键字可变参数 (**kwargs) : 接收任意数量的关键字参数,作为字典。

    def print_info(**kwargs):
        for key, value in kwargs.items():
            print(f"{key}: {value}")
    print_info(name="Alice", age=30, city="London")
    

4.3 返回值

使用 return 语句返回函数执行结果。如果没有 return 语句,函数默认返回 None

def multiply(x, y):
    return x * y

result = multiply(4, 5)
print(result) # 输出 20

4.4 匿名函数 (Lambda 表达式)

用于创建小型、一次性使用的函数。

add_one = lambda x: x + 1
print(add_one(5)) # 输出 6

# 结合高阶函数使用
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers) # 输出 [1, 4, 9, 16]

5. 模块与包

5.1 模块 (Module)

  • 定义: 一个包含 Python 代码的文件 (以 .py 结尾),可以定义函数、类和变量。

  • 导入模块:

    import math         # 导入整个 math 模块
    print(math.pi)
    
    from datetime import date # 从 datetime 模块导入 date 对象
    today = date.today()
    print(today)
    
    import random as rnd # 导入模块并使用别名
    print(rnd.randint(1, 10))
    
    from collections import Counter as Cnt # 导入特定对象并使用别名
    my_list = [1, 2, 2, 3, 3, 3]
    count = Cnt(my_list)
    print(count)
    

5.2 包 (Package)

  • 定义: 组织模块的方式,是一个包含多个模块和其他子包的目录。

  • 包目录通常包含一个特殊的 __init__.py 文件 (Python 3.3+ 之后可以省略,但建议保留)。

  • 导入包中的模块: 假设有以下目录结构:

    my_project/
    ├── main.py
    └── my_package/
        ├── __init__.py
        └── module_a.py
        └── module_b.py
    

    module_a.py 中:

    def func_a():
        print("这是 module_a 中的函数")
    

    main.py 中导入 module_a:

    from my_package import module_a
    module_a.func_a()
    
    # 或者
    from my_package.module_a import func_a
    func_a()
    

6. 注释

  • 单行注释: 使用 # 符号。

    # 这是一个单行注释
    x = 10 # 变量 x 的赋值
    
  • 多行注释 (文档字符串) : 使用三引号 '''...'''"""..."""。通常用于函数、类或模块的文档说明。

    def my_function():
        """
        这是一个多行注释,也称为文档字符串。
        它解释了函数的功能。
        """
        print("Hello from function!")
    

7. 输入与输出

7.1 输出 (print())

  • 用于在控制台打印信息。

  • 可以打印变量、字符串、数字等。

  • sep 参数: 指定多个参数之间的分隔符 (默认为空格)。

  • end 参数: 指定打印结束后的字符 (默认为换行符 \n)。 py

    print("Hello, World!")
    name = "Python"
    print("学习", name, "真有趣!", sep="-", end="!!!\n")
    

7.2 输入 (input())

  • 用于从用户那里获取输入。

  • input() 函数总是返回一个字符串。如果需要数字,需要进行类型转换。

    user_name = input("请输入你的名字: ")
    print(f"你好, {user_name}!")
    
    age_str = input("请输入你的年龄: ")
    age = int(age_str) # 将字符串转换为整数
    print(f"你的年龄是 {age} 岁。")