欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python函數(shù)基礎(chǔ)(定義函數(shù)、函數(shù)參數(shù)、匿名函數(shù))

 更新時(shí)間:2022年05月28日 14:32:53   作者:springsnow  
這篇文章介紹了Python函數(shù)的基礎(chǔ)用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

函數(shù)先定義函數(shù),后調(diào)用

一、定義函數(shù):

1、簡(jiǎn)單的規(guī)則:

  • 函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào) ()。
  • 任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)。
  • 函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
  • 函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。
  • return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。

2、語法

Python 定義函數(shù)使用 def 關(guān)鍵字

默認(rèn)情況下,參數(shù)值和參數(shù)名稱是按函數(shù)聲明中定義的順序匹配起來的。

def 函數(shù)名(param1,param2……):
"""
函數(shù)功能的描述信息
:param1:描述
:param2:描述
:return:返回值
"""
code
...
return 返回值

3、無參函數(shù)

def register():
    """注冊(cè)功能"""
    username = input('username: ').strip()
    pwd = input('password: ').strip()

    with open('32.txt', 'a', encoding='utf8') as fa:
        fa.write(f"{username}:{pwd}\n")
        fa.flush()

4、有參函數(shù)

def sum_self(x, y):
    """求和"""
    res = x+y
    print(res)

sum_self(1,2)  # 3

5、空函數(shù)

你只知道你需要實(shí)現(xiàn)某個(gè)功能,但不知道該如何用代碼實(shí)現(xiàn)時(shí),你可以暫時(shí)寫個(gè)空函數(shù)

def func():
    pass

二、調(diào)用函數(shù)及返回值

定義一個(gè)函數(shù):給了函數(shù)一個(gè)名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。

這個(gè)函數(shù)的基本結(jié)構(gòu)完成以后,你可以通過另一個(gè)函數(shù)調(diào)用執(zhí)行,也可以直接從 Python 命令提示符執(zhí)行。

函數(shù)名(param1、param2……)

如:

register()

1、函數(shù)運(yùn)行完畢所有代碼,如果函數(shù)體不寫return,則會(huì)返回None。

def foo():
    pass

print(foo()) #None

2、函數(shù)可以返回一個(gè)或多個(gè)值(元組類型)

def func():
    name = 'nick'
    age = 19
    hobby_list = ['read', 'run']
    return name, age, hobby_list


name, age, hobby_list = func()
print(name,age,hobby_list) #('nick', 19, ['read', 'run'])

三、函數(shù)的參數(shù)

1、普通參數(shù),位置必需參數(shù)

在函數(shù)定義階段,按照從左到右的順序依次定義的形參,稱之為位置形參。

特點(diǎn):按照位置定義的形參,都必須被傳值,多一個(gè)不行,少一個(gè)也不行。

def func(x, y):
    print(x)
    print(y)

在函數(shù)調(diào)用階段,按照從左到右的順序依次定義的實(shí)參,稱之為位置實(shí)參。

特點(diǎn):按照位置為對(duì)應(yīng)的形參依次傳值。

func(1, 2)

2、關(guān)鍵字參數(shù)

在調(diào)用函數(shù)時(shí),按照key=value的形式為指定的參數(shù)傳值,稱為關(guān)鍵字實(shí)參。

特點(diǎn):可以打破位置的限制,但仍能為指定的形參賦值。

func(y=2, x=1)
  • 可以混用位置實(shí)參和關(guān)鍵字實(shí)參,但是位置實(shí)參必須在關(guān)鍵字實(shí)參的左邊。
  • 可以混用位置實(shí)參和關(guān)鍵字實(shí)參,但不能對(duì)一個(gè)形參重復(fù)賦值。
func(x, y=2)
func(y=2, x)  # SyntaxError: positional argument follows keyword argument
func(x, x=1)  # NameError: name 'x' is not defined

3、默認(rèn)參數(shù)

在定義階段,就已經(jīng)被賦值。意味著在調(diào)用時(shí)可以不用為其賦值。位置形參必須放在默認(rèn)形參的左邊。

def func(x, y=10):
    print(x)
    print(y)
    
func(2)

默認(rèn)形參的值只在定義階段賦值一次,也就是說默認(rèn)參數(shù)的值在函數(shù)定義階段就已經(jīng)固定了。

m = 10

def foo(x=m):
    print(x)

m = 111
foo()  # 10

默認(rèn)參數(shù)的值通常應(yīng)該是不可變類型。

def register(name, hobby, hobby_list=None):
    hobby_list = [hobby]
    print(f"{name} prefer {hobby_list}")


