Python基础学习的资料

embedded/2024/12/25 13:13:06/

一、Python简介

Python是一种高级、解释型、通用的编程语言。它由Guido van Rossum于1989年开始开发,第一个公开发行版发行于1991年。

  1. 特点

    • 简洁易读
      • Python代码简洁明了,采用缩进的方式来表示代码块,而不是像其他语言使用大括号。例如,下面是一个简单的Python函数定义:
        def greet():print("Hello, World!")
        
    • 跨平台性
      • 可以在多种操作系统上运行,如Windows、Linux、MacOS等。这使得开发人员可以在自己熟悉的操作系统上编写代码,然后轻松地将代码部署到其他平台上。
    • 丰富的库和框架
      • Python拥有大量的标准库,涵盖了从文件操作、网络通信到数据处理等各个方面。例如,os库用于操作系统相关的操作,像文件和目录管理:
        import os
        # 获取当前目录
        current_dir = os.getcwd()
        print(current_dir)
        
      • 除了标准库,还有众多的第三方库,如用于数据分析的pandas、用于科学计算的numpy、用于机器学习scikit - learn等。
  2. 应用领域

    • 数据科学与数据分析
      • Python在数据处理和分析方面应用广泛。pandas库提供了高效的数据结构和数据处理工具,matplotlibseaborn用于数据可视化。例如,使用pandas读取一个CSV文件并进行简单的数据探索:
        import pandas as pddata = pd.read_csv('data.csv')
        print(data.head())
        
    • Web开发
      • 框架如DjangoFlask使Python成为Web开发的有力工具。Django是一个功能齐全的Web框架,自带数据库管理、用户认证等功能。Flask则是一个轻量级的Web框架,适合快速开发小型Web应用。
        # Flask示例
        from flask import Flaskapp = Flask(__name__)@app.route('/')
        def hello():return "Hello, Flask!"if __name__ == '__main__':app.run()
        
    • 人工智能与机器学习
      • 是机器学习和深度学习的主要编程语言之一。scikit - learn提供了各种传统的机器学习算法,如分类、回归等算法的实现。对于深度学习TensorFlowPyTorch等框架都有Python接口。例如,使用scikit - learn进行简单的线性回归:
        from sklearn.linear_model import LinearRegression
        import numpy as np# 生成一些示例数据
        X = np.array([[1], [2], [3], [4]])
        y = np.array([2, 4, 6, 8])model = LinearRegression()
        model.fit(X, y)print(model.predict([[5]]))
        

二、Python基础语法

  1. 变量和数据类型

    • 变量定义
      • 在Python中,不需要显式声明变量的类型。例如,可以直接定义一个变量并赋值:
        num = 10
        name = "John"
        is_true = True
        
    • 数据类型
      • 整数(int):用于表示整数,如1, 100, - 5等。
      • 浮点数(float):表示带有小数点的数字,如3.14, - 0.5等。
      • 字符串(str):由字符组成的序列,可以使用单引号或双引号来定义,如'Hello'或者"World"。
      • 布尔值(bool):只有TrueFalse两个值,用于表示逻辑判断的结果。
      • 列表(list):是一种有序的可变序列,可以包含不同类型的元素。例如:
        my_list = [1, 2, 'three', True]
        
      • 元组(tuple):类似于列表,但元组是不可变的。定义方式如下:
        my_tuple = (1, 2, 'three')
        
      • 字典(dict):是一种无序的键 - 值对数据结构。例如:
        my_dict = {'name': 'John', 'age': 30}
        
      • 集合(set):是一个无序且不包含重复元素的数据结构。可以这样定义:
        my_set = {1, 2, 3}
        
  2. 运算符

    • 算术运算符
      • 包括+(加法)、-(减法)、*(乘法)、/(除法)、//(整除)、%(取余)和**(幂运算)。例如:
        num1 = 10
        num2 = 3
        print(num1 + num2)  # 13
        print(num1 - num2)  # 7
        print(num1 * num2)  # 30
        print(num1 / num2)  # 3.3333333333333335
        print(num1 // num2)  # 3
        print(num1 % num2)  # 1
        print(num1 ** num2)  # 1000
        
    • 比较运算符
      • ==(等于)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)和>=(大于等于)。比较运算的结果是布尔值。例如:
        num1 = 5
        num2 = 3
        print(num1 == num2)  # False
        print(num1!= num2)  # True
        print(num1 < num2)  # False
        print(num1 > num2)  # True
        print(num1 <= num2)  # False
        print(num1 >= num2)  # True
        
    • 逻辑运算符
      • 包括andornot。例如:
        is_true1 = True
        is_true2 = False
        print(is_true1 and is_true2)  # False
        print(is_true1 or is_true2)  # True
        print(not is_true1)  # False
        
  3. 控制结构

    • 条件语句(if - else)
      • 根据条件执行不同的代码块。例如:
        num = 10
        if num > 5:print("The number is greater than 5")
        else:print("The number is less than or equal to 5")
        
      • 还可以使用elif(else if)来实现多个条件的判断:
        num = 7
        if num > 10:print("The number is greater than 10")
        elif num > 5:print("The number is greater than 5 but less than or equal to 10")
        else:print("The number is less than or equal to 5")
        
    • 循环语句(for和while)
      • for循环:通常用于遍历可迭代对象(如列表、元组、字符串等)。例如,遍历一个列表:
        my_list = [1, 2, 3, 4, 5]
        for num in my_list:print(num)
        
      • 也可以使用range()函数来指定循环次数:
        for i in range(5):print(i)
        
      • while循环:在条件为真时重复执行一段代码。例如:
        num = 0
        while num < 5:print(num)num = num + 1
        

