Python自学 - 函数初步(内置函数、模块函数、自定义函数)
1 Python自学 - 函数初步(内置函数、模块函数、自定义函数)
1.1 内置函数
几乎所有的编程都会提供一些内置函数,以便完成一些最基本的任务,Python
提供了丰富的内置函数,熟悉内置函数可以给工作带来极大便利。
Python
官方的内置函数介绍网址:Python内置函数。
1.1.1 数学函数
abs()
:
abs(x)
,返回一个数字的绝对值。 参数可以是整数、浮点数或任何实现了 abs() 的对象。 如果参数是一个复数,则返回它的模。divmod()
:
divmod(a, b)
,接受两个(非复数)数字作为参数并返回由当对其使用整数除法时的商和余数组成的数字对。hash()
:
hash(object)
,返回该对象的哈希值(如果它有的话)。pow()
:
pow(base, exp, mod=None)
, 返回 base 的 exp 次幂round()
:
round(number, ndigits=None)
,返回 number 舍入到小数点后 ndigits 位精度的值。
1.1.2 字符串函数
ascii()
:
ascii(object)
,与 repr() 类似,返回一个包含对象的可打印表示形式的字符串,但是使用 \x、\u 和 \U 对 repr() 返回的字符串中非 ASCII 编码的字符进行转义。chr()
:
chr(i)
,返回 Unicode 码位为整数 i 的字符的字符串格式。format()
:
format(value, format_spec='')
,将 value 转换为“格式化后”的形式,格式由 format_spec 进行控制。ord()
:
ord(c)
,对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。repr()
:
repr(object)
,返回包含一个对象的可打印表示形式的字符串。str()
:
class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')
,返回一个 str 版本的 object
1.1.3 统计函数
len()
:
len(s)
,返回对象的长度(元素个数)。max()
:
max(iterable, *, key=None)
max(iterable, *, default, key=None)
max(arg1, arg2, *args, key=None)
返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。min()
:
min(iterable, *, key=None)
min(iterable, *, default, key=None)
min(arg1, arg2, *args, key=None)
, 返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。sum()
:
sum(iterable, /, start=0)
,从 start 开始自左向右对 iterable 的项求和并返回总计值。 iterable 的项通常为数字,而 start 值则不允许为字符串。
1.1.4 迭代函数
aiter()
:
aiter(async_iterable)
,返回 asynchronous iterable 的 asynchronous iterator 。相当于调用 x.aiter()。all()
:
all(iterable)
,如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True 。anext()
:
awaitable anext(async_iterator)
awaitable anext(async_iterator, default)
, 当进入 await 状态时,从给定 asynchronous iterator 返回下一数据项,迭代完毕则返回 default。any()
:
any(iterable)
,如果 iterable 的任一元素为真值则返回 True。 如果可迭代对象为空,返回 False。enumerate()
:
enumerate(iterable, start=0)
,返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。filter()
:
filter(function, iterable)
,使用 iterable 中 function 返回真值的元素构造一个迭代器。 iterable 可以是一个序列,一个支持迭代的容器或者一个迭代器。iter()
:
iter(object)
iter(object, sentinel)
,返回一个 iterator 对象。 根据是否存在第二个参数,对第一个参数的解读会有很大的不同。 如果没有第二个参数,object 必须是一个支持 iterable 协议 (有 iter() 方法) 的多项集对象,或者必须支持序列协议 (有 getitem() 方法并使用从 0 开始的整数参数)。map()
:
map(function, iterable, *iterables)
,返回一个将 function 应用于 iterable 的每一项,并产生其结果的迭代器。 如果传入了额外的 iterables 参数,则 function 必须接受相同个数的参数并被用于到从所有可迭代对象中并行获取的项。next()
:
next(iterator)
next(iterator, default)
,通过调用 iterator 的 next() 方法获取下一个元素。如果迭代器耗尽,则返回给定的 default,如果没有默认值则触发 StopIteration。range()
:
class range(stop)
class range(start, stop, step=1)
,虽然被称为函数,但 range 实际上是一个不可变的序列类型
1.1.5 类型函数
bin()
:
bin(x)
,将一个整数转换为带前缀 “0b” 的二进制数字符串。bool()
:
class bool(object=False, /)
,返回布尔值,即 True 或 False 中的一个。bytearray()
:
class bytearray(source=b'')
class bytearray(source, encoding)
class bytearray(source, encoding, errors)
,返回一个新的 bytes 数组。 bytearray 类是一个可变序列,包含范围为 0 <= x < 256 的整数。bytes()
:
class bytes(source=b'')
class bytes(source, encoding)
class bytes(source, encoding, errors)
,返回一个新的“bytes”对象,这是一个不可变序列,包含范围为 0 <= x < 256 的整数。complex()
:
class complex(number=0, /)
class complex(string, /)
class complex(real=0, imag=0)
,将特定的字符串或数字转换为一个复数,或基于特定的实部和虚部创建一个复数。dict()
:
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
,创建一个新的字典。dict 对象是一个字典类。float()
:
class float(number=0.0, /)
class float(string, /)
,返回基于一个数字或字符串构建的浮点数。frozenset()
:
class frozenset(iterable=set())
,返回一个新的 frozenset 对象,它包含可选参数 iterable 中的元素。hex()
:
hex(x)
,将整数转换为带前缀 “0x” 前缀的小写十六进制数字符串。int()
:
class int(number=0, /)
class int(string, /, base=10)
,返回从一个数字或字符串构建的整数对象,或者如果未给出参数则返回 0。list()
:
class list
class list(iterable)
,虽然被称为函数,list 实际上是一种可变序列类型oct()
:
oct(x)
,将整数转换为带前缀 “0o” 的八进制数字符串。set()
:
class set
、class set(iterable)
,返回一个新的 set 对象,可以选择带有从 iterable 获取的元素。tuple()
:
class tuple
、class tuple(iterable)
,虽然被称为函数,但 tuple 实际上是一个不可变的序列类型
1.1.6 输入输出
input()
:
input()
、input(prompt)
,如果存在 prompt 实参,则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。当读取到 EOF 时,则触发 EOFError。open()
:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
,打开 file 并返回对应的 file object。 如果该文件不能被打开,则引发 OSError。print()
:
print(*objects, sep=' ', end='\n', file=None, flush=False)
,将 objects 打印输出至 file 指定的文本流,以 sep 分隔并在末尾加上 end。 sep 、 end 、 file 和 flush 必须以关键字参数的形式给出。
1.1.7 类与对象函数
classmethod()
:
@classmethod
,把一个方法封装成类方法。delattr()
:
delattr(object, name)
,这是 setattr() 的相关函数。 其参数是一个对象和一个字符串。 其中字符串必须是对象的某个属性的名称。getattr()
:
getattr(object, name)
getattr(object, name, default)
,object 中指定名称的属性的值。 name 必须是字符串。 如果该字符串是对象的某一属性的名称,则结果将为该属性的值。hasattr()
:
hasattr(object, name)
,该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。isinstance()
:
isinstance(object, classinfo)
,如果 object 参数是 classinfo 参数的实例,或者是其 (直接、间接或 虚拟) 子类的实例则返回 True。 如果 object 不是给定类型的对象,则该函数总是返回 False。issubclass()
:
issubclass(class, classinfo)
,如果 class 是 classinfo 的子类(直接、间接或 虚的 ),则返回 True。类将视为自己的子类。classinfo 可为类对象的元组(或递归地,其他这样的元组)或 union 类型,这时如果 class 是 classinfo 中任何条目的子类,则返回 True 。memoryview()
:
class memoryview(object)
,返回由给定实参创建的“内存视图”对象。object()
:
class object
,这是所有其他类的终极基类。 它提供了所有 Python 类实例均具有的方法。 当其构造器被调用时,它将返回一个新的基本对象。 该构造器不接受任何参数。property()
:
class property(fget=None, fset=None, fdel=None, doc=None)
,返回 property 属性。fget 是获取属性值的函数。 fset 是用于设置属性值的函数。 fdel 是用于删除属性值的函数。并且 doc 为属性对象创建文档字符串。reversed()
:
reversed(seq)
,返回一个反向的 iterator。setattr()
:
setattr(object, name, value)
,本函数与 getattr() 相对应。其参数为一个对象、一个字符串和一个任意值。slice()
:
class slice(stop)
class slice(start, stop, step=None)
,返回一个表示由 range(start, stop, step) 指定的索引集的 slice 对象。 start 和 step 参数默认为 None。sorted()
:
sorted(iterable, /, *, key=None, reverse=False)
,根据 iterable 中的项返回一个新的已排序列表。staticmethod()
:
@staticmethod
,将方法转换为静态方法。super()
:
class super
class super(type, object_or_type=None)
,返回一个代理对象,它会将方法调用委托给 type 的父类或兄弟类。 这对于访问已在类中被重写的继承方法很有用。type()
:
class type(object)
class type(name, bases, dict, **kwds)
,传入一个参数时,返回 object 的类型。 返回值是一个 type 对象并且通常与 object.class 所返回的对象相同。推荐使用 isinstance() 内置函数来检测对象的类型,因为它会考虑子类的情况。zip()
:
zip(*iterables, strict=False)
,在多个迭代器上并行迭代,从每个迭代器返回一个数据项组成元组。
1.1.8 其他函数
breakpoint()
:
breakpoint(*args, **kws)
,此函数会在调用位置进入调试器。callable()
:
callable(object)
,如果 object 参数是可调用的则返回 True,否则返回 False。 如果返回 True,调用仍可能失败,但如果返回 False,则调用 object 肯定不会成功。compile()
:
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
,将 source 编译成代码或 AST 对象。代码对象可以被 exec() 或 eval() 执行。source 可以是常规的字符串、字节字符串,或者 AST 对象。参见 ast 模块的文档了解如何使用 AST 对象。dir()
:
dir()
dir(object)
,如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表。eval()
:
eval(source, /, globals=None, locals=None)
,expression 参数将作为一个 Python 表达式 (从技术上说,是一个条件列表) 使用 globals 和 locals 映射作为全局和局部命名空间被解析并求值。exec()
:
exec(source, /, globals=None, locals=None, *, closure=None)
,这个函数支持动态执行 Python 代码。 source 必须是字符串或代码对象。 如果是字符串,那么该字符串将被解析为一组 Python 语句并随即被执行(除非发生语法错误)。globals()
:
globals()
,返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪里被调用都保持不变。help()
:
help()
help(request)
,启动内置的帮助系统(此函数主要在交互式中使用)。如果没有实参,解释器控制台里会启动交互式帮助系统。如果实参是一个字符串,则在模块、函数、类、方法、关键字或文档主题中搜索该字符串,并在控制台上打印帮助信息。如果实参是其他任意对象,则会生成该对象的帮助页。id()
:
id(object)
,返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的 id() 值。locals()
:
locals()
,返回一个代表当前局部符号表的映射对象,以变量名称作为键,而以其当前绑定的引用作为值。vars()
:
vars()
vars(object)
返回模块、类、实例或任何其他具有 dict 属性的对象的 dict 属性。__import__()
:
__import__(name, globals=None, locals=None, fromlist=(), level=0)
,与 importlib.import_module() 不同,这是一个日常 Python 编程中不需要用到的高级函数。
以上函数基于Python 3.13,后续版本更新可能会有内置函数的更新,请随时参数官方文档。
1.2 库函数(模块)
内置函数能解决的工作场景非常有限,那么怎么办呢, 类似于其他语言,比如:C/C++
,会有include xxx
语句引入其他库,库可以是官方也可以是第3方提供,通过库函数解决的任务场景将大大提高,不需要工程师从头开始写代码,极大的提高了工作效率。
如果要查看当前支持哪些库,可以执行如下的代码:
print(help("modules"))
笔者本地的输出:
Please wait a moment while I gather a list of all available modules...test_sqlite3: testing with SQLite version 3.45.3
__future__ _strptime filecmp rlcompleter
__hello__ _struct fileinput runpy
__phello__ _symtable fnmatch sched
_abc _sysconfig fractions secrets
_aix_support _testbuffer ftplib select
_android_support _testcapi functools selectors
_ast _testclinic gc shelve
_asyncio _testclinic_limited genericpath shlex
_bisect _testconsole getopt shutil
_blake2 _testimportmultiple getpass signal
_bz2 _testinternalcapi gettext site
_codecs _testlimitedcapi glob smtplib
_codecs_cn _testmultiphase graphlib socket
_codecs_hk _testsinglephase gzip socketserver
_codecs_iso2022 _thread hashlib sqlite3
_codecs_jp _threading_local heapq sre_compile
_codecs_kr _tkinter hmac sre_constants
_codecs_tw _tokenize html sre_parse
_collections _tracemalloc http ssl
_collections_abc _typing idlelib stat
_colorize _uuid imaplib statistics
_compat_pickle _warnings importlib string
_compression _weakref inspect stringprep
_contextvars _weakrefset io struct
_csv _winapi ipaddress subprocess
_ctypes _wmi itertools symtable
_ctypes_test _zoneinfo json sys
_datetime abc keyword sysconfig
_decimal antigravity linecache tabnanny
_elementtree argparse locale tarfile
_functools array logging tempfile
_hashlib ast lzma test
_heapq asyncio mailbox textwrap
_imp atexit marshal this
_interpchannels base64 math threading
_interpqueues bdb mimetypes time
_interpreters binascii mmap timeit
_io bisect modulefinder tkinter
_ios_support builtins msvcrt token
_json bz2 multiprocessing tokenize
_locale cProfile netrc tomllib
_lsprof calendar nt trace
_lzma cmath ntpath traceback
_markupbase cmd nturl2path tracemalloc
_md5 code numbers tty
_multibytecodec codecs opcode turtle
_multiprocessing codeop operator turtledemo
_opcode collections optparse types
_opcode_metadata colorsys os typing
_operator compileall pathlib unicodedata
_osx_support concurrent pdb unittest
_overlapped configparser pickle urllib
_pickle contextlib pickletools uuid
_py_abc contextvars pip venv
_pydatetime copy pkgutil warnings
_pydecimal copyreg platform wave
_pyio csv plistlib weakref
_pylong ctypes poplib webbrowser
_pyrepl curses posixpath winreg
_queue dataclasses pprint winsound
_random datetime profile wsgiref
_sha1 dbm pstats xml
_sha2 decimal pty xmlrpc
_sha3 difflib py_compile xxsubtype
_signal dis pyclbr zipapp
_sitebuiltins doctest pydoc zipfile
_socket easygui pydoc_data zipimport
_sqlite3 email pyexpat zlib
_sre encodings queue zoneinfo
_ssl ensurepip quopri 无标题2
_stat enum random
_statistics errno re
_string faulthandler reprlib Enter any module name to get more help. Or, type "modules spam" to search
for modules whose name or summary contain the string "spam".None
🕮说明:每个模块的具体用法,请参考Python官网或模块的官网,如果查看简短的帮助,可以在Python中执行:print(help("easygui"))语句。
1.3 自定义函数
自定义函数的语法格式如下:
def func_name([params]): #可以没有参数干活语句return 返回值 #可以没有返回
- 示例1:返回两数中的较大者
import easygui as eg flds = ['参数1', '参数2'] #配置界面上显示两个参数 defs = ['11', '101'] #两个参数设置默认参数 ipt1, ipt2 = [int(x) for x in eg.multenterbox("请输入两数字:", "输入", flds, defs)]# --------------------------------------------------------------------------- # @fn 返回两者中的大值 # @param[in] para1: 参数1,数字 # @param[in] para2: 参数2,数字 # @return 返回较大者,数字 # @author tyysoft # @date 2025-00-04 13:37:40 # @code py # my_max(1,2) # @encode # --------------------------------------------------------------------------- def my_max(para1, para2):if para1 >= para2:return para1else:return para2print(f'数字:{ipt1}, {ipt2}中较大的是:{my_max(ipt1, ipt2)}') #输出:数字:11, 101中较大的是:101
1.3.1 默认参数
许多内置函数或库函数都带有默认参数,使用默认参数可以让函数的调用更简单,用户不需要每个参数都赋值,减轻工作量,提高效率,那么在自定义函数中,如何给参数设置默认值呢?
def print_list(length = 10):l = [x for x in range(length)]print(l)print_list()
#输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
示例2:两个参数,其中一个参数带默认值
def print_list(step, length = 10):l = [x for x in range(0, length, step)]print(l)print_list(2)
#输出:[0, 2, 4, 6, 8]
🕮说明:一般要求带默认值的参数在参数列表的右侧!
1.3.2 参数收集器
函数定义时,如果参数名前带*
号,表示该参数是收集器,即,函数在调用时,如果输入多个参数,将由这个收集器接收到一个元组中。
1.3.2.1 普通参数收集器
- 示例1:只有一个接收器参数
def func_1(*args):print(f'接收到的参数:{args}')func_1(1, 2, 'string')
#输出:接收到的参数:(1, 2, 'string')
- 示例2:1个普通参数加1个接收器参数
def func_1(arg1, *others):print(f'参数1:{arg1}, 其他参数: {others}')func_1(1, 2, 'string')
#输出:参数1:1, 其他参数: (2, 'string')
1.3.2.2 关键词参数收集器
如果用户稍加留意,部分函数在调用时,会输入参数名和参数值,比如:
#方法1:直接按顺序填写参数
c1 = complex(3.3, 6)
print(f'c1: {c1}')
#方法2:使用参数名输入参数
c2 = complex(imag =6, real = 3.3) #打乱了参数顺序
print(f'c2: {c2}')
在函数定义时使用关键词收集器:
def func_1(**args):print(f'输出参数:{args}')func_1(name='小西瓜', sex='男', age=22)
#输出:输出参数:{'name': '小西瓜', 'sex': '男', 'age': 22}
注:如果函数调用时不指定参数名,则抛出异常:TypeError
1.3.3 传值还是传引用
在C/C++
语言中,存在传递参数副本(传值)和传递参数地址(传引用),传值的方式可以保护参数,即在函数体内对参数修改,函数外部也不会改变,而传引用,在函数体内修改后,函数外部也会改变。
-
示例1:传值,参数不会被函数修改
int_var = 10 float_var = 3.14 str_var = 'python' tup_var = (12, 13) def change_var(int_var, float_var, str_var, tup_var):int_var += 1float_var += 1str_var += ' tutorial'tup_var = (1,2,3,4)print(f'in function: int: {int_var}, float:{float_var}, str:{str_var}, tuple: {tup_var}')#输出:in function: int: 11, float:4.140000000000001, str:python tutorial, tuple: (1, 2, 3, 4) change_var(int_var, float_var, str_var, tup_var) print(f'out of function: int: {int_var}, float:{float_var}, str:{str_var}, tuple: {tup_var}') #输出:out of function: int: 10, float:3.14, str:python, tuple: (12, 13) 参数没有被函数修改!
-
示例2:传引用,参数被函数修改
list_var = [1,2,3] dict_var = {"x":1, "y":2} set_var = {1,2,3} def change_var(list_var, dict_var, set_var):list_var.append(4)dict_var.update(z=3)set_var.add(4)print(f'in function: list: {list_var}, dict: {dict_var}, set: {set_var}')#输出:in function: list: [1, 2, 3, 4], dict: {'x': 1, 'y': 2, 'z': 3}, set: {1, 2, 3, 4} change_var(list_var, dict_var, set_var) print(f'out of function: list: {list_var}, dict: {dict_var}, set: {set_var}') #输出:out of function: list: [1, 2, 3, 4], dict: {'x': 1, 'y': 2, 'z': 3}, set: {1, 2, 3, 4}
1.3.3.1 总结
- 普通数据类型(
整型、浮点型、字符串、元组
),做函数参数时,使用传值方式(函数体内不被修改)。 - 复杂数据类型(
列表、字典、集合
),做函数参数时,使用传引用方式(在函数体内会被修改)。
作者声明:本文用于记录和分享作者的学习心得,水平有限,难免存在表达错误,欢迎交流和指教!
Copyright © 2022~2024 All rights reserved.
相关文章:
Python自学 - 函数初步(内置函数、模块函数、自定义函数)
1 Python自学 - 函数初步(内置函数、模块函数、自定义函数) 1.1 内置函数 几乎所有的编程都会提供一些内置函数,以便完成一些最基本的任务,Python提供了丰富的内置函数,熟悉内置函数可以给工作带来极大便利。 Python官方的内置函数介绍网…...
Mono里运行C#脚本21—mono_image_init_name_cache
前面分析了怎么样加载mscorlib.dll文件,然后把文件数据读取到内存。 接着下来,就会遇到加载整个C#的类型系统,比如System. Object,大体类型如下图所示: 在对CIL编译之前,需要把这些类型全部加载到内存里,以便快捷地访问它们。 mono_image_init_name_cache函数就是完成…...
MySQL中distinct和group by去重的区别
MySQL中distinct和group by去重的区别 在MySQL中,我们经常需要对查询结果进行去重,而DISTINCT和GROUP BY是实现这一功能的两种常见方法。虽然它们在很多情况下可以互换使用,但它们之间还是存在一些差异的。接下来,我们将通过创建测…...
快速上手大模型的对话生成
本项目使用0.5B小模型,结构和大模型别无二致,以方便在如CPU设备上快速学习和上手大模型的对话上传 #mermaid-svg-Z86hUiQZ0hg9BVji {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Z86hUiQZ0h…...
SpringCloud(一)--SpringCloud简介
一. 引言 在微服务架构日益盛行的今天,Spring Cloud凭借其简单易用、功能强大的特性,成为了众多开发者的首选。本文仅为学习所用,联系侵删。 二. SpringCloud概述 2.1 定义 Spring Cloud是一系列框架的有序集合,它巧妙地…...
常见的 Redis 面试题
1. Redis 是什么?它解决了哪些问题? Redis 是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。它主要用于解耦应用程序的不同组件或服务,支持高吞吐量和低延迟的消息传递。解决了系统之间的同步调用导致的性能…...
面试准备备备备
职业技能 放到简历的黄金位置(HR刷选简历的重要参考) 基本准则:写在简历上的必须能聊,不然就别写 参考公式:职业技能 必要技术 其他技术 针对性的引导面试官(让他问一些你想让他问的) 寻找合…...
GeoIP + Nginx:实现网站的地域访问控制
1. 引言 在全球化的互联网环境中,地域访问控制已成为许多企业和个人网站管理的重要需求。通过限制特定地区的访问,网站管理员可以保护资源、提高安全性并优化用户体验。本文将介绍如何使用GeoIP和Nginx实现地域访问控制,并提供两种情况的详细…...
打造三甲医院人工智能矩阵新引擎(一):文本大模型篇--基于GPT-4o的探索
一、引言 当今时代,人工智能技术正以前所未有的速度蓬勃发展,深刻且广泛地渗透至各个领域,医疗行业更是这场变革的前沿阵地。在人口老龄化加剧、慢性疾病患病率上升以及人们对健康需求日益增长的大背景下,三甲医院作为医疗体系的核…...
算法题之将列表的数据复制到另一个列表中
方法一:for循环遍历list1中的每个元素append方法将元素逐个添加到list2列表中 list1 [‘q’,‘efe’,‘reb’,‘yhh’,2]list2 []for i in list1:list2.append(i) print(list2) 方法二:python列表自带copy方法,调用copy方法可以得到原列表的…...
Docker图形化界面工具Portainer最佳实践
前言 安装Portainer 实践-基于Portainer安装redis-sentinel部署 Spring Boot集成Redis Sentinel 前言 本篇文章笔者推荐一个笔者最常用的docker图形化管理工具——Portainer。 安装Portainer 编写docker-compose文件 Portainer部署的步骤比较简单,我们还是以…...
在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件
在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…...
栈及栈的操作
栈及栈的操作 栈结构 栈是一种只能在一端进行插入或删除操作的数据结构。栈有两个基本的操作:入栈和出栈。 入栈:将一个新的元素放到栈顶。 出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。栈的操作规则:LIFO(Last…...
YOLOv10-1.1部分代码阅读笔记-utils.py
utils.py ultralytics\nn\modules\utils.py 目录 utils.py 1.所需的库和模块 2.def _get_clones(module, n): 3.def bias_init_with_prob(prior_prob0.01): 4.def linear_init(module): 5.def inverse_sigmoid(x, eps1e-5): 6.def multi_scale_deformable_attn_py…...
JDK8源码分析Jdk动态代理底层原理
本文侧重分析JDK8中jdk动态代理的源码,若是想看JDK17源码分析可以看我的这一篇文章 JDK17源码分析Jdk动态代理底层原理-CSDN博客 两者之间有着略微的差别,JDK17在JDK8上改进了不少 目录 源码分析 过程 生成的代理类大致结构 本文侧重分析JDK8中jdk…...
springboot配置并使用RestTemplate
目录 一、RestTemplate配置 1、将RestTemplate初始化为Bean 2、使用HttpClient作为RestTemplate客户端 (1)引入HttpClient依赖 (2)修改RestTemplate配置类 3、设置拦截器 (1)新增拦截器类 …...
【MySQL关于数据库和表结构的增删查改】
数据库和表结构的基本语法 数据库命令关于字符集语法 表操作语法创建表查看表结构修改表修改表名增加字段同时修改字段名和字段数据类型仅修改字段数据类型删除字段 删除表 备份和恢复备份恢复 mysql -h 127.0.0.1 -P 3306 -u root -p mysql -u root -h 和 -p 默认 进入MySQL程…...
Linux 服务器启用 DNS 加密
DNS 加密的常用协议包括 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 DNSCrypt。以下是实现这些加密的步骤和工具建议: 1. 使用 DoH (DNS over HTTPS) 工具推荐: cloudflared(Cloudflare 提供的客户端)doh-client(…...
2025年,测试技能支棱起来。
你是否曾为提升自己的测试技能而烦恼?在这个日新月异的技术时代,2025年已经悄然而至,软件测试行业的需求和挑战也在不断变化。那么,如何在这个竞争激烈的环境中脱颖而出,成为一名更加优秀的测试工程师呢? …...
HTML5实现好看的二十四节气网页源码
HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码,春季节气…...
每天你好20250103(距离春节26天!!!)
亲爱的朋友们,大家早上好! 🌞 今天是 1 月 3 日,星期五,2025 年的第三天,同时也是第 1 周的第五天,农历乙巳[蛇]年十一月十四日。祥龙辞岁去,瑞蛇迎春来,在这曙光初照的…...
【音频伴奏分离】UVR5软件介绍
Ultimate Vocal Remover 5 (UVR5) 是一款功能强大的AI人声伴奏音频分离软件,它能够利用深度学习模型从音频文件中分离出人声和伴奏。UVR5在音乐制作、音频编辑、学习等多种场景中都非常有用。以下是UVR5的一些主要特点和使用方法: 主要特点:…...
安卓触摸事件的传递
setOnTouchListener()返回值的副作用(触摸事件是否继续往下或往后传递)如下: 返回值效果是否往下层view传递是否往当前view的后续监听传递true该pointer离开屏幕前的后续所有触摸事件都会传递给该TouchListener否否false该pointer离开屏幕前…...
51c视觉~合集40
我自己的原文哦~ https://blog.51cto.com/whaosoft/12951385 #SparX 港大提出SparX:强化Vision Mamba和Transformer的稀疏跳跃连接机制 本文分享香港大学计算和数据科学学院俞益洲教授及其研究团队发表于 AAAI 2025 的论文——SparX,一种强化 Visio…...
25年1月更新。一图流Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)
引言 随着 Python 在数据科学、Web 开发、自动化脚本等多个领域的广泛应用,越来越多的开发者选择它作为首选编程语言。而 PyCharm 作为一个功能强大的集成开发环境(IDE),为 Python 开发者提供了极大的便利。本文将详细介绍如何在 …...
C# 设计模式的六大原则(SOLID)
C# 设计模式的六大原则(SOLID) 引言 在面向对象编程中,设计模式提供了高效、可复用和可维护的代码结构。SOLID原则是软件设计中的一组重要原则,用于确保代码具有良好的可维护性、可扩展性和灵活性。SOLID是五个设计原则的首字母…...
MQ-导读
什么是MQ? MQ是一款消息中间件,通常被称为"消息队列",用于分布式架构中上下文的异步通信。 举个例子 就拿登录来说,用户在登录的时候需要去进行一些其他的操作,比如风控、短信、记录日志,如果采用同步的方式…...
Spring MVC的@ResponseBody与@RequestBody
ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。 RequestBody注解用于读取http请求的内容(字符串),通过springmv…...
常见硬件及其对应的驱动模块列表
常见硬件及其对应的驱动模块列表 1. 电机类 硬件设备驱动模块功能步进电机ULN2003、A4988、DRV8825提供电流和电压,控制步进和方向直流电机L298N、L293D、TB6612FNG提供双向电流控制,实现正反转和调速伺服电机无(直接 PWM 控制)控…...
IDEA开发Java应用的初始化设置
一、插件安装 如下图所示: 1、Alibaba Java Coding Guidelines 2.1.1 阿里开发者规范,可以帮忙本地自动扫描出不符合开发者规范的代码,甚至是代码漏洞提示。 右击项目,选择《编码规约扫描》,可以进行本地代码规范扫…...
系统架构师考试-ABSD基于架构的设计方法
概念 ABSD是体系结构驱动,是指构成体系结构的软件构件和类的组合驱动的。 ABSD强调由商业、质量和功能需求的组合驱动软件架构设计。使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,并且设计活动的开始并不意味着需求抽取和分析活…...
Node.js入门html,css,js 30年了nodejs环境 09年出现 15
Node.js入门 html,css,js 30年了 nodejs环境 09年出现 15年 nodejs为我们解决了2个方面的问题: 【锦上添花】让我们前端工程师拥有了后端开发能力(开接口,访问数据库) - 大公司BFF(50)【✔️】前端工程…...
2025跨年倒计时
<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2025年跨年倒计时</title><style>/* 页…...
淘宝京东电商商品SKU信息抓取API测试实战指南
在电商平台的商品管理中,SKU(Stock Keeping Unit,库存单位)信息扮演着至关重要的角色。它不仅关乎商品的库存管理,还直接影响到消费者的购买决策。为了高效地获取并验证电商平台(如淘宝、京东)上…...
SAP财务凭证的更改、冲销的方式
文章目录 一、财务凭证更改二、财务凭证冲销 【SAP系统研究】 #SAP #FICO #SAP财务 一、财务凭证更改 (1)已经过账的财务凭证 FB02:过完帐的允许更改的地方有限,只有凭证抬头文本、参照、分配、文本、原因代码等。 ࿰…...
RepPoints: Point Set Representation for Object Detection
CornerNet论文阅读整理-CSDN博客 可变形卷积(Deformable Conv)原理解析与torch代码实现-CSDN博客 RepPoints(本质是可变形卷积DCN)再理解-CSDN博客 简介: 时间:2019 会议:ICCV 作者:Ze Yang,Shaohui Liu,…...
高效使用AI完成编程项目任务的指南:从需求分析到功能实现
随着人工智能工具的普及,即便是零编程基础或基础薄弱的用户,也可以借助AI完成许多技术任务。然而,要高效地使用AI完成编程任务,关键在于如何清晰表达需求,并逐步引导AI实现目标。 在本文中,我们将通过开发…...
Linux命令——RPM与yum
文章目录 一、RPM包命令1.安装和升级包2.删除包3.查询包信息4.验证和检查5.其他操作 二、yum安装器1.安装包2.更新包3.卸载包4.查询和搜索5.清理缓存6.其他操作 一、RPM包命令 1.安装和升级包 命令解释rpm -ivh package.rpm安装一个 RPM 包,显示详细信息和进度条r…...
C++软件设计模式之责任链模式
责任链模式的动机与意图 动机: 在软件开发中,经常会遇到需要处理一系列请求或事件的情况。这些请求可能需要经过多个处理对象,每个对象根据其职责决定是否处理请求或将其传递给下一个对象。责任链模式(Chain of Responsibility P…...
Spring Cloud Security集成JWT 快速入门Demo
一、介绍 JWT (JSON Web Token) 是一种带有绑实和信息的简单标准化机制,在信息通信中用于验证和信息传递。尤其在应用中使用Spring Cloud实现分布式构建时,JWT可以作为一种无状态验证原理的证明。 本文将进一步描述如何在Spring Cloud Security中集成JW…...
Python 爬虫
一、创建项目 1.双击打开pycharm,点击新建项目 2.项目设置- 勾选[继承全局站点软件包]- 勾选[可用于所有项目]- 取消勾选[创建main.py欢迎脚本]- 点击创建 3.项目名称右键--新建--python文件 4.输入文件名--回车二、编辑代码 # 导入请求模块 import requests # 如…...
【PCIe 总线及设备入门学习专栏 4.1 -- PCI 总线的地址空间分配】
文章目录 Overview 本文转自:https://blog.chinaaet.com/justlxy/p/5100053219 Overview PCI 总线具有32位数据/地址复用总线,所以其存储地址空间为 2324GB。也就是PCI上的所有设备共同映射到这4GB上,每个PCI设备占用唯一的一段PCI地址&…...
虚拟电厂搭建指南:绿虫仿真设计软件的助力
在虚拟电厂的搭建中,绿虫仿真设计软件起着重要作用。 绿虫光伏仿真软件是一款综合性辅助工具,能为虚拟电厂中的光伏项目提供精准数据支持。它所提供的项目选址地气象数据,涵盖海拔、辐照、风速、温度等,数据源为 Meteonorm &…...
开源漏洞管理工具--Faraday
前言 在现代安全领域,面临着两个主要的挑战:一是设计出智能化的方式来获取新信息,二是有效地跟踪和管理发现的内容,以便不断改善修复工作。为了解决这些问题,Faraday应运而生,它能够帮助您专注于漏洞的发现…...
一、EF框架的Database First开发模式(数据库优先)
Database First开发模式(数据库优先) Database First是Entity Framework(EF)的三种开发模式之一,适用于在已有数据库的情况下进行开发。其核心思想是从现有数据库中逆向生成实体类和映射文件,然后在此基础上进行开发。 官方…...
Datawhale AI冬令营(第二期)动手学AI Agent task2--学Prompt工程,优化Agent效果
目录 如何写好Prompt? 工具包神器1:Prompt框架——CO-STAR 框架 工具包神器2:Prompt结构优化 工具包神器3:引入案例 案例:构建虚拟女友小冰 1. 按照 CO-STAR框架 梳理目标 2. 撰写Prompt 3. 制作对话生成应用&…...
Go IO之文件处理,TCPUDP讲解
文章目录 1 文件处理1.1 打开和关闭文件1.2 读取文件1.2.1 简单示例1.2.2 中文乱码1.2.2.1 bufio1.2.2.2 ioutil 1.3 写入文件1.3.1 Write 和 WriteString1.3.2 fmt.Fprintln1.3.2.1 写入文件1.3.2.2 写入标准输出 1.3.3 bufio.NewWriter1.3.4 ioutil.WriteFile 2 TCP&UDP2…...
[卫星遥感] 解密卫星目标跟踪:挑战与突破的深度剖析
目录 [卫星遥感] 解密卫星目标跟踪:挑战与突破的深度剖析 1. 卫星目标跟踪的核心挑战 1.1 目标的高速与不确定性 1.2 卫星传感器的局限性 1.3 数据处理与融合问题 1.4 大尺度与实时性要求 2. 当前卫星目标跟踪的主流技术 2.1 卡尔曼滤波(Kalman …...
U盘提示格式化?原因、恢复方案与预防措施全解析
一、U盘提示格式化现象概述 在日常使用U盘的过程中,我们有时会遇到一个令人头疼的问题——U盘插入电脑后,系统却弹出一个提示框,告知我们U盘需要格式化才能访问。这个提示往往伴随着数据的潜在丢失风险,让我们不禁为之心焦。U盘提…...
Vuex中dispatch的用法
在 Vuex 中,dispatch 是用于触发 actions 的方法,它的主要作用是调用一个 action 并可以传递一些参数。以下是关于 dispatch 的详细解释: 基本语法 dispatch(type, payload)type:要调用的 action 的名称,它是一个字符…...