register('nick', 'read')  # ['read']
register('tank', 'zuipao')  # [ 'zuipao']
register('jason', 'piao')  # ['piao']

# 演示形參是可變類型,(列表是可變類型)
def register(name, hobby, hobby_list=None):
    hobby_list = [hobby]
    print(f"{name} prefer {hobby_list}")


register('nick', 'read')  # nick prefer ['read']
register('tank', 'zuipao')  # tank prefer ['zuipao']
register('jason', 'piao')  # jason prefer ['piao']o']

4、不定長(zhǎng)參數(shù)之*

形參中的*會(huì)將溢出的位置實(shí)參全部接收,然后存儲(chǔ)元組的形式,然后把元組賦值給*后的參數(shù)。需要注意的是:*后的參數(shù)名約定俗成為args。

def sum_self( *args):
    res = 0
    for num in args:
        res += num
    return res


res = sum_self(1, 2, 3, 4)
print(res)  # 10

注意:實(shí)參之*

實(shí)參中的*,*會(huì)將*后參數(shù)的值循環(huán)取出,打散成位置實(shí)參。以后但凡碰到實(shí)參中帶*的,它就是位置實(shí)參,應(yīng)該馬上打散成位置實(shí)參去看。

def func(x, y, z, *args):
    print(x, y, z, args)


func(1, *(1, 2) , 3, 4)  # 1 1 2 (3, 4)

5、不定長(zhǎng)參數(shù)之**

形參中的**會(huì)將溢出的關(guān)鍵字實(shí)參全部接收,然后存儲(chǔ)字典的形式,然后把字典賦值給**后的參數(shù)。需要注意的是:**后的參數(shù)名約定俗成為kwargs。

def func( **kwargw):
    print(kwargw)


func(a=5,b=3)  # {'a': 5, 'b': 3}

注意:實(shí)參之**

實(shí)參中的**,**會(huì)將**后參數(shù)的值循環(huán)取出,打散成關(guān)鍵字實(shí)參。以后但凡碰到實(shí)參中帶**的,它就是關(guān)鍵字實(shí)參,應(yīng)該馬上打散成關(guān)鍵字實(shí)參去看。

def func(x, y, z, **kwargs):
    print(x, y, z, kwargs)


func(1, 3, 4, **{'a': 1, 'b': 2} )  # 1 3 4 {'a': 1, 'b': 2}

可變長(zhǎng)參數(shù)應(yīng)用

def index(name, age, sex):
    print(f"name: {name}, age: {age}, sex: {sex}")  # name: nick, age: 19, sex: male


def wrapper(*args, **kwargs):
    print(f"args: {args}")  # args: ()
    print(f"kwargs: {kwargs}")  # kwargs: {'name': 'nick', 'sex': 'male', 'age': 19}
    index( *args, **kwargs)


wrapper(name='nick', sex='male', age=19)

6、命名關(guān)鍵字參數(shù)

命名關(guān)鍵字則是在「位置參數(shù)」和「命名關(guān)鍵字參數(shù)」中使用,*,隔開,后面的即為命名關(guān)鍵字。* 后的參數(shù)必須用關(guān)鍵字傳入。

def student(name, age, *, city, gender):
    print(name, age, city, gender)


student('xiaoming', 6, city='beijing', gender='male')  # xiaoming 6 beijing male
student('xiaoming', 6, 'beijing', 'male') #TypeError: student() takes 2 positional arguments but 4 were given

特點(diǎn):在傳值時(shí),必須按照key=value的方式傳值,并且key必須命名關(guān)鍵字參數(shù)的指定的參數(shù)名。

def register(x, y, *, name, gender='male', age):
    print(x)
    print(name)
    print(age)


register(1, 2, name1='nick', age=19)  # TypeError: register() got an unexpected keyword argument 'name1'

Python3.8 新增了一個(gè)函數(shù)形參語法, “/” 用來指明函數(shù)形參必須使用指定位置參數(shù),不能使用關(guān)鍵字參數(shù)的形式。

在以下的例子中,形參 a 和 b 必須使用指定位置參數(shù),c 或 d 可以是位置形參或關(guān)鍵字形參,而 e 或 f 要求為關(guān)鍵字形參:

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

以下使用方法是正確的:

f(10, 20, 30, d=40, e=50, f=60)

四、函數(shù)對(duì)象

函數(shù)是第一類對(duì)象,即函數(shù)可以被當(dāng)做數(shù)據(jù)處理。

def func():
    print('from func')


print(func)  #

1、函數(shù)當(dāng)作參數(shù)傳給一個(gè)另一函數(shù)

