python基础4——类、异常处理、常用模块

news2024/12/23 3:53:37

文章目录

  • 一、类
  • 二、python异常处理
  • 三、自定义模块
    • 3.1 保留模块测试代码
    • 3.2 添加模块使用说明
  • 四、内置模块
    • 4.1 os标准库
    • 4.2 os.path类
    • 4.3 sys库
    • 4.4 platform库
    • 4.5 glob库
    • 4.6 random库
    • 4.7 subprocess库
    • 4.8 pickle库
    • 4.9 JSON库
    • 4.10 time库
    • 4.11 datetime库
    • 4.12 urllib库
      • 4.12.1 request类

一、类

面向对象编程&面向过程编程概念:

  1. 面向过程编程:是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程。比如前面的定义函数就是面向过程编程,代码是从上往下一行行执行,可以看到整个过程。
  2. 面向对象编程:是一种计算机编程架构,以对象为中心的编程思想,对现实世界理解和抽象的方法。比如把作用相似的函数规划到一起创建一个类,是从对象来考虑代码结构的。

类&对象之间的关系:

  1. 类:类是对现实生活中一类具有共同特征的事物的抽象描述。例如电脑类、空调类、人类。
  2. 对象:类的实体,实际存在的事物,例如电脑类的“主机”、“显示器”。
  3. 类是由对象来定,这个过程叫做抽象化。用类创建对象,这个过程称为实例化

类的特点:

  1. 封装:把相同对象的功能(函数)、属性(变量)组合在一起。
  2. 方法:对象的功能(例如电脑能上网、看片),实际在类里面就是函数,称为成员函数,也可以称为方法。
  3. 属性:对象的特征(例如电脑都有主机、显示器)。
  4. 实例化:用类创建对象,这个对象具体是什么东西,例如你用的电脑、我这个人。

定义方法:

  • 使用class关键字定义类。

类的书写规范:

  • 类一般采用大驼峰命名,例如MyClass。
  • 类注释,用于说明该类的用途,提高可阅读性。
  • 类中只存在两种数据:属性和方法。
  • 声明属性必须赋值。
  • 声明方法的第一个参数必须是self,其他与普通函数一样。
  • 一般会使用__init__方法给类指定的初始状态属性。

1.类的定义和使用。

#######################################################
##定义类。
class Computer():    ##类的名称为Computer
    '''
    电脑类
    '''
    #定义属性,相当于变量。
    def __init__(self):
        self.host = "4C8G"
        self.displayer = "27寸"
        self.keyboard = "机械键盘"
        self.mouse = "无线鼠标"
    #定义方法,相当于函数。后续通过引用函数名称调用类的哪个函数功能。
    def office(self):
        return "办公"
    def internet(self):
        return "上网"
    def movies(self):
        return "看片"
#######################################################
##类的实例化。
##实例化:用类创建对象的过程。
##类实例:用类创建对象。
##实例属性:对象的属性。
##实例方法:对象调用的方法。

pc = Computer()      #类实例化,pc是类实例。
print(pc.host)       #访问类属性,查看电脑配置。
print(pc.movies())   #访问类方法,让电脑做事。        

在这里插入图片描述
2.例一,让某个人使用电脑做事。

class Computer():
    '''
    电脑类
    '''
    # 属性。
    def __init__(self, name):   ##传入一个参数name。
        self.host = "4C8G"
        self.displayer = "27寸"
        self.keyboard = "机械键盘"
        self.mouse = "无线鼠标"
        self.name = name
    # 方法。
    def office(self):
        return "%s在办公" %self.name
    def internet(self):
        return "%s在上网" %self.name
    def movies(self):
        return "%s在看片" %self.name

zhangsan = Computer("张三")
print(zhangsan.office())

lisi = Computer("李四")
print(lisi.movies())

在这里插入图片描述
3.例二,初始化函数。

