Web 后端python

Web 后端python

Web 后端python

python

Python是一种功能强大且易于上手的高级编程语言
特点

  1. . 易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单
  2. 易于阅读:Python 代码定义的更清晰
  3. 易于维护:Python的成功在于它的源代码是相当容易维护的
    应用领域:web开发、数据科学、人工智能和机器学习、 自动化运维
    和测试、游戏开发、系统运维

1. 基本语法

Python 最大的特点是无需声明变量类型,直接赋值即可(设置变量无需前缀)
单行注释:以“#”开始,到该行末尾结束

在这里插入图片描述


Python f-string:是在字符串前加f或F修饰符,Python会自动将其值转换为字符串插入

  • 允许在字符串中直接嵌入变量、表达式或函数调用的一种字符串格式化方法
  • 语法:字符串前添加f,使用大括号{}包裹内容
  • 另一种方式:+号拼接
    注意:必须使用 str()将数字转换为字符串后,才能进行字符串连接
    实际演示:
str_num = "123" int_num = int(str_num) # 字符串转换为整数 #str 字符串类型 int 整数类型 print(f"字符串 '{str_num}' 转换为整数: {int_num}") new_message = "我的分数是: " + str(int_num) #str(int_num) 数字类型转换为字符串类型 print(new_message) 输出: 字符串 '123' 转换为整数: 123 我的分数是: 123 

不同类型不能直接用+拼接在一串代码中,需转换为同一类型

在这里插入图片描述

2. 数据类型-list\tuple\dict

ist列表

ist列表用[ ]标识,可以修改

# 定义一个待办事项列表(列表中的项从左到右依次是0 1 2) todo_list = ["买牛奶", "取快递", "写代码"] # 添加新项 todo_list.append("运动30分钟") # 修改第二项 todo_list[1] = "取快递(顺丰)" print(todo_list) # 输出:['买牛奶', '取快递(顺丰)', '写代码'] # 删除第三项 del todo_list[2] print(todo_list) # 输出:['买牛奶', '取快递(顺丰)', '运动30分钟'] 输出: ['买牛奶', '取快递(顺丰)', '写代码', '运动30分钟'] ['买牛奶', '取快递(顺丰)', '运动30分钟'] 

tuple元组

tuple元组用( )标识,是不可变序列,只能读取,适合存储固定数据

# 定义个人核心信息元组 person_info = ("zs", "110101199001011234", "1990-01-01") print(person_info[0]) # 查看姓名 # 尝试修改元组元素(会报错,体现不可变性) person_info[1] = "110101199001015678" # TypeError: 'tuple' object does not support item assignment(这是报错显示) 输出:zs 

dict字典

dict字典用{ }标识,以一键一值两两相对的形式存在

# 定义通讯录字典 contact = {"zs": "13800138000"} # 新增联系人 contact["lisi"] = "13700137000" # 修改手机号 contact["wu"] = "13900139999" # 通过键取值 print(contact["zs"]) # 输出:13800138000 #查看字典 print(contact) 输出:{'zs': '13800138000', 'lisi': '13700137000', 'wu': '13900139999'} 

3. 流程控制-条件语句

核心规则:缩进!
Python 不使用大括号 {},而是依赖缩进(通常是 4 个空格)来定义
代码块
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进
空白数量
,这个必须严格执行

在这里插入图片描述


缩进数报错:

在这里插入图片描述

if语句

if语句:根据不同情况执行不同代码

在这里插入图片描述

while循环

while循环格式

# while 循环 count = 3 while count > 0: print(f"While倒计时: {count}") count -= 1 

while 条件 :重复执⾏的代码

在这里插入图片描述


注意:条件一直满足(死循环),会一直重复循环,电脑容易卡死

for循环

for 临时变量 in 容器 :重复执⾏的代码

# for 循环遍历范围 (左闭右开) for i in range(1, 6, 2): #数字2,第三个参数表示步长 print(f"For循环数字: {i}") 输出: For循环数字: 1 For循环数字: 3 For循环数字: 5 
在这里插入图片描述


循环遍历