def func():
    print('from func')


def foo(m):
    m()


foo(func)  # from func

2、函數(shù)當(dāng)作另一函數(shù)的返回值

def func():
    print('from func')


def foo(x):
    return x


res = foo(func)
print(res)  #

3、函數(shù)可以當(dāng)作容器類型的元素

def func():
    print('from func')


function_list = [func]
function_list[0]()  # from func

五、函數(shù)遞歸

遞歸的精髓在于通過不斷地重復(fù)逼近一個(gè)最終的結(jié)果。

age(1)=26,age(n)=age(n-1)+2 ,求age(5)的值:

'''
...
age(5) = age(4) + 2
age(4) = age(3) + 2
age(3) = age(2) + 2
age(2) = age(1) + 2
age(1) = 26


age(n) = age(n-1) +2 
age(1) = 26  # n=1
'''


def age(n):
    if n == 1:
        return 26
    res = age(n-1) + 2
    return res


print(f"age(5): {age(5)}")

遞歸的本質(zhì)就是干重復(fù)的活。

lis = [1, [2, [3, [4, [5, [6, ]]]]]]


def tell(lis):
    for i in lis:
        if type(i) is list:
            tell(i)
        else:
            print(i)


tell(lis)

二分法的思想實(shí)現(xiàn)查找數(shù)字。

from random import randint

nums = [randint(1, 100) for i in range(100)]
nums = sorted(nums)


def search(search_num, nums):
    print(nums)
    mid_index = len(nums) // 2
    if not nums:
        print('not exists')
        return
    if search_num > nums[mid_index]:
        # in the right
        nums = nums[mid_index + 1:]
        search(search_num, nums)
    elif search_num < nums[mid_index]:
        # in the left
        nums = nums[:mid_index]
        search(search_num, nums)
    else:
        print('find it')


search(7, nums)

六、匿名函數(shù):

python 使用 lambda 來創(chuàng)建匿名函數(shù)。

所謂匿名,意即不再使用 def 語句這樣標(biāo)準(zhǔn)的形式定義一個(gè)函數(shù)。

  • lambda 只是一個(gè)表達(dá)式,函數(shù)體比 def 簡(jiǎn)單很多。
  • lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
  • lambda 函數(shù)擁有自己的命名空間,且不能訪問自己參數(shù)列表之外或全局命名空間里的參數(shù)。
  • 雖然lambda函數(shù)看起來只能寫一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時(shí)不占用棧內(nèi)存從而增加運(yùn)行效率。

1、語法

lamdbda 參數(shù) : 邏輯代碼

# 可寫函數(shù)說明
sum = lambda arg1, arg2: arg1 + arg2
 
# 調(diào)用sum函數(shù)
print ("相加后的值為 : ", sum( 10, 20 ))
print ("相加后的值為 : ", sum( 20, 20 ))

匿名函數(shù),他沒有綁定名字,使用一次即被收回,加括號(hào)既可以運(yùn)行。

print(lambda x, y: x + y )  # (x, y)>
res = (lambda x, y: x + y)(1, 2)
print(res)  # 3

lambda 匿名函數(shù)也是可以使用"關(guān)鍵字參數(shù)"進(jìn)行參數(shù)傳遞,也可以設(shè)定默認(rèn)值。

g = lambda x=0, y=0: x ** 2 + y ** 2
print(g(2, 3))
# 13
print(g(2))
# 4
print(g(y=3))
# 9

2、與內(nèi)置函數(shù)聯(lián)用

匿名函數(shù)通常與max()、sorted()、filter()、sorted()方法聯(lián)用。

1.max()

如果我們想從上述字典中取出薪資最高的人,我們可以使用max()方法,但是max()默認(rèn)比較的是字典的key。

  • 首先將可迭代對(duì)象變成迭代器對(duì)象
  • res=next(迭代器對(duì)象),將res當(dāng)做參數(shù)傳給key指定的函數(shù),然后將該函數(shù)的返回值當(dāng)做判斷依據(jù)
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}

print(max(salary_dict))  # tank


def func(k):
    return salary_dict[k]


print(max(salary_dict, key=func))  # jason
print(max(salary_dict, key=lambda name: salary_dict[name] ) )  # jason  匿名函數(shù)

2.sorted()

如果我們想對(duì)上述字典中的人,按照薪資從大到小排序,可以使用sorted()方法。

  • 首先將可迭代對(duì)象變成迭代器對(duì)象
  • res=next(迭代器對(duì)象),將res當(dāng)做參數(shù)傳給第一個(gè)參數(shù)指定的函數(shù),然后將該函數(shù)的返回值當(dāng)做判斷依據(jù)。
