python基础
python学习
一、python语言:功能强大易上手
Python 是⼀种解释型、⾯向对象、动态数据类型的⾼级编程语⾔。
它被设计为可读性强、 简洁且易于学习,具有⾼效的⾼级数据结构,并且⽀持简单有效的⾯向对象编程
特点:易于学习,易于阅读,易于维护
应用领域:web开发、数据科学、人工智能、机器学习、自动化运维、游戏开发等
二、python语法
基本语法,遵守严格缩进格式,4个字符缩进
1、变量:用于存储数据的容器,其值可以在程序运⾏期间被改变。变量通常包括名称和值,名称⽤于标识变量,
值则是变量存储的数据。
核心特点:无需声明变量类型,直接赋值即可。
注释:以“#”开始,到结尾结束
name = "张三" #字符串类型
age = 28 #整数类型
pi = 3.1415926 #浮点数类型
is_student = True #布尔类型
print(name)
print(age)
print(pi)
print(is_student)
2、字符串:
f-string:是在字符串前加f或F修饰符,Python会自动将其值转换为字符串插入。
允许在字符串中直接嵌入变量、表达式或函数调用的一种字符串格式化方法。
语法格式:字符串前添加f,使用花括号将嵌入的变量、表达式和函数调用括起来,但是内容只能是字符串
英文“+”号拼接字符串,+号两边必须都是字符串类型。
str1 = "1234" #字符串类型
num = int(str1) #将字符串str1转化为整型数字
print(num)
print(type(num)) #type()函数可以查看变量的数据类型
print(f"将字符串str1转化为整型数字是{num}")
message="我的学号是"+str(num)
print(message)
3、数据类型:
**list列表 **(相当于数组):也是“[]”标识,可以修改,也是通过索引下角标来取值或者修改,从0开始索引
list_name = ["张三","李四","王五"]
print(list_name)
print(type(list_name)) #type()函数可以查看变量的数据类型
list_name.append("赵六") #append()方法可以在列表末尾添加一个元素
print(list_name)
list_name[1]="小李" #可以通过索引来修改列表中的元素
print(list_name)
list_name.remove("王五") #remove()方法可以删除列表中的指定元素
print(list_name)
tuple 元祖使用“()”标识,是不可变序列,只能读取,通过索引下角标来取值,从0开始索引
tup1=(1,2,3,4,5)
print(tup1)
print(type(tup1)) #type()函数可以查看变量的数据类型
print(tup1[0]) #可以通过索引来访问元组中的元素
print(tup1[1:3]) #可以通过切片来访问元组中的元素
tup2=(6,7,8,9,10)
print(tup2)
print(tup1+tup2) #可以使用"+"运算符来合并元组
tup1=list(tup1) #将元组转换为列表
tup1[0]=8 #可以修改列表中的元素
tup1=tuple(tup1) #将列表转换为元组
print(tup1)
dictionary 字典使用“{}”标识,键值对形式来存储数据,通过键来取值
dic1={"name":"张三","age":28,"pi":3.1415926}
print(dic1)
print(type(dic1)) #type()函数可以查看变量的数据类型
print(dic1["name"]) #可以通过键来访问字典中的值
print(dic1["age"])
print(dic1["pi"])
4、流程控制语句
核心规则是缩进
Python 不使用大括号 {},而是依赖缩进(通常是 4 个空格)来定义代码块
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行
命令语句的执⾏顺序是从上往下的,遇到命令运⾏错误时会终⽌。
语法:#if-elif-else 语句
if 条件 1 :
条件 1 为真执⾏的语句
elif 条件 2 :
条件 2 为真执⾏的语句
elif 条件 3 :
条件 3 为真执⾏的语句
elif 条件 4 :
条件 4 为真执⾏的语句
else:
以上条件为假执⾏的语句
score=75
if score>=90:
print("优秀")
elif score>=80:
print("良好")
elif score>=60:
print("一般")
else:
print("不及格")
5、循环语句
while循环:
while 条件 :
重复执行的代码块
count = 3
while count>=0:
print(count)
if count==0:
print("倒计时结束")
count-=1
for循环:
for 变量 in 容器:
重复执行的代码块
for循环遍历时,采取左闭右开,左边是闭区间,右边是开区间
for i in range(1,10): #左闭右开,输出直到9
print(i)
for i in range(2,11,2): #括号内的为起始值,终值不取,步长值
print(i)
6、流程控制和遍历
#遍历列表
fruits = ["apple","orange","banana","peach"]
for fruit in fruits: #遍历列表中的每一个元素
print(fruit)
#遍历元祖:
student=('zs',19,12345,13800010001) #遍历元祖中每一个值
for tup in student:
print(tup)
#遍历字典:
dic1={"name":"张三","age":28,"pi":3.1415926}
dic1["phone"]="13800000000" #遍历字典中的key
for key in dic1:
print(key)
for value in dic1.values(): #字典中的值需要使用value()方法获取
print(value)
print(dic1)
7、函数:组织好的,可重复使用的,用来实现单一、特定、或相关联功能的代码段
自定义函数格式:
参数:在调用函数时需要传入的信息,多个参数之间英文“,”分隔
函数名:可自定义,
return:将函数体代码执行的结果返回给调用者
def 函数名(参数列表):
函数体
包含一系列索引的代码语句
return 返回值 :返回结果给调用者
函数名() 调用
def sayhello(mesage):
print(f"{mesage},你好啊!")
sayhello('张三')
def add(num1,num2):
sum=num1+num2
return sum
print(add(2,4))
8、类和方法
类(Class)
类是⼀个模板或蓝图,它定义了对象的结构和⾏为。类包含了属性和⽅法,这些属性和⽅法定义了对象,将拥有的数据(状态)以及可以执⾏的操作(⾏为)。
属性:类的属性可以是数据属性或类属性。数据属性⽤于存储对象的特定信息(如实例变量),⽽类属性则是类级别的变量,被该类的所有实例共享。
⽅法:类的⽅法定义了对象的⾏为。它们是绑定到类的函数,可以通过对象来调⽤。
魔术方法:也被称为双下划线方法或特殊方法,这些方法的名称前后都带有两个下划线,例如init、str等。
⽅法中的第⼀个参数通常是self,它代表调⽤该⽅法的对象本身。
self : 必须是所有实例方法和构造函数的第一个参数,代表当前对象。
构造函数: 固定命名为 init (可以将类中需要外部赋值的放入到其中)。
class Dog():
species="犬类" #类属性:所有对象共享的属性
def __init__(self,name,age): #类的构造函数:初始化方法,用于创建对象时调用此方法,初始化对象的属性
self.name=name #实例属性:每个对象都有自己的属性值
self.age=age
def sit(self): #自定义方法:实例方法:对象可以调用的方法
print(f"{self.name}正坐着呢")
def roll_over(self):
print(f"{self.name} is now rolling over")
def __str__(self): #自定义方法:对象可以调用的方法,用于返回对象的字符串表示
return f"{self.name}已经{self.age}岁了"
dog1=Dog("小黑",2) #创建一个对象
dog1.sit()
dog1.roll_over()
print(dog1) #当对一个对象执行print() 操作时,Python会自动查找并调用该对象的 `__str__` 方法
三、python模块
是包含Python代码的文件,其扩展名通常为.py。
• 模块可以包含函数、类和变量,也可以包含可执行的代码
• 常见模块类型:系统内置模块、自定义模块、第三方模块
1、系统内置模块
是Python自带的标准库,它们提供了丰富的功能和工具,用于执行各种常见的任务。系统内置模块包
括:os模块、sys模块、random模块、time模块。
两种方法导入:
导入模块、导入模块中的方法
import 模块名
from 模块名 import 方法名
import math #导入系统内置模块math,主要数字运算
from math import pow #从math模块导入pow方法
num=math.sqrt(4) #sqrt输出平方根
print(num)
num1=pow(2,3)
print(num1)
2、自定义模块
⾃定义模块是开发者⾃⼰编写的模块,⽤于封装特定的功能或逻辑。⾃定义模块可以是任何有效的Python⽂件(以“.py”为后缀名),⾥⾯可以包含全局变量、函数、类等。
在使⽤⾃定义模块时,需要确保模块的命名不与系统内置模块重名,否则将⽆法导⼊系统内置模块。⾃定义模块的使⽤⽅式与其他模块相同,通过import语句进⾏导⼊。
mymodel.py
def add(num1,num2):
avg = (num1 + num2)/2
return avg
test14.py
import mymodel
num=mymodel.add(54,79)
print(num)
3、第三方模块
通过python的pip命令来下载第三方模块
是由其他开发者或组织编写的,并发布到Python包索引等公共仓库中的模块。
pip命令:在python安装目录下的scrip目录
requests库是Python常⽤的⽹络请求库,核⼼功能是模拟浏览器向⽹站发送请求、获取数据。
通过pip命令安装requests库
常见命令:
pip list #列出所有已安装的第三方模块
pip install requests #利用pip安装requests库
pip install python-whois -i https://pypi.tuna.tsinghua.edu.cn/simple #-i 选项选择国内镜像源安装python-whois库
pip uninstall python-whois #卸载模块
关于pip下载源,因为网络、防火墙等原因无法从Python 官⽅的仓库进⾏pip 安装,
这时候可以选择国内的镜像源源 :
- 清华:https://pypi.tuna.tsinghua.edu.cn/simple
- 阿⾥云:http://mirrors.aliyun.com/pypi/simple/
- 中国科技⼤学 https://pypi.mirrors.ustc.edu.cn/simple/
- 华中理⼯⼤学:http://pypi.hustunique.com/
- ⼭东理⼯⼤学:http://pypi.sdutlinux.org/
- ⾖瓣:http://pypi.douban.com/simple/
安装requests库
import requests
domain = "https://www.zhibangyang.cn/"
r=requests.get(domain) #发送get请求
code=r.status_code #获取响应状态码
message=r.text #获取响应内容
print(message)
print(code)
4、第三方工具oneforall
OneForAll 是一款基于 Python 开发的、功能全面的域名信息收集与爆破工具。针对域名
可高效枚举目标域名的子域名、获取相关解析记录与资产信息
oneforall
1.下载地址
https://github.com/shmilylty/OneForAll
2.安装解压 oneforall
3.安装oneforall的依赖包
使用pip通过指定的依赖清单文件requirements.txt,批量安装项目依赖
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
4.实施域名爆破:
cd OneForAll安装目录下 执行python oneforall.py --target 域名 run
python oneforall.py --target https://www.zhibangyang.cn/ run
5.域名爆破结果在OneForAll安装目录下result文件夹里
6.还可以使用自定义字典扫描
python oneforall.py --target 域名 --wordlist=字典完整路径\字典文件完整名称 run

浙公网安备 33010602011771号