class Calc():
    '''计算器类'''
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2
    def jia(self):
        return self.num1 + self.num2
    def jian(self):
        return self.num1 - self.num2
    def cheng(self):
        return self.num1 * self.num2
    def chu(self):
        return self.num1 / self.num2

calc = Calc(6, 6)
print(calc.jia())

在这里插入图片描述

二、python异常处理

捕获异常的原因:

  1. 异常是指程序因为某种原因无法正常工作了,比如代码缩进错误、缺少软件包、环境错误、连接超时等都会引发异常。
  2. 一个健壮的程序应该把所能预知的异常都应做相应的处理,保障程序长期运行。

捕获异常方法:

  • 如果在执行 try 块里的业务逻辑代码时出现异常,系统会自动生成一个异常对象,该异常对象被提交给 Python 解释器,这个过程被称为引发异常。
  • 当 Python 解释器收到异常对象时,会寻找能处理该异常对象的 except 块,如果找到合适的 except 块,则把该异常对象交给该 except 块处理,这个过程被称为捕获异常。如果 Python 解释器找不到捕获异常的except 块,则运行时环境终止,Python 解释器也将退出。
异常类型释义
SyntaxError语法错误
IndentationError缩进错误
TypeError对象类型与要求不符合
ImportError模块或包导入错误;一般路径或名称错误
KeyError字典里面不存在的键
NameError变量不存在
IndexError下标超出序列范围
IOError输入/输出异常;一般是无法打开文件
AttributeError对象里没有属性
KeyboardInterrupt键盘接受到Ctrl+C
Exception通用的异常类型;一般会捕捉所有异常
UnicodeEncodeError编码错误

1.语法。

try:
    <代码块>
except [异常类型]:
    <发生异常时执行的代码块>

2.例一,打印一个没有定义的变量。

try:
    print(name)
except NameError:
    print("发生名称错误时,执行的代码")

在这里插入图片描述
3.例二,当不确定异常类型时,可以使用通用异常类型。

try:
    print(name)
except Exception:   ##Exception指通用类型。
    print("发生名称错误时,执行的代码")

4.例三,保存异常信息。

try:
    print(name)
except Exception as e:
    print("错误:%s" %e)
    print("发生名称错误时,执行的代码")

在这里插入图片描述

三、自定义模块

模块是什么?

  1. 一个较大的程序一般应分为若干个程序块,这些程序块称为模块,每个模块用来实现一部分特定的功能。这样可以方便管理和重复使用。
  2. python中有很多别人已经定义好的模块,我们可以直接拿来使用。我们也可以根据项目情况去自定义模块使用。
  3. python中的模块定义就是写一个py文件,然后导入这个py文件就代表引用该模块了。

使用模块的方法:

import <模块名称>
from <模块名称> import <方法名>
import <模块名称> as <别名>

1.定义模块,写一个py文件,我这里就命名为qingjun.py,qingjun为模块名。

##定义函数1。
def count1(a,b):
    return a+b

##定义函数2.
name = "mm"
def count2(a, b):
    result = a * b
    return f"{a}与{b}的乘积是: {result}"

##定义类。
class jia():
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def baimu(self):
        return self.a + self.b

在这里插入图片描述

2.导入模块,方式一。

import qingjun

##调用qingjun模块中的一个名为jia的类。
c = qingjun.jia(10, 5)
print(c.baimu())

##调用qingjun模块中的一个名称conut1的函数。
print(qingjun.count1(1,6))

3.导入模块并重命名,方式二。

import qingjun as a

##调用qingjun模块中的一个名为jia的类。
c = a.jia(10, 5)
print(c.baimu())

##调用qingjun模块中的一个名称conut1的函数。
print(a.count1(1,6))

4.导入模块某个功能,方式三。

from qingjun import jia

##调用qingjun模块中的一个名为jia的类。
c = jia(10, 5)    ##这种方法可以不跟模块名称。
print(c.baimu())

