【Python基础语法入门】

变量与数据类型

变量的定义与赋值

1. 基本定义
x = 10  # 整数变量
y = 3.14  # 浮点数变量
name = "Python"  # 字符串变量
is_valid = True  # 布尔变量
  • x 被赋值为 10,自动识别为 int 类型(整数)。
  • y 被赋值为 3.14,自动识别为 float 类型(浮点数)。
  • name 被赋值为 "Python",自动识别为 str 类型(字符串)。
  • is_valid 被赋值为 True,自动识别为 bool 类型(布尔值)。

  • 2. 多变量同时赋值
    x, y, z = 1, 2.5, "Python"
    
  • x = 1 (整数)
  • y = 2.5 (浮点数)
  • z = "Python" (字符串)

  • 3. 多个变量赋相同的值
    a = b = c = 100
    
  • abc 都指向 100

  • 4 . 变量的解包(解构赋值)

    Python 支持 序列解包赋值

    a, b, c = [1, 2, 3]
    print(a, b, c)  # 输出:1 2 3
    
  • a 赋值 1
  • b 赋值 2
  • c 赋值 3
  • 交换变量的值(Python 独有的简洁写法):

    x, y = 10, 20
    x, y = y, x
    print(x, y)  # 输出:20 10
    

    变量命名规则(字母、数字、下划线,不能以数字开头)

    Python 变量的命名必须遵循以下语法规则,否则会报错:

    1. 变量命名规则

    变量名必须由字母(a-z,A-Z)、数字(0-9)和下划线(_)组成
    变量名不能以数字开头
    变量名区分大小写myvarMyVar 是两个不同的变量)。
    不能使用 Python 的关键字(****if 、****else 、****class 等)作为变量名


    2. 变量名应有意义

    推荐

    max_users = 100  # 表示最大用户数
    file_path = "/home/user/doc.txt"  # 表示文件路径
    

    不推荐

    a = 100  # ❌ 变量名太短,无意义
    x1 = "/home/user/doc.txt"  # ❌ 变量名无描述性
    

    变量的一些用法

    1 . type()查看变量的类型

    在 Python 中,变量的类型可以通过 type() 函数查看:

    num = 42
    print(type(num))  # <class 'int'>
    
    text = "Python"
    print(type(text))  # <class 'str'>
    

    2 . id() is 运算符

    在 Python 中,变量存储的是 对象的引用,可以使用 id() 查看对象的内存地址:

    a = 10
    b = 10
    print(id(a))  # 如:140732768196464
    print(id(b))  # 与 a 相同,说明 a 和 b 指向同一对象
    
  • 这是由于python的内存优化机制,变量值在 [-256,256]这个区间内,变量的内存地址才会相同,节省了资源

  • is运算符 :判断两个变量是否指向同一对象:

    x = [1, 2, 3]
    y = x
    print(x is y)  # True,y 也是 x 的引用
    

    3 . delPython 变量的删除

    可以使用 del 删除变量:

    x = 100
    del x
    print(x)  # ❌ 报错,x 已被删除
    

    动态类型与强类型(变量类型可变但类型检查严格)

    1. 什么是动态类型

    在 Python 中,变量的类型不是在声明时固定的,而是在运行时根据赋值内容动态确定
    变量本身没有固定的类型,存储的值决定了它的类型

    动态类型的特点

  • 不需要声明变量类型,直接赋值即可使用。
  • 变量的类型可以随时改变,后续赋值可以替换为不同的数据类型。
  • 代码示例

    x = 10       # x 是整数(int)
    print(type(x))  # <class 'int'>
    
    x = "Hello"  # x 变成字符串(str)
    print(type(x))  # <class 'str'>
    
    x = 3.14     # x 变成浮点数(float)
    print(type(x))  # <class 'float'>
    

    在其他 静态类型(Static Typing) 语言(如 Java、C++)中,变量的类型在声明时就已经固定,不能随意更改:

    int x = 10;  // x 只能存储整数
    x = "Hello";  // ❌ 编译错误,不能把字符串赋值给 int 类型变量
    

    Python 不需要声明类型,因此更加灵活。


    2. 什么是强类型

    虽然 Python 具有 动态类型,但它仍然是一种 强类型(Strong Typing) 语言。
    强类型意味着不同类型的数据不能进行隐式转换或不合理的操作,除非显式转换。

    强类型的特点

  • 不同类型不能随意混合运算(除非使用类型转换)。
  • 不会自动进行类型转换,需要显式转换。
  • 代码示例

    a = "100"
    b = 50
    
    print(a + b)  # ❌ TypeError: can only concatenate str (not "int") to str
    

    在 Python 中,字符串和整数不能直接相加,必须进行类型转换:

    print(int(a) + b)  # ✅ 结果:150
    

    但是,在某些 弱类型(Weak Typing) 语言(如 JavaScript)中,不同类型的数据可能会被自动转换:

    console.log("100" + 50); // "10050"  (自动转换为字符串)
    console.log("100" - 50); // 50  (自动转换为数字)
    

    Python 不允许这样做,因此是 强类型 语言。


    Python 的数据类型

    1. 基本数据类型intfloatboolstr
    数据类型 说明 示例
    数值类型 整数(int)、浮点数(float)、复数(complex) 10, 3.14, 1+2j
    布尔类型 只有TrueFalse True, False
    字符串类型 由字符组成的文本 "Hello", 'Python'
    None 类型 表示空值 None

    2. 复合数据类型listtupledictset
    数据类型 说明 示例
    列表(list) 可变的有序集合 [1, 2, 3]
    元组(tuple) 不可变的有序集合 (1, 2, 3)
    集合(set) 无序、不重复元素的集合 {1, 2, 3}
    字典(dict) 键值对(key-value) 结构 {"name": "Alice", "age": 25}

    标识符与关键字

    标识符命名规则(驼峰命名、下划线命名法)

    1. 驼峰命名法(Camel Case)

    驼峰命名法是每个单词首字母大写(除了首单词可能小写),形似骆驼的驼峰。分为:

  • 小驼峰(lowerCamelCase) :首个单词首字母小写,后续单词首字母大写。
  • 大驼峰(UpperCamelCase) :所有单词首字母大写。
  • 驼峰命名法的使用场景

  • 大驼峰(Pascal Case) :用于类名
  • 小驼峰(lowerCamelCase):一般不推荐在 Python 中使用。
  • class MyClass:  # ✅ 大驼峰(类名)
        def myMethod(self):  # ❌ Python 不推荐(应使用下划线命名)
            pass
    

    2. 下划线命名法(Snake Case)

    下划线命名法是所有字母小写,单词之间用下划线连接,可读性较强,符合 Python 规范。

    下划线命名法的使用场景

  • 变量名函数名模块名通常使用下划线命名法。
  • def my_function():  # 函数名
        my_variable = 10  # 变量名
    

    特殊下划线命名

  • 单前导下划线 _var:表示内部变量,不建议直接访问。
  • 双前导下划线 __var:类的私有变量(Python 进行名称重整)。
  • 双前后下划线 __init__ :Python 内置特殊方法(魔法方法)。
  • 单下划线 _ :临时变量或表示“无关紧要”的值。
  • class Example:
        def __init__(self):  # Python 内置魔法方法
            self._internal = 42  # 约定俗成:私有变量
            self.__private = "secret"  # 变为 _Example__private,外部无法直接访问
    

    Python 关键字(使用 import keyword 查看)

    Python 关键字(Keywords)是 Python 语言保留的单词,用于定义语法结构控制程序行为,不能作为变量、函数、类等的标识符使用。

    1. 获取 Python 关键字列表

    可以使用 keyword 模块获取当前 Python 版本的所有关键字:

    import keyword
    print(keyword.kwlist)
    

    输出示例(Python 3.11):

    ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
     'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
     'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda',
     'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with',
     'yield', 'match', 'case']
    

    目前(Python 3.10+)有 35 个关键字,不同版本可能略有不同。


    2. 关键字分类
    布尔值和空值
    关键字 作用
    True 布尔值(等价于1
    False 布尔值(等价于0
    None 表示“空”对象,类似于null

    逻辑运算
    关键字 作用
    and 逻辑(两个条件都为True才返回True
    or 逻辑(任一条件为True就返回True
    not 逻辑(取反)
    is 判断两个对象是否是同一个对象(引用相同)
    in 判断元素是否存在于可迭代对象

    条件控制
    关键字 作用
    if 条件判断
    elif 多个条件分支(else if
    else 其他情况

    循环控制
    关键字 作用
    for 迭代循环
    while 条件循环
    break 终止循环
    continue 跳过当前循环,执行下一次循环
    pass 占位符,不执行任何操作

    异常处理
    关键字 作用
    try 捕获异常
    except 处理异常
    finally 无论是否有异常都会执行
    raise 主动抛出异常

    函数与返回
    关键字 作用
    def 定义函数
    return 返回值
    lambda 匿名函数

    类与对象
    关键字 作用
    class 定义类
    self 表示类的实例本身(不是关键字,但常用于类中)
    __init__ 构造方法
    del 删除对象

    模块与导入
    关键字 作用
    import 导入模块
    from 从模块导入特定内容
    as 给模块或函数起别名

    作用域控制
    关键字 作用
    global 声明全局变量
    nonlocal 声明使用外部嵌套作用域变量

    特殊关键字
    关键字 作用
    yield 生成器(用于return但不会终止函数)
    async 定义异步函数
    await 等待异步任务完成
    match 模式匹配(Python 3.10+ 新增)
    case match语句中的匹配分支

    注释与缩进

    单行注释# 号)

    单行注释使用 # 符号,# 之后的内容不会被 Python 解释执行:

    # 这是一个单行注释
    print("Hello, Python!")  # 这里是注释,解释这行代码的作用
    

    应用场景

  • 解释某一行代码的作用:

    x = 10  # 定义一个变量 x,并赋值 10
    
  • 临时屏蔽代码(调试时常用):

    # print("这行代码不会执行")
    print("这行代码会执行")
    

  • 多行注释'''"""

    Python 没有专门的多行注释语法,但可以使用三重单引号 ''' 或三重双引号 """ 作为多行注释:

    '''
    这是一个多行注释
    可以用于函数说明
    或者屏蔽多行代码
    '''
    print("Hello, World!")
    
    """
    这也是一个多行注释
    适用于文档字符串
    """
    

    注意:

  • 在函数、类或模块的开头使用三重引号的注释,被称为文档字符串(Docstring) ,用于描述函数或类的作用。
  • 其他情况下,Python 并不把 '''""" 视为正式的多行注释,而是作为字符串对象,只是它没有被赋值给变量,因此不会影响程序运行。
  • 应用场景

  • 作为代码说明:

    '''这是一个多行注释,适用于较长的说明。'''
    print("Hello, Python!")
    
  • 用作文档字符串(Docstring),用于描述函数或类:

    def add(a, b):
        """
        这是一个函数的文档字符串(Docstring)
        作用:计算两个数的和并返回
        参数:
            a: 第一个数
            b: 第二个数
        返回:
            两数之和
        """
        return a + b
    print(add(3, 5))
    

    使用 help() 可以查看函数的文档字符串:

    help(add)
    

  • Python 的强制缩进规则(避免 IndentationError

    Python 使用缩进来表示代码块,而不是使用 {}(如 Java、C 语言)。

    缩进的基本规则

  • 代码块必须缩进,通常是 ifforwhiledefclass 等结构的代码块必须缩进。
  • 缩进必须统一,一般使用4 个空格,不能混用空格和 Tab。
  • 同一代码块的缩进必须一致,否则会报错 IndentationError
  • 示例:正确的缩进

    if True:
        print("Hello")  # 这里缩进了 4 个空格
        print("Python")  # 同一代码块,必须缩进相同的空格数
    

    错误示例:缩进不一致

    if True:
        print("Hello")  
            print("Python")  # 这里缩进了 8 个空格,会报错
    

    错误信息:

    IndentationError: unexpected indent
    

    输入与输出

    print() 输出(默认换行,end="" 控制结尾)

    语法格式

    print() 可以输出字符串变量表达式等:

    print("Hello, Python!")  # 输出字符串
    x = 10
    print(x)  # 输出变量
    print(5 + 3)  # 输出表达式结果
    

    输出:

    Hello, Python!
    10
    8
    

    输出多个内容

    使用 , 分隔多个值,Python 会用空格自动连接:

    name = "Alice"
    age = 25
    print("姓名:", name, "年龄:", age)
    

    输出:

    姓名: Alice 年龄: 25
    

    如果希望去掉默认空格,可以使用字符串拼接

    print("姓名:" + name + " 年龄:" + str(age))  # 需要将数字转为字符串
    

    使用 end 参数:控制换行

    默认情况下,print() 在输出后结尾会自动换行,但可以用 end 参数自定义修改这个结尾:

    print("Hello", end=" ")  # 不换行
    print("World!")  # 输出在同一行
    

    输出:

    Hello World!
    

    使用 sep 参数:自定义分隔符

    默认情况下,print() 用空格分隔多个值,但可以用 sep 指定其他分隔符:

    print("2025", "03", "20", sep="-")  # 用 "-" 连接
    

    输出:

    2025-03-20
    

    print() 格式化输出%format()、f-string)

    1. 使用 % 格式化

    % 格式化类似于 C 语言的 printf(),适用于 Python 2 和 3,但已不推荐使用。

    1.1 语法格式
    name = "Alice"
    age = 25
    print("姓名:%s,年龄:%d" % (name, age))
    
    姓名:Alice,年龄:25
    
  • %s:格式化字符串,%d:格式化整数,() 里传入变量,顺序要对应占位符

  • 1.2 多个值格式化

    如果有多个值,必须用元组 () 传入:

    name = "Bob"
    age = 30
    height = 1.75
    print("姓名:%s,年龄:%d,身高:%.2f" % (name, age, height))
    

    输出:

    姓名:Bob,年龄:30,身高:1.75
    

    注意:

  • %s 会自动转换 变量类型,比如整数也能用 %s
  • %d 只能用于整数,浮点数不能直接用
  • %.2f 控制小数点位数

  • 1 .3 指定最小宽度与对齐

    可以在 % 后加 数字 设定最小宽度,右对齐:

    print("姓名:%10s" % "Alice")   # 最小宽度10,右对齐
    print("年龄:%5d" % 25)       # 最小宽度5,右对齐
    print("姓名:%-10s!" % "Alice")  # 左对齐
    print("年龄:%-5d!" % 25)       # 左对齐
    

    输出:

    姓名:     Alice
    年龄:   25
    姓名:Alice     !
    年龄:25   !
    

    1 .4 设定填充字符

    默认用空格填充,可以用 0 填充:

    print("编号:%05d" % 42)  # 用 0 填充,宽度 5
    

    输出:

    编号:00042
    

    1.5 格式化进制
    num = 255
    print("十进制:%d" % num)
    print("八进制:%o" % num)
    print("十六进制(小写):%x" % num)
    print("十六进制(大写):%X" % num)
    

    输出:

    十进制:255
    八进制:377
    十六进制(小写):ff
    十六进制(大写):FF
    

    1.6 科学计数法
    num = 12345678
    print("科学计数法:%e" % num)
    print("大写 E:%E" % num)
    

    输出:

    科学计数法:1.234568e+07
    大写 E:1.234568E+07
    

    1.7 百分比格式化

    如果要显示百分比,可以用 %%

    progress = 0.85
    print("进度:%.2f%%" % (progress * 100))
    

    输出:

    进度:85.00%
    

    1.8 使用字典格式化

    除了元组 (),还可以用字典 {} 结合 %(key)s 方式:

    data = {"name": "Charlie", "age": 22}
    print("姓名:%(name)s,年龄:%(age)d" % data)
    

    输出:

    姓名:Charlie,年龄:22
    

    2. .format() 方法(Python 2.7+,推荐)

    Python 2.7 和 3 引入的 .format() 方法,提供了更强大的格式化能力。

    2.1 语法格式
    name = "Bob"
    age = 30
    height = 1.80
    
    print("姓名:{},年龄:{},身高:{:.2f} 米".format(name, age, height))
    

    输出:

    姓名:Bob,年龄:30,身高:1.80 米
    
  • {} 代表占位符,.format() 负责填充数据。

  • 2.3 位置参数

    可以使用索引指定变量顺序:

    print("{1} 在 {0} 之后".format("Python 2", "Python 3"))
    

    输出:

    Python 3 在 Python 2 之后
    
  • {0} 代表 format() 中的第一个参数,{1} 代表第二个参数。

  • 2.4 关键字参数

    print("姓名:{n},年龄:{a}".format(n="Charlie", a=22))
    

    输出:

    姓名:Charlie,年龄:22
    
  • {变量名} 形式可以让格式化字符串更清晰,会按照对应的变量名进行填充

  • 2.4 对齐与填充

    符号 说明
    < 左对齐
    > 右对齐
    ^ 居中对齐

    示例

    print("{:<10}".format("左对齐"))
    print("{:>10}".format("右对齐"))
    print("{:^10}".format("居中对齐"))
    

    输出:

    左对齐            右对齐  居中对齐  
    

    2.5 自定义填充字符

    在对齐符号前加上填充字符

    print("{:*<10}".format("左对齐"))   # 用 * 填充
    print("{:_>10}".format("右对齐"))   # 用 _ 填充
    print("{:-^10}".format("居中对齐"))  # 用 - 填充
    

    输出:

    左对齐******
    ______右对齐
    --居中对齐--
    

    2.6 数值格式化
    格式符 说明 示例
    {:.2f} 保留 2 位小数 {:.2f}.format(3.14159) → 3.14
    {:08d} 整数补零,8 位宽度 {:08d}.format(42) → 00000042
    {:+d} 强制显示符号 {:+d}.format(42) → +42
    {:,.2f} 逗号分隔千位 {:,.2f}.format(1234567.89) → 1,234,567.89
    {:.2%} 转换为百分比 {:.2%}.format(0.1234) → 12.34%

    示例

    print("保留 2 位小数:{:.2f}".format(3.14159))
    print("整数补零:{:05d}".format(42))  # 5 位宽度,左侧补 0
    print("强制显示符号:{:+d}".format(42))  # 显示 `+`
    print("千位分隔符:{:,}".format(1234567))  # 逗号分隔
    print("百分比:{:.2%}".format(0.1234))  # 乘 100,加上 %
    

    输出:

    保留 2 位小数:3.14
    整数补零:00042
    强制显示符号:+42
    千位分隔符:1,234,567
    百分比:12.34%
    

    2.7 进制转换
    格式符 说明
    {:b} 二进制
    {:o} 八进制
    {:x} 十六进制(小写)
    {:X} 十六进制(大写)

    示例

    num = 255
    print("二进制:{:b}".format(num))
    print("八进制:{:o}".format(num))
    print("十六进制(小写):{:x}".format(num))
    print("十六进制(大写):{:X}".format(num))
    

    输出:

    二进制:11111111
    八进制:377
    十六进制(小写):ff
    十六进制(大写):FF
    

    2.8 时间格式化

    示例

    from datetime import datetime
    now = datetime.now()
    print("当前时间:{:%Y-%m-%d %H:%M:%S}".format(now))
    

    输出:

    当前时间:2025-03-20 14:30:15
    
  • {:%Y-%m-%d %H:%M:%S} 是标准时间格式。

  • 3. f-string (Python 3.6+,最推荐)

    f-string(格式化字符串字面量)是 Python 3.6 引入的一种简洁高效的字符串格式化方式。相比 str.format()%f-string 速度更快、语法更直观,被广泛推荐使用。

    3.1 语法格式
    name = "Alice"
    age = 25
    print(f"姓名:{name},年龄:{age}")
    

    输出:

    姓名:Alice,年龄:25
    
  • {} 中可以写变量,也可以写表达式

  • 3.2 表达式与计算

    f-string 可以在 {} 内部直接计算:

    print(f"10 + 5 = {10 + 5}")
    print(f"圆的面积:{3.14 * 5 ** 2}")
    

    输出:

    10 + 5 = 15
    圆的面积:78.5
    

    3.3 调用函数
    def square(n):
        return n ** 2
    
    print(f"5 的平方是 {square(5)}")
    

    输出:

    5 的平方是 25
    

    3 .4 访问列表、字典
    user = {"name": "Bob", "age": 30}
    print(f"姓名:{user['name']},年龄:{user['age']}")
    

    输出:

    姓名:Bob,年龄:30
    

    3.5 数值格式化
    语法 说明 示例
    {:.2f} 保留 2 位小数 f"{3.14159:.2f}"3.14
    {:08d} 整数补零,8 位宽度 f"{42:08d}"00000042
    {:+d} 强制显示符号 f"{42:+d}"+42
    {:,} 逗号分隔千位 f"{1234567:,}"1,234,567
    {:.2%} 转换为百分比 f"{0.1234:.2%}"12.34%
    pi = 3.14159
    print(f"保留 2 位小数:{pi:.2f}")
    print(f"整数补零:{42:05d}")
    print(f"强制显示符号:{42:+d}")
    print(f"千位分隔符:{1234567:,}")
    print(f"百分比表示:{0.1234:.2%}")
    

    输出:

    保留 2 位小数:3.14
    整数补零:00042
    强制显示符号:+42
    千位分隔符:1,234,567
    百分比表示:12.34%
    

    3.6 对齐与填充
    符号 说明
    < 左对齐
    > 右对齐
    ^ 居中对齐
    print(f"{'Python':<10}")  # 左对齐,占 10 个字符
    print(f"{'Python':>10}")  # 右对齐,占 10 个字符
    print(f"{'Python':^10}")  # 居中对齐,占 10 个字符
    

    输出:

    Python  
        Python
      Python  
    

    3.7 自定义填充字符
    print(f"{'Python':*<10}")  # 左对齐,填充 *
    print(f"{'Python':_>10}")  # 右对齐,填充 _
    print(f"{'Python':-^10}")  # 居中对齐,填充 -
    

    输出:

    Python****
    ____Python
    --Python--
    

    3.8 进制转换
    语法 说明
    {:.b} 二进制
    {:.o} 八进制
    {:.x} 十六进制(小写)
    {:.X} 十六进制(大写)
    num = 255
    print(f"二进制:{num:b}")
    print(f"八进制:{num:o}")
    print(f"十六进制(小写):{num:x}")
    print(f"十六进制(大写):{num:X}")
    

    输出:

    二进制:11111111
    八进制:377
    十六进制(小写):ff
    十六进制(大写):FF
    

    3.9 时间格式化
    from datetime import datetime
    now = datetime.now()
    print(f"当前时间:{now:%Y-%m-%d %H:%M:%S}")
    

    输出:

    当前时间:2025-03-20 14:30:15
    

    3.10 f-string 结合 = 调试

    Python 3.8+ 支持 = 直接显示变量名和值:

    x = 10
    y = 20
    print(f"{x = }, {y = }, {x + y = }")
    

    输出:

    x = 10, y = 20, x + y = 30
    
  • 这在调试代码时非常有用

  • input() 输入(字符串类型转换 int(input())

    语法格式
    变量 = input("提示信息")
    

    示例:

    name = input("请输入你的姓名:")
    print("你好," + name + "!")
    

    示例运行:

    请输入你的姓名:Alice
    你好,Alice!
    
  • input() 默认返回字符串,即使输入的是数字。

  • 输入整数
    age = int(input("请输入你的年龄:"))
    print("你的年龄是:", age)
    

    示例运行:

    请输入你的年龄:25
    你的年龄是: 25
    
  • 这里输入的值如果是数值类型那么会自动转化float类型,但是如果输入字符串类型就会报错(ValueError

  • 输入浮点数
    price = float(input("请输入商品价格:"))
    print("商品价格:", price)
    

    示例运行:

    请输入商品价格:19.99
    商品价格: 19.99
    
  • 这里输入的值如果是数值类型那么会自动转化float类型,但是如果输入字符串类型就会报错(ValueError

  • 作者:锭子比脸大

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python基础语法入门】

    发表回复