三、函数和模块

  1. 函数定义与调用
    • 函数定义
      • 使用def关键字来定义函数。例如,定义一个计算两个数之和的函数:
        def add_numbers(a, b):return a + b
        
    • 函数调用
      • 可以在代码的其他地方调用定义好的函数。例如:
        result = add_numbers(3, 5)
        print(result)
        
  2. 函数参数
    • 位置参数
      • 按照参数定义的顺序传递参数。例如在add_numbers函数中,ab就是位置参数。
    • 关键字参数
      • 可以通过指定参数名来传递参数,这样参数的顺序就不重要了。例如:
        def greet(name, age):print(f"Hello, {name}. You are {age} years old.")greet(age = 30, name = "John")
        
    • 默认参数
      • 在函数定义时可以为参数指定默认值。例如:
        def power(base, exponent = 2):return base ** exponentprint(power(3))  # 9
        print(power(3, 3))  # 27
        
  3. 模块
    • 导入模块
      • Python中的模块是包含Python定义和语句的文件。可以使用import语句来导入模块。例如,导入math模块:
        import math
        print(math.sqrt(9))
        
    • 自定义模块
      • 可以创建自己的模块。例如,创建一个名为my_module.py的文件,内容如下:
        def my_function():print("This is my function in my module.")
        
      • 然后在另一个Python文件中导入并使用这个模块:
        import my_modulemy_module.my_function()
        