3.1 保留模块测试代码

  • 保留模块py文件中的测试代码,可以方便他人查阅使用模块。我们自定义好一个模块时,常常在后面写一小段代码进行测试,但又不想让他人使用该模块时导入我这段测试代码,这时可以用Python文件的内置属性__name__实现。
  • 若直接运行Python文件,__name__的值是"main";若import一个模块,那么模块的__name__的值是"文件名"。

1.在模块py文件中添加“__name__”,执行模块文件返回的是“__main__”。

在这里插入图片描述
2.在模块py文件中添加“__name__”,引用模块执行返回的是“__main__”。
在这里插入图片描述
3.所以常常在模块的测试代码中添加if判断,这样可以防止别人引用模块时也把测试代码执行了。

##测试代码。
if __name__ == "__main__":
    print(count1(1,1))    ##打印函数count1的值。
    c = jia(10, 5)
    print(c.baimu())      ##打印类jia的值。

在这里插入图片描述

3.2 添加模块使用说明

  • 自定义模块也可以添加说明文档,方便他人使用。与函数或类的添加方法相同,即只需在模块开头的位置定义一个字符串即可。

1.定义模块说明文档。
在这里插入图片描述

2.引用模块后,可以打印模块说明文档。

##导入模块。
import qingjun

##打印模块的说明文档,方式一。
print("说明文档: %s" %qingjun.__doc__)
##打印模块的说明文档,方式二。
help(qingjun)

3.查看效果。

在这里插入图片描述

四、内置模块

  • 官方文档。
常用内置模块作用
os操作系统管理
sys解释器交互
platform操作系统信息
glob查找文件
shutil文件管理
random随机数
subprocess执行Shell命令
pickle对象数据持久化
jsonJSON编码和解码
time时间访问和转换
datetime日期和时间
urllibHTTP访问

4.1 os标准库

  • os库主要对目标和文件操作。
方法作用
os.name返回操作系统类型
os.environ以字典形式返回系统变量
os.putenv(key, value)改变或添加环境变量
os.listdir(path=’.’)列表形式列出目录下所有目录和文件名
os.getcwd()获取当前路径
os.chdir(path)改变当前工作目录到指定目录
os.mkdir(path [, mode=0777])创建目录
os.makedirs(path [, mode=0777])递归创建目录
os.rmdir(path)移除空目录,不能删除有文件的目录
os.remove(path)移除文件
os.rename(old, new)重命名文件或目录
os.stat(path)获取文件或目录属性
os.chown(path, uid, gid)改变文件或目录所有者
os.chmod(path, mode)改变文件访问权限
os.symlink(src, dst)创建软链接
os.unlink(path)移除软链接
os.getuid()返回当前进程UID
os.getlogin()返回登录用户名
os.getpid()返回当前进程ID
os.kill(pid, sig)发送一个信号给进程
os.walk(path)目录树生成器,生成一个三组 (dirpath, dirnames, filenames)
os.system(command)执行shell命令,不能存储结果
os.popen(command [, mode=‘r’ [, bufsize]])打开管道来自shell命令,并返回一个文件对象

1.可以使用ipython进入,获取当前操作系统类型。
在这里插入图片描述
2.列出当前目录下的文件和目录。
在这里插入图片描述
3.获取目录树生成树。
在这里插入图片描述

4.2 os.path类

  • 用于获取文件属性。
方法作用
os.path.basename(path)返回最后一个文件或目录名
os.path.dirname(path)返回最后一个文件所属目录
os.path.abspath(path)返回一个绝对路径
os.path.exists(path)判断路径是否存在,返回布尔值
os.path.isdir(path)判断是否是目录
os.path.isfile(path)判断是否是文件
os.path.islink(path)判断是否是链接
os.path.ismount(path)判断是否挂载
os.path.getatime(filename)返回文件访问时间戳
os.path.getctime(filename)返回文件变化时间戳
os.path.getmtime(filename)返回文件修改时间戳
os.path.getsize(filename)返回文件大小,单位字节
os.path.join(a, *p)加入两个或两个以上路径,以正斜杠"/"分隔。常用于拼接路径
os.path.split(path)分隔路径名
os.path.splitext(path)分隔扩展名