# for 循环遍历范围 (左闭右开) for i in range(1, 6, 2): # 遍历 1, 2, 3, 4, 5 print(f"For循环数字: {i}") #遍历列表 fruits=["apple","banana","orange","peach","watermelon"] for fruit in fruits: # 遍历列表中的每个元素 print(fruit) # 遍历元组 tuple = ("zs", "110101199001011234", "1990-01-01") for tup in tuple: # 遍历元组中的每个元素 print(tup) #遍历字典 ;字典以一键一值两两相对的形式存在 iddict = {'name':'zs','age':'18'} #遍历字典的键 for key in iddict: #iddict 取的是键 print(key) #遍历字典的值 for value in iddict.values():#需要使用.values进行取值 print(value) 输出: For循环数字: 1 For循环数字: 3 For循环数字: 5 apple banana orange peach watermelon zs 110101199001011234 1990-01-01 name age zs 18 

4. 面向对象实战

Python函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

在这里插入图片描述

自定义函数格式:

def 函数名(参数列表): # 函数体,包含一系列缩进的语句 return 返回值 # 可选,用于返回结果给调用者 

参数

# 打印指定信息 # 参数:执行函数时候,传递的额外信息,多个参数以逗号隔开 def print_hello(info,message): print(info) print(message) # 调用函数 print_hello("helloworld","你好,世界!") 输出: 你好,世界! helloworld 

类/实例化/魔术方法

class Dog: species = "犬科" # 类属性 #self 表示当前对象;通俗理解,谁来调用,self就表示谁 def __init__(self, name, age): # 构造函数:自动调用 self.name = name # 实例属性 self.age = age def bark(self): # 实例方法:手动调用 print(f"{self.name}在汪汪叫")#打印当前对象的属性 # return 语句用于从函数中返回一个值。 # 当函数执行到 return 语句时,它会立即停止执行,并将 return 后面的表达式的值作为结果返回。 def __str__(self): # 实例方法 return f"{self.name}今年{self.age}岁了" # 创建对象 dog1 = Dog("小黑", 3) dog1.bark() # 输出:小黑在汪汪叫;因为dog1调用的该方法,所以self就表示dog1 dog2 = Dog("小白", 3) dog2.bark() # 输出:小白在汪汪叫;因为dog2调用的该方法,所以self就表示dog2 # 当你对一个对象执行print() 操作时,Python 会自动查找并调用该对象的 `__str__` 方法 print(dog1) # 输出:小黑今年3岁了 print(dog2) # 输出:小白今年3岁了 # 1. 自动执行__str__魔术方法 2. return执行完方法后会返回一个值 3. 打印返回值 
# 单独解释参数和返回值 # 目的:求两个数的和 # 传递额外信息 def sum(a,b): num=a+b #加法运算 return num #返回运算后的结果 n=sum(2,3) #用一个变量,接收函数执行后的返回值 print(n) #输出变量的值 

Python中的魔术方法,也被称为双下划线方法或特殊方法,这些方法的名称前后都带有两个下划线,例如__init__、__str__等

  • 主要作用是为Python中的对象提供内置的、特殊的行为
  • 构造函数: 固定命名为 init(可以将类中需要外部赋值的放入到其中)
  • self: 必须是所有实例方法和构造函数的第一个参数,代表当前对象

PHP与Python核心区别

在这里插入图片描述

Python模块

Python模块:是包含Python代码的文件,其扩展名通常为.py

  • 模块是Python程序的基本组成部分,它们提供了封装代码的方式,使得代码更加组织化、易于重用和维护
  • 模块可以包含函数、类和变量,也可以包含可执行的代码
  • 常见模块类型:系统内置模块、自定义模块、第三方模块

1.系统内置模块

系统内置模块:是Python自带的标准库,它们提供了丰富的功能和工具,用于执行各种常见的任务。系统内置模块包括:os模块、sys模块、random模块、time模块
如:

#导入math模块 import math #求平方根 num=math.sqrt(4) num2=math.pow(2,3) print(num)#输出:2.0 print(num2)#输出:8.0 
在这里插入图片描述


指定使用模块中的某一个函数(只能使用你指定导入的函数)

2.自定义模块

自定义模块:开发者自己编写的模块,用于封装特定的功能或逻辑。自定义模块可以是任何有效的Python文件(以“.py”为后缀名),里面可以包含全局变量、函数、类等
第一步:自定义模块(注意:不与系统内置模块重名)

在这里插入图片描述


第二步:导入并使用自定义模块

在这里插入图片描述

3.第三方模块