lis = [1, 3, 2, 5, 8, 6]
sorted(lis)
print(lis)  # [1, 3, 2, 5, 8, 6]
print(sorted(lis, reverse=True))  # [8, 6, 5, 3, 2, 1]

salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}

print(sorted(salary_dict, key=lambda name: salary_dict[name] ))  # ['sean', 'nick', 'tank', 'jason']

3.map()

如果我們想對(duì)一個(gè)列表中的某個(gè)人名做處理,可以使用map()方法。

  • 首先將可迭代對(duì)象變成迭代器對(duì)象
  • res=next(迭代器對(duì)象),將res當(dāng)做參數(shù)傳給第一個(gè)參數(shù)指定的函數(shù),然后將該函數(shù)的返回值作為map()方法的結(jié)果之一。
name_list = ['jason', 'tank', 'sean']

res = map(lambda name: f"{name} sb", name_list)
print(list(res))  # ['jason sb', 'tank sb', 'sean sb']

4.filter()

如果我們想篩選除名字中含有'sb'的名字,我們可以使用filter()方法。

  • 首先將可迭代對(duì)象變成迭代器對(duì)象
  • res=next(迭代器對(duì)象),將res當(dāng)做參數(shù)傳給第一個(gè)參數(shù)指定的函數(shù),然后filter會(huì)判斷函數(shù)的返回值的真假,如果為真則留下。
name_list = ['nick', 'jason sb', 'tank sb', 'sean sb']

filter_res = filter(lambda name: name.endswith('sb'), name_list)
print(list(filter_res))  # ['jason sb', 'tank sb', 'sean sb']

七、內(nèi)置函數(shù)

共68個(gè):

abs()、 all()、 any()、 ascii()、 bin()、 bool()、 bytearray()、 bytes()、 callable()、 chr()、 classmethod()、 compile()、 complex()、 delattr()、 
dict()、 dir()、 divmod()、 enumerate()、 eval()、 exec()、 filter()、 float()、 format()、 frozenset()、 getattr()、 globals()、 hasattr()、 hash()、 
help()、 hex()、 id()、 input()、 int()、 isinstance()、 issubclass()、 iter()、 len()、 list()、 locals()、 map()、 max()、 memoryview()、 
min()、 next()、 object()、 oct()、 open()、 ord()、 pow()、 print()、 property()、 range()、 repr()、 reversed()、 round()、 set()、 
setattr()、 slice()、 sorted()、 staticmethod()、 str()、 sum()、 super()、 tuple()、 type()、 vars()、 zip()、 __import__()、

1.bytes():解碼字符。

res = '你好'.encode('utf8')
print(res)  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
res = bytes('你好', encoding='utf8')
print(res)  # b'\xe4\xbd\xa0\xe5\xa5\xbd'

2.chr()/ord():chr()參考ASCII碼表將數(shù)字轉(zhuǎn)成對(duì)應(yīng)字符;ord()將字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字。

print(chr(65)) #A
print(ord('A')) #65

3.divmod():分欄。

print(divmod(10, 3)) #(3, 1)

4.enumerate():帶有索引的迭代。

l = ['a', 'b', 'c']
for i in enumerate(l):
    print(i)

# (0, 'a')
# (1, 'b')
# (2, 'c')

5.eval():把字符串翻譯成數(shù)據(jù)類型。

lis = '[1,2,3]'
lis_eval = eval(lis)
print(lis_eval) #[1, 2, 3]

6.hash():是否可哈希。

print(hash(1)) #1

7.abs():求絕對(duì)值。

print(abs(-13))  # 13

8.all():可迭代對(duì)象內(nèi)元素全為真,則返回真。

print(all([1, 2, 3, 0])) #False
print(all([])) #True

9.any():可迭代對(duì)象中有一元素為真,則為真。

print(any([1, 2, 3, 0])) #True
print(any([])) #False

10.bin()/oct()/hex():二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換。

print(bin(17)) #0b10001
print(oct(17)) #0o21
print(hex(17)) #0x11

11.dir():列舉出所有time的功能。

import time
print(dir(time))
# ['_STRUCT_TM_ITEMS', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime', 'monotonic', 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']

12.frozenset():不可變集合。

s = frozenset({1, 2, 3})
print(s) #({1, 2, 3})

13.globals()/loacals():查看全局名字;查看局部名字。

# print(globals())
def func():
    a = 1
    #     print(globals())
    print(locals())


func()  # {'a': 1}

14.pow():