1.分隔路径名。
在这里插入图片描述
2.分隔扩展名。
在这里插入图片描述

4.3 sys库

  • 用于与Python解释器交互。
方法作用
sys.argv从程序外部传递参数
argv[0] #代表本身名字
argv[1] #第一个参数
argv[2] #第二个参数
argv[3] #第三个参数
argv[N] #第N个参数
argv #参数以空格分隔存储到列表
sys.exit([status])退出Python解释器
sys.path当前Python解释器查找模块搜索的路径,列表返回。
sys.getdefaultencoding()获取系统当前编码
sys.platform返回操作系统类型
sys.version获取Python版本

1.写一个python脚本,执行并传入参数。

[root@qingjun opt]# cat qingjun.py 
import sys
print(sys.argv)
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])

在这里插入图片描述
2.退出python解释器,可以添加退出状态码。

[root@qingjun opt]# cat qingjun.py 
import sys
print(sys.argv)
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
sys.exit([443])
print(sys.argv[3])

在这里插入图片描述
3.添加自定义模块路径。

##追加自定义模块路径。
sys.path.append("/opt/qingjun.py")

在这里插入图片描述
4.查看操作系统类型,与os.name作用相似。

在这里插入图片描述

4.4 platform库

  • 用于获取操作系统详细信息。
方法作用
platform.platform()返回操作系统平台
platform.uname()返回操作系统信息
platform.system()返回操作系统平台
platform.version()返回操作系统版本
platform.machine()返回计算机类型
platform.processor()返回计算机处理器类型
platform.node()返回计算机网络名
platform.python_version()返回Python版本号

在这里插入图片描述

4.5 glob库

  • 用于文件查找,支持通配符(*、?、[])

1.查找/opt/目录中所有以.py为后缀的文件。

glob.glob('/opt/*.py')   ##查找以py结尾的文件。
glob.glob('/opt/*')      ##查找所有文件。

##对返回的元组进行取值。
glob.glob('/opt/*')[0]   
glob.glob('/opt/*')[1]
glob.glob('/opt/*')[2]

在这里插入图片描述

2.通配符?的用法,一个?代表一个字符。

glob.glob('/opt/???????.py')

在这里插入图片描述

3.查找目录中出现a.sh或b.sh的文件。

glob.glob("/opt/[a|b].py")

在这里插入图片描述

4.6 random库

  • 用于生成随机数。
方法作用
random.randint(a,b)随机返回整数a和b范围内数字
random.random()生成随机数,它在0和1范围内
random.randrange(start, stop[, step])返回整数范围的随机数,并可以设置只返回跳数
random.sample(array, x)从数组中返回随机x个元素
random.choice(seq)从序列中返回一个元素

1.对生成的随机数进行切割,并取值。

##先转换数据类型为str,在进行切片取值。
str(random.random()).split('.')[1]
str(random.random()).split('.')[0]

在这里插入图片描述

4.7 subprocess库

作用:

  • 用于执行Shell命令,工作时会fork一个子进程去执行任务,连接到子进程的标准输入、输出、错误,并获得它们的返回代码。
  • 该模块将取代os.system、os.spawn*、os.popen*、popen2.* 和commands.*。

subprocess的主要方法:

  • subprocess.run(),推荐使用。
  • subprocess.Popen(),老版本使用。
  • subprocess.call,偏底层。

语法:subprocess.run(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None)