四、数据结构操作

  1. 列表操作
    • 索引和切片
      • 可以通过索引访问列表中的元素,索引从0开始。例如:
        my_list = [10, 20, 30, 40, 50]
        print(my_list[0])  # 10
        print(my_list[2])  # 30
        
      • 切片用于获取列表的一部分,可以指定起始索引、结束索引和步长。例如:
        my_list = [10, 20, 30, 40, 50]
        print(my_list[1:3])  # [20, 30]
        print(my_list[::2])  # [10, 30, 50]
        
    • 列表方法
      • append():用于在列表末尾添加一个元素。例如:
        my_list = [1, 2, 3]
        my_list.append(4)
        print(my_list)  # [1, 2, 3, 4]
        
      • extend():用于将一个列表中的元素添加到另一个列表末尾。例如:
        list1 = [1, 2, 3]
        list2 = [4, 5, 6]
        list1.extend(list2)
        print(list1)  # [1, 2, 3, 4, 5, 6]
        
      • insert():在指定位置插入一个元素。例如:
        my_list = [1, 3, 4]
        my_list.insert(1, 2)
        print(my_list)  # [1, 2, 3, 4]
        
      • remove():删除列表中的指定元素。例如:
        my_list = [1, 2, 3, 2]
        my_list.remove(2)
        print(my_list)  # [1, 3, 2]
        
      • pop():删除并返回列表中的指定元素(如果不指定索引,则删除并返回最后一个元素)。例如:
        my_list = [1, 2, 3]
        last_element = my_list.pop()
        print(last_element)  # 3
        print(my_list)  # [1, 2]
        
  2. 字典操作
    • 键 - 值对访问
      • 可以通过键来访问字典中的值。例如:
        my_dict = {'name': 'John', 'age': 30}
        print(my_dict['name'])  # John
        
    • 字典方法
      • keys():返回字典中所有的键。例如:
        my_dict = {'name': 'John', 'age': 30}
        print(list(my_dict.keys()))  # ['name', 'age']
        
      • values():返回字典中所有的值。例如:
        my_dict = {'name': 'John', 'age': 30}
        print(list(my_dict.values()))  # ['John', 30]
        
      • items():返回字典中所有的键 - 值对。例如:
        my_dict = {'name': 'John', 'age': 30}
        print(list(my_dict.items()))  # [('name', 'John'), ('age', 30)]
        
      • update():用于更新字典中的键 - 值对。例如:
        my_dict = {'name': 'John', 'age': 30}
        new_dict = {'age': 31, 'city': 'New York'}
        my_dict.update(new_dict)
        print(my_dict)  # {'name': 'John', 'age': 31, 'city': 'New York'}
        

五、文件操作

  1. 打开和关闭文件
    • 使用open()函数打开文件,它接受两个参数:文件名和打开模式(如r表示只读,w表示写入,a表示追加等)。例如:
      file = open('test.txt', 'r')
      content = file.read()
      file.close()
      
  2. 文件读取和写入
    • 读取文件
      • 除了read()方法外,还可以使用readline()逐行读取文件内容,或者readlines()将文件内容按行读取到一个列表中。例如:
        file = open('test.txt', 'r')
        line = file.readline()
        print(line)
        lines = file.readlines()
        print(lines)
        file.close()
        
    • 写入文件
      • 使用write()方法写入文件内容。例如:
        file = open('test.txt', 'w')
        file.write("Hello, World!\n")
        file.close()
        
    • 追加文件内容
      • 如果要在文件末尾追加内容,可以使用a模式打开文件并使用write()方法。例如:
        file = open('test.txt', 'a')
        file.write("This is an additional line.")
        file.close()
        

六、面向对象编程(OOP)基础

  1. 类和对象
    • 类定义
      • 使用class关键字定义类。例如,定义一个简单的Person类:
        class Person:def __init__(self, name, age):self.name = nameself.age = agedef introduce(self):print(f"My name is {self.name} and I am {self.age} years old.")
        
    • 对象创建
      • 可以通过类创建对象。例如:
        person1 = Person("John", 30)
        person1.introduce()
        
  2. 继承
    • 定义子类
      • 可以定义一个类继承自另一个类。例如,定义一个Student类继承自Person类:
        class Student(Person):def __init__(self, name, age, grade):super().__init__(name, age)self.grade = gradedef introduce(self):super().introduce()print(f"I am in grade {self.grade}.")
        
    • 多态性
      • 不同的子类可以重写父类的方法,实现多态性。例如:
        student1 = Student("Alice", 15, 9)
        student1.introduce()
        

