Skip to content

    Python 3 基础教程

    本教程基于 Python 3.x 版本,涵盖基础语法、数据结构及控制流程。

    1. 注释 (Comments)

    Python 中注释用于解释代码,增强可读性,不会被执行。

    单行注释

    # 开头。

    Python
    # 这是一个单行注释
    print("Hello, World!") # 代码后也可以接注释

    多行注释

    使用三个单引号 ''' 或三个双引号 """ 包裹。

    Python
    '''
    这是多行注释,
    使用单引号。
    '''
    
    """
    这是多行注释,
    使用双引号。
    """
    print("多行注释示例")

    2. 运算符 (Operators)

    算术运算符

    运算符描述实例
    +1 + 1 输出 2
    -2 - 1 输出 1
    *2 * 3 输出 6
    /除 (得到浮点数)10 / 2 输出 5.0
    %取模 (余数)10 % 3 输出 1
    **2 ** 3 输出 8
    //取整除 (向下取整)9 // 2 输出 4

    比较运算符

    返回布尔值 TrueFalse== (等于), != (不等于), > (大于), < (小于), >= (大于等于), <= (小于等于)。

    赋值运算符

    =, +=, -=, *=, /=, %=, **=, //=.

    • 例如 c += a 等效于 c = c + a

    逻辑运算符

    运算符描述实例
    andx and y
    orx or y
    notnot x

    成员运算符

    • in: 如果在指定的序列中找到值返回 True。
    • not in: 如果在指定的序列中没有找到值返回 True。

    3. 数字 (Number)

    Python 3 支持三种数值类型:

    • int (整型)
    • float (浮点型)
    • complex (复数)

    数字类型转换 & 常用数学函数

    Python
    import math
    import random
    
    # 1. 类型转换
    a = 1.5
    print(int(a))     # 输出: 1 (丢弃小数部分)
    print(float(1))   # 输出: 1.0
    
    # 2. 数学运算函数 (部分需引入 math 模块)
    print(abs(-10))         # abs(): 绝对值,输出 10
    print(math.ceil(4.1))   # ceil(): 向上取整,输出 5
    print(math.floor(4.9))  # floor(): 向下取整,输出 4
    print(max(1, 5, 3))     # max(): 最大值,输出 5
    print(min(1, 5, 3))     # min(): 最小值,输出 1
    print(pow(2, 3))        # pow(): x的y次方,输出 8
    print(round(4.567, 2))  # round(): 四舍五入,保留2位小数,输出 4.57
    print(math.sqrt(16))    # sqrt(): 平方根,输出 4.0
    
    # 3. 随机数函数 (需引入 random 模块)
    print(random.choice([1, 2, 3, 4]))  # choice(): 从序列中随机选取一个
    print(random.random())              # random(): 生成 [0, 1) 范围内的实数
    print(random.randint(1, 10))        # randint(): 生成指定范围整数

    4. 字符串 (String)

    字符串是 Python 中最常用的数据类型,使用单引号 ' 或双引号 " 创建。

    访问字符串

    Python
    s = "Runoob"
    print(s[0])      # 索引访问,输出 'R'
    print(s[1:5])    # 切片访问,输出 'unoo'

    字符串格式化

    Python
    name = "Alice"
    age = 18
    # f-string (Python 3.6+)
    print(f"我叫 {name}, 今年 {age} 岁。")
    # format 方法
    print("我叫 {}, 今年 {} 岁。".format(name, age))

    常用内置方法 (Methods)

    Python
    s = " hello world "
    
    # 大小写转换
    print(s.capitalize())   # 首字母大写: " Hello world "
    print(s.upper())        # 全大写: " HELLO WORLD "
    print(s.lower())        # 全小写: " hello world "
    
    # 搜索与替换
    print(s.find("world"))  # 查找子串索引,未找到返回 -1
    print(s.replace("world", "Python")) # 替换: " hello Python "
    print(s.count("l"))     # 统计出现次数
    
    # 去除空白
    print(s.strip())        # 去除首尾空格: "hello world"
    
    # 分割与连接
    lst = s.split()         # 默认按空格分割: ['hello', 'world']
    print("-".join(lst))    # 连接: "hello-world"
    
    # 判断
    print("123".isdigit())  # 是否全为数字: True
    print("abc".isalpha())  # 是否全为字母: True

    5. 列表 (List)

    列表是写在方括号 [] 之间、用逗号分隔开的元素列表。列表索引从 0 开始。

    基础操作

    Python
    list1 = ['Google', 'Runoob', 1997, 2000]
    list1[2] = 2001          # 更新列表
    del list1[2]             # 删除元素

    列表内置函数与方法

    Python
    nums = [3, 1, 4, 1, 5, 9]
    
    # 通用函数
    print(len(nums))    # 长度: 6
    print(max(nums))    # 最大值: 9
    print(list((1, 2))) # 强制转换为列表
    
    # 列表对象方法
    nums.append(2)      # 末尾添加元素: [3, 1, 4, 1, 5, 9, 2]
    nums.insert(1, 10)  # 指定位置插入: [3, 10, 1, 4, 1, 5, 9, 2]
    nums.pop()          # 移除末尾元素并返回
    nums.remove(4)      # 移除第一个匹配值
    print(nums.count(1))# 统计元素出现次数
    
    nums.sort()         # 排序 (修改原列表)
    print(nums)         # 输出: [1, 1, 3, 5, 9, 10]
    
    nums[::-1]
    nums.reverse()      # 反转
    nums.clear()        # 清空列表

    6. 元组 (Tuple)

    元组与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里。

    基础操作

    Python
    tup1 = ('Google', 'Runoob', 1997, 2000)
    tup2 = (1, 2, 3, 4, 5)
    
    # 访问
    print(tup1[0])
    print(tup2[1:3])
    
    # 注意:包含一个元素的元组需要加逗号
    tup3 = (50,)

    元组内置函数

    由于元组不可变,它没有 appendsort 等修改方法。

    Python
    tup = (3, 1, 4, 1, 5, 9)
    print(len(tup))     # 计算元素个数
    print(max(tup))     # 返回最大值
    print(min(tup))     # 返回最小值
    print(tuple([1,2])) # 将列表转换为元组

    7. 字典 (Dictionary)

    字典是可变容器模型,可存储任意类型对象。字典的每个键值 key:value 对用冒号分割,整个字典包括在花括号 {} 中。键必须是唯一的,且不可变。

    基础操作

    Python
    d = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    print(d['Name'])        # 访问
    d['Age'] = 8            # 修改
    d['School'] = "菜鸟"    # 添加
    del d['Name']           # 删除条目

    字典内置函数与方法

    Python
    d = {'Name': 'Runoob', 'Age': 7}
    
    # 内置函数
    print(len(d))       # 计算键值对数量
    print(str(d))       # 输出字典可打印的字符串表示
    
    # 对象方法
    print(d.keys())     # 返回所有键: dict_keys(['Name', 'Age'])
    print(d.values())   # 返回所有值
    print(d.items())    # 返回所有键值对元组
    
    print(d.get('Age'))         # 安全地获取值,不存在不报错
    print(d.get('Sex', 'NA'))   # 获取值,不存在返回默认值 'NA'
    
    d.pop('Age')        # 删除并返回指定键的值
    d.update({'Age': 10, 'Sex': 'Male'}) # 更新/合并字典
    d.clear()           # 清空字典

    8. 集合 (Set)

    集合是一个无序的不重复元素序列。可以使用大括号 {} 或者 set() 函数创建集合。 注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典。

    基础操作

    Python
    basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
    print(basket)  # 自动去重,输出可能乱序
    
    # 集合运算
    a = set('abracadabra')
    b = set('alacazam')
    print(a - b)   # 差集
    print(a | b)   # 并集
    print(a & b)   # 交集
    print(a ^ b)   # 对称差集(不同时存在的元素)

    集合内置方法

    Python
    s = {1, 2, 3}
    
    s.add(4)            # 添加元素
    s.update([5, 6])    # 添加多个元素
    s.remove(1)         # 移除元素,不存在会报错
    s.discard(10)       # 移除元素,不存在不会报错
    s.pop()             # 随机移除一个元素
    s.clear()           # 清空

    9. 条件控制 (Conditionals)

    Python 通过 if 语句实现条件控制。

    语法结构

    Python
    # if - elif - else
    age = 20
    if age < 0:
        print("输入错误")
    elif age < 18:
        print("未成年")
    else:
        print("已成年")
    
    # 嵌套 if
    num = 8
    if num % 2 == 0:
        if num % 3 == 0:
            print("能被 2 和 3 整除")
        else:
            print("能被 2 整除,但不能被 3 整除")

    10. 循环语句 (Loops)

    Python 提供了 whilefor 循环。

    While 循环

    Python
    n = 0
    sum = 0
    while n <= 10:
        sum += n
        n += 1
    print(f"1到10之和为: {sum}")

    For 循环

    常用于遍历序列(列表、元组、字符串)或使用 range()

    Python
    sites = ["Baidu", "Google","Runoob","Taobao"]
    for site in sites:
        print(site)
    
    # 使用 range()
    for i in range(5):       # 0 到 4
        print(i, end=',') 
    
    for i in range(0, 10, 3): # 步长为 3: 0, 3, 6, 9
        print(i)

    循环控制语句

    • break: 跳出整个循环。
    • continue: 跳过当前循环块中的剩余语句,继续下一轮循环。
    • pass: 空语句,为了保持程序结构的完整性。
    Python
    for letter in 'Runoob': 
       if letter == 'o':
          continue # 跳过 'o'
       if letter == 'b':
          break    # 遇到 'b' 结束循环
       print('当前字母 :', letter)

    11. Python 3 函数 (Function) 教程

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

    1. 定义一个函数

    你可以定义一个由自己想要功能的函数,以下是简单的规则:

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
    • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号 : 起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的 return 相当于返回 None。

    语法

    Python
    def 函数名(参数列表):
        "函数_文档字符串"
        函数体
        return [表达式]

    实例

    Python
    def hello():
        print("Hello, World!")
    
    hello() # 调用函数

    2. 参数传递 (重点)

    在 Python 中,类型属于对象,变量是没有类型的:

    Python
    a = [1,2,3]
    a = "Runoob"

    以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型的,它仅仅是一个对象的引用(一个指针),可以指向 List 也可以指向 String。

    可变(Mutable)与不可变(Immutable)对象

    在 Python 中,strings, tuples, 和 numbers 是不可变的对象,而 list, dict 等则是可变的对象。

    1. 不可变类型传递:类似 C++ 的值传递,如 整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a) 内部修改 a 的值,则是新生成一个 a 的对象。
    2. 可变类型传递:类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响。

    实例:传不可变对象

    Python
    def change_int(a):
        a = 10
    
    b = 2
    change_int(b)
    print(b) # 结果是 2,没有变

    实例:传可变对象

    Python
    def change_list(mylist):
       mylist.append([1, 2, 3, 4])
       print("函数内取值: ", mylist)
    
    mylist = [10, 20, 30]
    change_list(mylist)
    print("函数外取值: ", mylist)
    # 函数外取值也会包含 [1, 2, 3, 4],因为列表被修改了

    3. 参数类型

    调用函数时可使用的正式参数类型:

    必需参数

    必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

    Python
    def printme(str):
        print(str)
        return
    
    # printme() # 报错:缺少参数
    printme("Runoob") # 正确

    关键字参数

    使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

    Python
    def printinfo(name, age):
       print(f"名字: {name}, 年龄: {age}")
       return
    printinfo(age=18, name="Runoob") # 顺序不同也没关系

    默认参数

    调用函数时,如果没有传递参数,则会使用默认参数。

    Python
    def printinfo(name, age=35):
       print(f"名字: {name}, 年龄: {age}")
    
    printinfo(name="miki") # age 默认为 35
    printinfo(name="miki", age=18)

    4. return 语句

    return 语句退出函数。

    Python
    def sum(arg1, arg2):
       total = arg1 + arg2
       print("函数内 : ", total)
       return total
    
    total = sum(10, 20)

    5. 变量作用域

    Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

    • 全局变量 (Global): 定义在函数外部的变量。
    • 局部变量 (Local): 定义在函数内部的变量。
    Python
    total = 0 # 这是一个全局变量
    
    def sum(arg1, arg2):
       total = arg1 + arg2 # total在这里是局部变量
       print("函数内是局部变量 : ", total)
       return total
    
    sum(10, 20)
    print("函数外是全局变量 : ", total)

    6. global 关键字

    如果要修改全局变量,需要使用 global 关键字。

    Python
    num = 1
    def fun1():
        global num  # 需要使用 global 关键字声明
        print(num) 
        num = 123
        print(num)
    
    fun1()
    print(num) # 全局变量也被修改为 123