参数说明
args要执行的shell命令,默认是一个字符串序列,如[‘ls’, ‘-al’]或(‘ls’, ‘-al’);
也可以是一个字符串,如’ls -al’,同时需要设置shell=True。
stdin
stdout
stderr
run()函数默认不会捕获命令运行结果的正常输出和错误输出,
可以设置stdout=PIPE, stderr=PIPE来从子进程中捕获相应的内容;
也可以设置stderr=STDOUT,使标准错误通过标准输出流输出。
shell如果shell为True,那么指定的命令将通过shell执行。
cwd改变当前工作目录
timeout设置命令超时时间。如果命令执行时间超时,子进程将被杀死,并弹出TimeoutExpired 异常。
check如果check参数的值是True,且执行命令的进程以非0状态码退出,则会抛出一个CalledProcessError的异常,且该异常对象会包含参数、退出状态码、以及stdout和stderr(如果它们有被捕获的话)。
encoding如果指定了该参数,则 stdin、stdout 和 stderr 可以接收字符串数据,并以该编码方式编码。否则只接收 bytes 类型的数据。

1.在python脚本中导入subprocess模块,执行正确命令示范。

import subprocess    ##导入模块。
cmd = "pwd"   ##要执行的命令。
result = subprocess.run(cmd, shell=True, timeout=3, stderr=subprocess.PIPE,stdout=subprocess.PIPE)  ##run方法返回CompletedProcess实例,可以直接从这个实例中获取命令运行结果。
print(result)
print(result.returncode)     ##获取状态码。
print(result.stdout)         ##标准输出。
print(result.stderr)         ##错误输出。

在这里插入图片描述

2.在python脚本中导入subprocess模块,执行错误命令示范。

import subprocess    ##导入模块。
cmd = "pwdd"   ##错误命令。
result = subprocess.run(cmd, shell=True, timeout=3, stderr=subprocess.PIPE,stdout=subprocess.PIPE)   
print(result)
print(result.returncode)     ##获取状态码。
print(result.stdout)         ##标准输出。
print(result.stderr)         ##错误输出。

在这里插入图片描述

4.8 pickle库

  • 可以实现对一个Python对象结构的二进制序列化和反序列化。
  • 主要用于将对象持久化到文件存储,方便把数据文件给别人使用,适用于小型数据(几兆、几十兆)。

两个函数:

  • dump() 把对象保存到文件中(序列化),使用load()函数从文件中读取(反序列化)。
  • dumps() 把对象保存到内存中,使用loads()函数读取。

1.将数据对象保存到文件中,文件名自定义,一般使用pkl作为后缀名。

import pickle
computer = {"主机":5000,"显示器":1000,"鼠标":60,"键盘":150}

##导出数据到文件中。
with open("hehe.pkl", "wb") as f:
    pickle.dump(computer, f)

在这里插入图片描述
2.读取文件中的数据。

import pickle
computer = {"主机":5000,"显示器":1000,"鼠标":60,"键盘":150}

##读取文件中数据。
with open("hehe.pkl", "rb") as f:
    print(pickle.load(f))

在这里插入图片描述

4.9 JSON库

  • 用于数据格式转换,一般API返回的数据大多是JSON、XML,如果返回JSON的话,需将获取的数据转换成字典,方便在python程序中处理。

两个函数:

  • dumps() 对数据进行编码。
  • loads() 对数据进行解码。

1.将字典类型转换为JSON对象,方便将我的python数据给其他人使用。

import json
computer = {"主机":5000,"显示器":1000,"鼠标":60,"键盘":150}
json_obj = json.dumps(computer)
print(type(computer))
print(type(json_obj))
print(json_obj)

在这里插入图片描述
2.将JSON对象转换为字典,方便将别人的数据拿到我的python中使用。

import json
computer = {"主机":5000,"显示器":1000,"鼠标":60,"键盘":150}

json_obj = json.dumps(computer)   ##比作获取的json数据。
data = json.loads(json_obj)     ##将json数据转换成字典型。
print(type(data))
print(data)

在这里插入图片描述

4.10 time库

  • 用于满足简单的时间处理,例如获取当前时间戳、日期、时间、休眠。