七、异常处理

  1. try - except语句

    • 在可能出现异常的代码块周围使用try - except语句。例如,在进行除法运算时可能会出现除以零的异常:
      try:num1 = 10num2 = 0result = num1 / num2
      except ZeroDivisionError:print("除数不能为零,请重新输入正确的除数。")
      
    • 还可以使用多个except块来处理不同类型的异常。例如,当读取文件时可能会出现文件不存在或者权限不足等异常:
      try:file = open('nonexistent_file.txt', 'r')content = file.read()file.close()
      except FileNotFoundError:print("文件不存在,请检查文件名是否正确。")
      except PermissionError:print("没有足够的权限打开文件,请检查权限设置。")
      
    • 可以使用finally块来执行无论是否发生异常都需要执行的代码,例如关闭文件或者释放资源:
      try:file = open('test.txt', 'r')content = file.read()
      except FileNotFoundError:print("文件不存在。")
      finally:if 'file' in locals():file.close()
      
  2. 自定义异常

    • 可以通过继承Exception类来创建自定义异常。例如,定义一个表示年龄无效的异常:
      class InvalidAgeException(Exception):def __init__(self, age):self.age = agesuper().__init__(f"年龄 {age} 无效,年龄必须为正数。")def check_age(age):if age < 0:raise InvalidAgeException(age)else:print(f"年龄 {age} 是有效的。")try:check_age(-5)
      except InvalidAgeException as e:print(e)
      

八、迭代器和生成器

  1. 迭代器

    • 迭代器是一个可以记住遍历的位置的对象。在Python中,可迭代对象(如列表、元组、字符串等)都可以使用迭代器来遍历。可以通过iter()函数获取一个可迭代对象的迭代器,然后使用next()函数来获取下一个元素。例如:
      my_list = [1, 2, 3]
      my_iter = iter(my_list)
      print(next(my_iter))  # 1
      print(next(my_iter))  # 2
      print(next(my_iter))  # 3
      
    • 自定义迭代器需要定义__iter__()__next__()方法。例如,定义一个简单的数字迭代器:
      class MyIterator:def __init__(self, limit):self.limit = limitself.current = 0def __iter__(self):return selfdef __next__(self):if self.current < self.limit:result = self.currentself.current += 1return resultelse:raise StopIteration
      
    • 使用自定义迭代器:
      my_iter = MyIterator(5)
      for num in my_iter:print(num)
      
  2. 生成器

    • 生成器是一种特殊的迭代器,使用yield关键字来创建。例如,定义一个生成斐波那契数列的生成器:
      def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + bmy_fib = fibonacci()
      for i in range(10):print(next(my_fib))
      
    • 生成器函数在执行时,遇到yield语句会暂停执行并返回一个值,下次调用时从上次暂停的地方继续执行。这使得生成器在处理大量数据时非常高效,因为它不需要一次性生成所有的数据。

九、装饰器

  1. 装饰器基础

    • 装饰器是一种用于修改函数或类的行为的函数。它接受一个函数或类作为参数,并返回一个修改后的函数或类。例如,定义一个简单的装饰器来计算函数的执行时间:
      import timedef timer_decorator(func):def wrapper():start_time = time.time()func()end_time = time.time()print(f"函数 {func.__name__} 执行时间为: {end_time - start_time} 秒")returnreturn wrapper@timer_decorator
      def my_function():time.sleep(2)my_function()
      
    • 在这个例子中,timer_decorator就是一个装饰器,它包裹了my_function函数,在函数执行前后计算时间差并打印出来。
  2. 带参数的装饰器

    • 可以定义带参数的装饰器。例如,定义一个可以指定延迟时间的装饰器:
      import timedef delay_decorator(delay):def actual_decorator(func):def wrapper():time.sleep(delay)func()returnreturn wrapperreturn actual_decorator@delay_decorator(3)
      def another_function():print("函数执行了。")another_function()
      
    • 这里delay_decorator是一个带参数的装饰器,它返回一个真正的装饰器actual_decorator,然后actual_decorator再修饰another_function函数。