print(pow(3, 2, 3))  # (3**2)%3 =0

15.round():

print(round(3.5)) #4

16.slice():

lis = ['a', 'b', 'c']
s = slice(1, 4, 1)
print(lis[s]) #['b', 'c']
# print(lis[1:4:1])

17.sum():

print(sum(range(100))) #4950

18.__import__():通過字符串導(dǎo)入模塊。

m = __import__('time')
print(m.time()) #1556607502.334777

19. 面向?qū)ο笾R(shí)點(diǎn)

  • classmethod
  • staticmethod
  • property
  • delattr
  • hasattr
  • getattr
  • setattr
  • isinstance()
  • issubclass()
  • object()
  • super()

到此這篇關(guān)于Python函數(shù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python之PyMongo使用總結(jié)

    python之PyMongo使用總結(jié)

    本篇文章主要介紹了python之PyMongo使用總結(jié),詳細(xì)的介紹了PyMongo模塊的使用,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-05-05
  • 如何使用Python獲取昨天的日期

    如何使用Python獲取昨天的日期

    Python 是一種高級(jí)語言,可用于數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí),以使用 Python 的數(shù)據(jù)結(jié)構(gòu)訓(xùn)練 AI,它用于編寫各種應(yīng)用程序,從 Web 和桌面到操作系統(tǒng)級(jí)程序,這篇文章主要介紹了在 Python 中獲取昨天的日期,需要的朋友可以參考下
    2023-05-05
  • Anaconda安裝opencv庫詳細(xì)圖文教程

    Anaconda安裝opencv庫詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于Anaconda安裝opencv庫詳細(xì)圖文教程的相關(guān)資料,安裝Anaconda后,你可以使用conda命令在Anaconda環(huán)境中安裝OpenCV,文中有詳細(xì)步驟,需要的朋友可以參考下
    2023-07-07
  • Python執(zhí)行dos和Linux命令的方法詳解

    Python執(zhí)行dos和Linux命令的方法詳解

    在實(shí)際開發(fā)中,有時(shí)為了方便,可能需要執(zhí)行dos命令或者Linux命令。比如說執(zhí)行某些shell腳本,上傳下載一些文件等。本文總結(jié)了一些Python執(zhí)行dos和Linux命令的方法,需要的可以了解一下
    2022-10-10
  • Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索

    Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索

    這篇文章主要介紹了Django如何利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索,幫助大家更好的理解和學(xué)習(xí)使用Django框架,感興趣的朋友可以了解下
    2021-05-05
  • python學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)實(shí)例代碼

    python學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)實(shí)例代碼

    數(shù)據(jù)結(jié)構(gòu)就是用來將數(shù)據(jù)組織在一起的結(jié)構(gòu)。換句話說,數(shù)據(jù)結(jié)構(gòu)是用來存儲(chǔ)一系列關(guān)聯(lián)數(shù)據(jù)的東西。在Python中有四種內(nèi)建的數(shù)據(jù)結(jié)構(gòu),分別是List、Tuple、Dictionary以及Set。本文將通過實(shí)例來介紹這些數(shù)據(jù)結(jié)構(gòu)的用法。
    2015-05-05
  • Python獲取指定日期是"星期幾"的6種方法

    Python獲取指定日期是"星期幾"的6種方法

    在Python進(jìn)行數(shù)據(jù)分析時(shí),按照日期進(jìn)行分組匯總也是被需要的,比如會(huì)找到銷量的周期性規(guī)律。本文將以2022-02-22為例,演示Python獲取指定日期是“星期幾”的6種方法,需要的可以參考一下
    2022-03-03
  • python中的json總結(jié)

    python中的json總結(jié)

    JSON(JavaScript Object Notation, JS 對(duì)象簡(jiǎn)譜) 是一種輕量級(jí)的數(shù)據(jù)交換格式。本文重點(diǎn)給大家介紹python中的json,感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • 完美處理python與anaconda環(huán)境變量的沖突問題

    完美處理python與anaconda環(huán)境變量的沖突問題

    這篇文章主要介紹了完美處理Python與anaconda環(huán)境變量的沖突問題,對(duì)anaconda感興趣的同學(xué),可以參考下
    2021-04-04
  • Python接口自動(dòng)化淺析logging日志原理及模塊操作流程

    Python接口自動(dòng)化淺析logging日志原理及模塊操作流程

    這篇文章主要為大家介紹了Python接口自動(dòng)化系列文章淺析logging日志原理及模塊操作流程,文中詳細(xì)說明了為什么需要日志?日志是什么?以及日志用途等基本的原理
    2021-08-08

最新評(píng)論