第三方模块:是由其他开发者或组织编写的,并发布到Python包索引等公共仓库中的模块

  • pip 是 Python 中的标准库管理器。它允许你安装和管理不属于 Python标准库的其它软件包

在线安装:pip命令
- 注意:可以不更新pip

在这里插入图片描述


Python模块下载
pip install 库名
pip install 库名 -i 镜像源
-i 更换安装源 (默认是使用国外的源,下载速度慢)

在这里插入图片描述


requests库
requests 是Python常⽤的⽹络请求库,核⼼功能是模拟浏览器向⽹站发送请求、获取数据
第一步:pip install requests
下载的模块保存路径存在:Python\Python310\Lib\site-packages

在这里插入图片描述


第二步:导入第三方模块并使用

在这里插入图片描述


python模块
总结

在这里插入图片描述

oneforall

OneForAll 是一款基于 Python 开发的、功能全面的子域名信息收集与爆破工具
下载网址:oneforall

  • 可高效枚举目标域名的子域名、获取相关解析记录与资产信息

常用于网络安全渗透测试
安装:pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

在这里插入图片描述


在这里插入图片描述


使用:python oneforall.py --target 域名 run

在这里插入图片描述

Read more

Flutter 三方库 rbush 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、极速、基于 R-Tree 算法的工业级 2D 空间索引与大规模点位碰撞检测引擎

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 rbush 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、极速、基于 R-Tree 算法的工业级 2D 空间索引与大规模点位碰撞检测引擎 在鸿蒙(OpenHarmony)系统的地理信息系统(GIS)、高性能 2D 游戏引擎、或者是需要对成千上万个矩形/点位进行毫秒级“范围查询(Range Search)”的应用中,如何摆脱由于线性扫描(O(n))导致的由于由于性能瓶颈?rbush 为开发者提供了一套工业级的、基于高级 R-Tree 算法。管理过程。由于由空间索引方案。本文将深入实战其在鸿蒙业务逻辑层空间数据处理中的应用。 前言 什么是 RBush?它是一个旨在解决“如何快速在一个平面找到一群物体”的高性能数据结构。它采用了 R-Tree

By Ne0inhk
coding ability 展开第四幕(滑动指针——巩固篇)超详细!!!!

coding ability 展开第四幕(滑动指针——巩固篇)超详细!!!!

文章目录 * 前言 * 水果成篮 * 思路 * 找到字符串中所有字母异位词 * 思路 * 串联所有单词的子串 * 思路 * 最小覆盖子串 * 思路 * 总结 前言 本专栏上一篇博客,带着大家从认识滑动窗口到慢慢熟悉 相信大家对滑动窗口已经有了大概的认识 其实主要就是抓住——一段连续的区间 今天来学习一些滑动窗口进阶的题目 fellow me 水果成篮 思路 一开始看到这个题目,一段连续的区间,想到了滑动窗口 然后就想着怎么维护窗口,每次更新到新的水果种类就要,开始对left++,然后处理数据 其实是有点麻烦的,但是经过半个多小时的调试,最后还是ac了 思路:每次更新两个种类的水果,x,y,如果下一个水果的种类不相符合,就更新新的x,y 这个时候 right - 1 和 right 所对应的水果就是新的两种,然后就是处理从 left 到 right

By Ne0inhk
Flutter 三方库 collection 的鸿蒙化适配指南 - 实现具备高级集合操作与相等性深度判定算法的算法底座、支持端侧多维数据结构的高性能治理实战

Flutter 三方库 collection 的鸿蒙化适配指南 - 实现具备高级集合操作与相等性深度判定算法的算法底座、支持端侧多维数据结构的高性能治理实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 collection 的鸿蒙化适配指南 - 实现具备高级集合操作与相等性深度判定算法的算法底座、支持端侧多维数据结构的高性能治理实战 前言 在进行 Flutter for OpenHarmony 开发时,面对复杂的业务 JSON 转化、深层嵌套的集合对比或需要对列表执行高频的优先级排序(Priority Queue)时,原生 List 和 Map 的功能往往显得捉襟见肘。collection 是 Dart 官方维护的最权威、最核心的集合工具库。本文将探讨如何在鸿蒙端构建极致、稳健的数据处理架构。 一、原直观解析 / 概念介绍 1.1 基础原理 该库扩展了 Dart 标准库中的集合能力。它不仅提供了如 Equality(深度相等判定)、PriorityQueue(

By Ne0inhk