十、高级特性

  1. 列表推导式

    • 列表推导式是一种简洁地创建列表的方式。例如,创建一个包含1到10的平方的列表:
      squares = [i ** 2 for i in range(1, 11)]
      print(squares)
      
    • 还可以使用条件判断在列表推导式中。例如,创建一个包含1到10中偶数的平方的列表:
      even_squares = [i ** 2 for i in range(1, 11) if i % 2 == 0]
      print(even_squares)
      
  2. 字典推导式和集合推导式

    • 字典推导式用于创建字典。例如,创建一个以数字为键,数字的平方为值的字典:
      squares_dict = {i: i ** 2 for i in range(1, 6)}
      print(squares_dict)
      
    • 集合推导式用于创建集合。例如,创建一个包含1到10中奇数的集合:
      odd_set = {i for i in range(1, 11) if i % 2!= 0}
      print(odd_set)
      
  3. 函数式编程特性

    • map函数
      • map函数用于对可迭代对象中的每个元素应用一个函数,并返回一个迭代器。例如,将一个列表中的每个元素乘以2:
        my_list = [1, 2, 3, 4]
        result = map(lambda x: x * 2, my_list)
        print(list(result))
        
    • filter函数
      • filter函数用于根据一个条件过滤可迭代对象中的元素,并返回一个迭代器。例如,过滤出一个列表中的偶数:
        my_list = [1, 2, 3, 4]
        result = filter(lambda x: x % 2 == 0, my_list)
        print(list(result))
        
    • reduce函数(需要从functools模块导入)
      • reduce函数用于对可迭代对象中的元素进行累积计算。例如,计算一个列表中所有元素的乘积:
        from functools import reduce
        my_list = [1, 2, 3, 4]
        result = reduce(lambda x, y: x * y, my_list)
        print(result)
        

 


http://www.ppmy.cn/embedded/148628.html

相关文章

一文掌握如何编写可重复执行的SQL

一文掌握如何编写可重复执行的SQL 文章已同步个人博客&#xff1a;一文掌握如何编写可重复执行的SQL 背景 先提出问题&#xff0c;这里的可重复执行是指什么&#xff1f;我们为什么要编写可重复执行的sql&#xff1f; 可重复执行是指一条sql重复多次执行都不会报错&#xf…

【网络云计算】2024第51周-每日【2024/12/20】小测-理论-周测

文章目录 1、软件RAID的常用级别和硬件RAID的区别&#xff0c;制作RAID生产环境有哪些注意事项2、交换机常用的技术有哪些3、NFS服务器如何结合LVM4、写两个if语句&#xff0c;判断文件和目录是否存在5、链路聚合和VRRP有哪些区别&#xff1f; 【网络云计算】2024第51周-每日【…

SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

DeepSeek-VL2部署指南

DeepSeek-VL2是一款力图学习和实现深度学习和视觉语言结合的工具包。本文将介绍如何在本地环境中安装和部署DeepSeek-VL2。 环境要求 在部署DeepSeek-VL2前&#xff0c;您需要确保以下环境充分满足要求&#xff1a; 确保硬件资源 处理器&#xff1a;最小8核字中处理器 内存…

C# 异步编程与多线程简析

引言 在现代软件开发中,异步编程和多线程是实现高性能、高响应性应用程序的关键技术。C# 提供了多种机制来支持异步编程和多线程,其中Thread、ThreadPool 和Task 是最为常用的三种。本文将对这三种机制进行简要分析,探讨它们的使用场景、优缺点以及如何在实际开发中选择合适…

微信小程序用户信息解密 AES/CBC/NoPadding 解密失败问题

解密文档如下 java springboot 微信小程序登录,获取获取手机号,获取unionId和解密用户信息 问题: 突然有一天解密失败,之前使用AES/CBC/NoPadding都可以,然后debug查看多出一些字符 原因: **AES/CBC/NoPadding**** 模式下解密后的数据可能包含额外的填充字符**&#xff08;例…

【pytorch】多层感知机

将许多全连接层堆叠在一起。每一层都输出到上面的层&#xff0c;直到生成最后的输出。我们可以把前L−1层看作表示&#xff0c;把最后一层看作线性预测器。这种架构通常称为多层感知机通常缩写为MLP。 1 激活函数 激活函数&#xff08;activation function&#xff09;通过计…

群晖利用acme.sh自动申请证书并且自动重载证书的问题解决

前言 21年的时候写了一个在群晖&#xff08;黑群晖&#xff09;下利用acme.sh自动申请Let‘s Encrypt的脚本工具 群晖使用acme自动申请Let‘s Encrypt证书脚本&#xff0c;自动申请虽然解决了&#xff0c;但是自动重载一直是一个问题&#xff0c;本人也懒&#xff0c;一想到去…