方法描述
time.ctime(seconds)返回当前时间时间戳
time.localtime([seconds])当前时间,以stuct_time时间类型返回
time.mktime(tuple)将一个stuct_time时间类型转换成时间戳
time.strftime(format[, tuple])将元组时间转换成指定格式。[tuple]不指定默认是当前时间
time.time()返回当前时间时间戳
time.sleep(seconds)延迟执行给定的秒数

1.获取当前时间。

import time
print(time.ctime())

##以stuct_time时间类型返回。
print(time.localtime())

在这里插入图片描述
2.获取时间戳。

import time

##以stuct_time时间类型返回时间戳。
print(time.localtime())

##将stuct_time时间类型转换成时间戳。
print(time.mktime(time.localtime()))

##获取时间戳,方式二。
print(time.time())

在这里插入图片描述
3.自定义时间格式。

import time
time.strftime("%Y-%m-%d %H:%M:%S")

##睡眠3秒。
time.sleep(3)

在这里插入图片描述

4.将时间戳转换指定格式。

now = time.time()
struct_time = time.localtime(now)
print(time.strftime('%Y-%m-%d %H:%M:%S',struct_time))

在这里插入图片描述

4.11 datetime库

  • 用于处理更复杂的日期和时间。
作用
datetime.date日期,年月日组成
datetime.datetime包括日期和时间
datetime.time时间,时分秒及微秒组成
datetime.timedelta时间间隔
datetime.tzinfo时区信息对象

1.获取系统时间。

from datetime import date, datetime
#获取当前系统时间。
print(datetime.now())

# 将当前系统时间转换指定格式。
print(date.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S'))

#获取当前系统时间(格式化,按天获取)。
print(date.isoformat(date.today()))

在这里插入图片描述
2.获取时间戳。

import time
from datetime import date, datetime

##获取时间戳。
date_array = datetime.fromtimestamp(time.time())
print(date_array)

#将时间戳转换指定格式。
print(date_array.strftime("%Y-%m-%d %H:%M:%S"))

在这里插入图片描述
3.获取昨天、明天的时间。

#获取昨天日期。
from datetime import date, timedelta
yesterday = date.today() - timedelta(days=1)
yesterday = date.isoformat(yesterday)
print(yesterday)

#获取明天日期。
tomorrow = date.today() + timedelta(days=1)
print(tomorrow)


#将时间对象格式化。
tomorrow = date.isoformat(tomorrow)
print(tomorrow)

在这里插入图片描述

4.12 urllib库

  • 用于访问URL。
  • 用的最多是urllib.request 类,它定义了适用于在各种复杂情况下打开 URL,例如基本认证、重定向、Cookie、代理等。
常用的类作用
urllib.request打开和读取 URL。
urllib.error包含 urllib.request 抛出的异常。
urllib.parse用于解析 URL。
urllib.robotparser用于解析 robots.txt 文件。

4.12.1 request类

方法描述
getcode()获取响应的HTTP状态码。
geturl()返回真实URL。有可能URL3xx跳转,那么这个将获得跳转后的URL。
headers返回服务器header信息。
read(size=-1)返回网页所有内容。size正整数指定读取多少字节。
readline(limit=-1)读取下一行。size正整数指定读取多少字节。
readlines(hint=0, /)列表形式返回网页所有内容,以列表形式返回。sizehint正整数指定读取多少字节。

1.自定义用户代理。

from urllib import request

##要请求的url。
url = "http://www.baidu.cn"

##浏览器信息。
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
header = {"User-Agent": user_agent}
req = request.Request(url, headers=header)
res = request.urlopen(req)     ##打开url。
print(res.getcode())    ##获取访问url的状态码。

在这里插入图片描述

2.向接口提交用户数据。

from urllib import request, parse
url = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"
post_data = {"username":"user1","password":"123456"}
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
header = {"User-Agent": user_agent}
#将字典转为URL查询字符串格式,并转为bytes类型
post_data = parse.urlencode(post_data).encode("utf8")
req = request.Request(url, data=post_data, headers=header)
res = request.urlopen(req)
print(res.read())

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/894015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity Android 之 使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理

Unity Android 之 使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 目录 Unity Android 之 使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、效…

水泥厂人员定位方案

水泥厂人员定位方案可以采用不同的技术和策略。以下是一个常见的水泥厂人员定位方案的步骤&#xff1a; 1.选择合适的定位技术&#xff1a;根据水泥厂的需求和运营环境&#xff0c;选择适合的定位技术&#xff0c;例如基于UWB&#xff08;Ultra-Wideband&#xff09;、RFID&am…

无涯教程-Perl - undef函数

描述 此函数未定义EXPR的值。用于标量,列表,哈希,函数或类型范围。在带有诸如undef $hash {$key}之类的语句的哈希上使用&#xff1b;实际上将指定键的值设置为未定义的值。 如果要从哈希中删除元素,请使用delete函数。 语法 以下是此函数的简单语法- undef EXPRundef返回…

windows ipv4 多ip地址设置,默认网关跃点和自动跃点是什么意思?(跃点数)

文章目录 Windows中的IPv4多IP地址设置以及默认网关跃点和自动跃点的含义引言IPv4和IPv6&#xff1a;简介多IP地址设置&#xff1a;Windows环境中的实现默认网关跃点&#xff1a;概念和作用自动跃点&#xff1a;何时使用&#xff1f;关于“跃点数”如何确定应该设置多少跃点数&…

【3Ds Max】布料命令的简单使用

简介 在3ds Max中&#xff0c;"布料"&#xff08;Cloth&#xff09;是一种模拟技术&#xff0c;用于模拟物体的布料、织物或软体的行为&#xff0c;例如衣物、帆布等。通过应用布料模拟&#xff0c;您可以模拟出物体在重力、碰撞和其他外力作用下的变形和动态效果。…

【学习FreeRTOS】第11章——FreeRTOS中任务相关的其他API函数

1.函数总览 序号函数描述1uxTaskPriorityGet()获取任务优先级2vTaskPrioritySet()设置任务优先级3uxTaskGetNumberOfTasks()获取系统中任务的数量4uxTaskGetSystemState()获取所有任务的状态信息5vTaskGetInfo()获取单个任务的状态信息6xTaskGetCurrentTaskHandle()获取当前任…

利用Velero对K8S备份还原与集群迁移实战

一、简介 Velero 是一款云原生时代的灾难恢复和迁移工具&#xff0c;采用 Go 语言编写&#xff0c;并在 github 上进行了开源&#xff0c;利用 velero 用户可以安全的备份、恢复和迁移 Kubernetes 集群资源和持久卷。 开源地址&#xff1a;https://github.com/vmware-tanzu/v…

Element通过v-for循环渲染的form表单校验

需求&#xff1a;有个表单信息是v-for渲染的&#xff0c;例如下图&#xff0c;通过循环遍历实现新增和删除模块&#xff0c;按照平时的写法实现校验&#xff0c;是不能实现我们想要的效果&#xff0c;根据这个需求&#xff0c;我找到了一个解决方法 1.HTML <el-form ref&qu…

【抓包工具】whistle抓包工具分享

一、使用场景 抓包请求转发 二、基础篇 官网&#xff1a;http://wproxy.org/whistle/ github: https://github.com/avwo/whistle 简介&#xff1a; whistle(读音[ˈwɪsəl]&#xff0c;拼音[wēisǒu])基于Node实现的跨平台web调试代理工具&#xff0c;类似的工具有Window…

React 之 Router - 路由详解

一、Router的基本使用 1. 安装react-router react-router会包含一些react-native的内容&#xff0c;web开发并不需要 npm install react-router-dom 2. 设置使用模式 BrowserRouter或HashRouter Router中包含了对路径改变的监听&#xff0c;并且会将相应的路径传递给子组件Bro…

优化视频流:利用美颜SDK提升直播质量的方法

随着互联网的迅猛发展&#xff0c;视频直播已成为人们分享、交流和娱乐的重要方式。然而&#xff0c;在实际的直播过程中&#xff0c;视频画质可能受到诸多因素的影响&#xff0c;例如摄像头品质、网络状况等。为了提升观众的体验和吸引更多的观众&#xff0c;美颜技术逐渐成为…

8.18号transformer 系列文章阅读

文章目录 STGM: Spatio-Temporal Graph Mixformer for Traffic ForecastingAttention Is Not All You Need AnymoreLEARNING IMAGE DERAINING TRANSFORMER NETWORK WITH DYNAMIC DUAL SELF-ATTENTIONSST: A Simplified Swin Transformer-based Model for Taxi Destination Pred…

zookeeper安装配置采坑流程

安装 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.2/apache-zookeeper-3.8.2-bin.tar.gz解压&#xff1a; tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz如下 bin目录下文件是可执行文件 conf目录文件是配置文件 修改zoo.cfg&#xff08;复制zoo_sample&#x…

python生成器有几种写法,python生成器函数例子

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python生成器有几种写法&#xff0c;python生成器函数例子&#xff0c;今天让我们一起来看看吧&#xff01; 本文部分参考&#xff1a;Python迭代器&#xff0c;生成器–精华中的精华 https://www.cnblogs.com/deeper/p…

C#接化发:串口通信

文章目录 框架准备串口准备接、化、发测试 源码地址&#xff1a;C# 串口通信测试软件 框架准备 出于简单考虑&#xff0c;首先创建一个Winform项目&#xff0c;本文项目名称为portTest。 串口通信&#xff0c;至少有两个串口才能通信&#xff0c;所以拖动两个GroupBox&#…

Python 3 使用Hive 总结

启动HiveServer2 服务 HiveServer2 是一种可选的 Hive 内置服务&#xff0c;可以允许远程客户端使用不同编程语言向 Hive 提交请求并返回结果。 Thrift服务配置 假设我们已经成功安装了 Hive&#xff0c;如果没有安装&#xff0c;请参考&#xff1a;Hive 一文读懂 。在启动 H…

SAP后台表SE16和SE16N修改后台表数据方法

SAP后台表SE16和SE16N修改后台表数据方法 SAP中直接修改表、视图的Tcode有SE16N和SM30。 一 . SE16N界面输入&SAP_EDIT 其中使用SE16N修改表需要先输入命令&SAP_EDIT,回车左下角显示激活SAP编辑功能后&#xff0c;就可以对相应的表进行新增、删除、修改的操作。 有…

剑指offer44.数字序列中某一位的数字

最后一道题&#xff0c;我一定要自己做出来&#xff0c;想了不到一个小时想法差不多成熟了&#xff0c;但是有一个小细节出问题了&#xff0c;这个问题我在idea上debug都没debug出来。我先讲我的题解然后再讲我这个小问题出在哪里吧。以下是我的代码&#xff1a; class Soluti…

基于.Net Core开发的医疗信息LIS系统源码

SaaS模式.Net Core版云LIS系统源码 医疗信息LIS系统是专为医院检验科设计的一套实验室信息管理系统&#xff0c;能将实验仪器与计算机组成网络&#xff0c;使病人样品登录、实验数据存取、报告审核、打印分发&#xff0c;实验数据统计分析等繁杂的操作过程实现了智能化、自动化…

Mac m1芯片基于parallesls desktop安装Ubuntu

1.Ubuntu镜像下载 访问Ubuntu官网自行选择版本进行下载&#xff0c;可进行以下操作进行版本选择 对于Mac系统&#xff0c;不论VM/PD都需要用arm架构镜像&#xff0c;所以点击arm架构的镜像进行下载 2.准备PD PD安装包&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/46…