函数是Python里组织代码的最小单元,Python函数包含以下几个部分:

  • 定义函数
  • 调用函数
  • 参数
  • 函数的返回值
  • 函数的嵌套
  • 作用域
  • 函数执行流程
  • 递归函数
  • 匿名函数
  • 生成器
  • 高阶函数

定义函数

def add(x, y):     # 函数定义 def 表示定义一个函数, 紧接着是函数名 函数名后面用一对小括号列出参数列表,参数列表后面使用一个冒号开始函数体print(x + y)   # 函数体是正常的Python语句,可以包含任意结构return  x + y  # return 语句表示函数的返回值

函数是有输入(参数)和输出(返回值)的代码单元, 把输入转化为输出

调用函数

定义函数的时候,并不会执行函数体, 当调用函数的时候,才会执行其中的语句块

In [1]: def add(x, y):     # 函数定义 def 表示定义一个函数, 紧接着是函数名 函数名后面用一对小括号...:         print(x + y)   # 函数体是正常的Python语句,可以包含任意结构...:         return  x + y  # return 语句表示函数的返回值...: In [2]: add(3, 5) # 函数使用函数名来调用,函数名后紧跟一对小括号,小括号里传入函数定义时的参数
8
Out[2]: 8In [3]: add(3, 4, 5) # 传入参数必须和函数定义时的参数相匹配,如果不匹配,会抛出TypeError
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-a11d83d1db7e> in <module>()
----> 1 add(3, 4, 5)TypeError: add() takes 2 positional arguments but 3 were given

参数

传参方式

In [5]: def add(x, y):...:     ret = x + y...:     print('{} + {} = {}'.format(x, y, x+y))...:     return ret...: In [6]: add(3, 5) #参数按照定义的顺序传入,这样的传参方法叫做位置参数
3 + 5 = 8
Out[6]: 8In [7]: add(y=3, x=5) #参数按照定义时的变量名传递,这样的传参方法叫做关键字参数,关键字参数和顺序无关
5 + 3 = 8
Out[7]: 8In [8]: add(5, y=3) # 位置参数和关键字参数可以混用
5 + 3 = 8
Out[8]: 8In [9]: add(x=3, 5)    # 位置参数不能放在关键字参数的后面File "<ipython-input-9-165b39de39ac>", line 1add(x=3, 5)^
SyntaxError: positional argument follows keyword argumentIn [10]: add('3', '5')    # python是动态语言,传入的参数类型可以不固定
3 + 5 = 35
Out[10]: '35'In [11]: add(3, '5') # python是强类型语言,传入的参数需要满足强类型要求,否则会抛出TypeError
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-335767c130e1> in <module>()
----> 1 add(3, '5')<ipython-input-5-e720706d1634> in add(x, y)1 def add(x, y):
----> 2     ret = x + y3     print('{} + {} = {}'.format(x, y, x+y))4     return retTypeError: unsupported operand type(s) for +: 'int' and 'str'

参数默认值

参数可以有默认值,当一个参数有默认值时, 调用时如果不传递此参数,会使用默认值

In [12]: def inc(x, y=1):    # 参数y默认为1...:     x += y...:     return x...: In [13]: inc(3)    # 传参时只需要传入x即可
Out[13]: 4In [14]: inc(3, 2)
Out[14]: 5In [15]: def inc(x=1, y):    # 默认参数不能再非默认参数之前...:     return x + yFile "<ipython-input-15-993be842d592>", line 1def inc(x=1, y):^
SyntaxError: non-default argument follows default argumentIn [16]: def connect(host='127.0.0.1', port=3306, user='root', password='', dbname='test'):...:     pass...: In [17]: connect('192.168.110.13',password='123456')

参数默认值和关键字参数一起使用,会让代码非常简洁

可变参数

可变参数两种形式:

  • 位置可变参数 : 参数名前加一个星号, 构成元组, 传参只能以位置参数的形式
  • 关键字可变参数: 参数名前加两个信号, 构成字典, 传参只能以关键字参数的形式

位置可变参数

In [18]: def sum(*lst):...:     print(type(lst))...:     ret = 0...:     for x in lst:...:         ret += x...:     return ret...: 
# 参数前加一个星号, 表示这个参数是可变的, 也就是可以接受任意多个参数, 这些参数将构成一个元组, 此时只能通过位置参数传参
In [19]: sum(1, 2, 3)
<class 'tuple'>
Out[19]: 6

关键字可变参数

In [20]: def connect(**kwargs):...:     print(type(kwargs))...:     for k, v in kwargs.items():...:         print('{} => {}'.format(k, v))...:         
# 参数前加两个星号, 表示这个参数是可变的,可以接受任意多个参数, 这些参数构成一个字典,此时只能通过关键字参数传参
In [21]: connect(host='127.0.0.1',port=3306)
<class 'dict'>
host => 127.0.0.1
port => 3306

位置可变参数和关键字可变参数混合使用

In [22]: def fn(*args, **kwargs):...:         print(args)...:         print(kwargs)...:     In [23]: fn(1, 2, 3, a=4, b=5)
(1, 2, 3)
{'a': 4, 'b': 5}
# 以上说明位置可变参数和关键字可变参数可以混合使用In [24]: def fn(**kwargs, *args): File "<ipython-input-24-e42478d184b2>", line 1def fn(**kwargs, *args):^
SyntaxError: invalid syntax
# 以上说明当位置可变参数和关键字可变参数一起使用时, 位置可变参数必须在前面

可变参数和普通参数混合使用

普通参数可以和可变参数一起使用,但是传参的时候必须匹配,演示如下

In [25]: def fn(x, y, *args, **kwargs):...:         print(x)...:         print(y)...:         print(args)...:         print(kwargs)...:     In [26]: fn(2, 3, 4, 5, 7, a=1, b=2)
2
3
(4, 5, 7)
{'a': 1, 'b': 2}In [27]: fn(2, 3)
2
3
()
{}In [28]: fn(2, 3, 4, 5, x=1)    # x有两个值,一个2,一个1,所以抛出TypeError
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-28-0f8d856dee50> in <module>()
----> 1 fn(2, 3, 4, 5, x=1)TypeError: fn() got multiple values for argument 'x'In [29]: fn(2, y=3)
2
3
()
{}

位置可变参数可以在普通参数之前, 但是在位置可变参数之后的普通参数变成了keyword-only参数:

In [30]: def fn(*args, x):...:     print(args)...:     print(x)...:     In [31]: fn(2, 3, 4)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-fab2f7df0315> in <module>()
----> 1 fn(2, 3, 4)TypeError: fn() missing 1 required keyword-only argument: 'x'In [32]: fn(2, 3, x=4)    # 必须将位置可变参数之后的普通参数变成keyword-only,否则TypeError
(2, 3)
4

关键字可变参数不允许在普通参数之前,演示如下:

In [33]: def fn(**kwargs, x=5):File "<ipython-input-33-889f99c1c889>", line 1def fn(**kwargs, x=5):^
SyntaxError: invalid syntax

关于默认参数和可变参数的总结:

通常来说:

  • 默认参数靠后
  • 可变参数靠后
  • 默认参数和可变参数一般不同时出现
  • 当默认参数和可变参数一起出现的时候, 默认参数相当于普通参数

参数解构

参数解构有两种形式

  • 一个星号 解构的对象:可迭代对象 ,解构的结果:位置参数
  • 两个星号 解构的对象:字典 ,解构的结果:关键字参数

一个星号的情况

In [34]: def add(x, y):...:         ret = x + y...:         print('{} + {} = {}'.format(x, y, ret))...:         return ret...: In [35]: add(1, 2)
1 + 2 = 3
Out[35]: 3In [36]: add(x=1, y=2)
1 + 2 = 3
Out[36]: 3In [37]: t = [1, 2]In [38]: add(t[0], t[1])    # 如果列表中的元素很多的时候,一个一个解开很不方便简洁
1 + 2 = 3
Out[38]: 3In [39]: add(*t)    # 位置参数解构  加一个星号, 可以把可迭代对象解构成位置参数
1 + 2 = 3
Out[39]: 3In [40]: add(*range(2))
0 + 1 = 1
Out[40]: 1

二个星号

In [42]: d = {'x': 1, 'y':2}In [43]: add(**d)
1 + 2 = 3
Out[43]: 3

参数解构发生在函数调用时, 可变参数发生函数定义时,所以两者并不冲突

In [46]: def sum(*args):    # 可变参数发生在函数定义时...:     ret = 0...:     for x in args:...:         ret += x...:     return ret...: In [47]: sum(*range(10))    # 参数解构发生在函数调用时
Out[47]: 45In [48]: def fn(**kwargs):...:     print(kwargs)...:     In [49]: fn(**{'a-b':1})
{'a-b': 1}In [50]: fn(**{123:1})    # 关键字参数解构, key必须是str
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-50-3c8b8b3fdf0b> in <module>()
----> 1 fn(**{123:1})TypeError: fn() keywords must be strings

keyword-only 参数

使用方法参见:Python: 函数参数列表中单个星号的意思,Keyword-Only Arguments

星号可以以一个参数的形式出现在函数声明中的参数列表中,但星号之后的所有参数都必须有关键字(keyword),这样在函数调用时,星号*之后的所有参数都必须以keyword=value的形式调用,而不能以位置顺序调用。

使用示例如下:也可参考上面链接中的示例

In [54]: def fn(*, x):...:     print(x)...:     In [55]: fn(3)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-55-f005f2a6106f> in <module>()
----> 1 fn(3)TypeError: fn() takes 0 positional arguments but 1 was givenIn [56]: fn(x=3)
3In [57]: def fn(x, *, y):...:     print(x)...:     print(y)...:     In [58]: fn(1, y=2)
1
2In [59]: fn(1, 2)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-59-c159019d3516> in <module>()
----> 1 fn(1, 2)TypeError: fn() takes 1 positional argument but 2 were given

函数的返回值

  • return 语句除了返回值之外,还会结束函数, return之后的语句将不会被执行
  • 一个函数可以有多个return语句, 执行到哪个return由哪个return返回结果并结束函数
  • 函数中 return可以提前结束循环
  • 当函数没有return语句的时候,返回None
  • 当函数需要返回多个值时, 可以用封装把返回值封装成一个元组
  • 可以通过解构获取到多返回值
  • return None 可以简写为 return, 通常用于结束函数
In [63]: def fn(x):...:     for i in range(x):...:         if i > 3:...:             return i    # return可以提前退出循环...:     else:...:         print('not bigger than 3')...:         In [64]: fn(2)
not bigger than 3In [65]: fn(10)    
Out[65]: 4In [66]: def fn():...:     pass    # 没有return时返回的是None...: In [67]: ret = fn()In [68]: retIn [69]: type(ret)
Out[69]: NoneTypeIn [70]: def fn():...:     return 3, 5    # 当函数需要返回多个值时, 会把返回值封装成一个元组...: In [71]: ret = fn()In [72]: type(ret)
Out[72]: tupleIn [73]: x, y = fn()    # 可以通过解构获取多个返回值

函数的嵌套

函数可以嵌套使用

In [75]: def outter():...:     def inner():...:         print('inner')...:     print('outter')...:     inner()...:     In [76]: outter()
outter
inner

作用域

变量的作用域为定义此变量的作用域

In [6]: def fn(): # 变量的作用域为定义此变量的作用域...:         xx = 1...:         print(xx)...:     In [7]: fn()
1In [8]: xx
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-102f5037fe64> in <module>()
----> 1 xxNameError: name 'xx' is not defined

表明变量的作用域就在fn函数之中

上级作用域对下级作用域只读可见

不同作用域变量不可见, 但是下级作用域可以对上级作用域的变量只读可见

In [9]: def fn():    # 上级作用域对下级作用域可见...:     xx = 1...:     print(xx)...:     def inner():...:         print(xx)...:     inner()...:     In [10]: fn()
1
1In [11]: def fn():    # 上级作用域对下级作用域只读可见...:     xx = 1...:     print(xx)...:     def inner():...:         xx = 2...:     inner()...:     print(xx)...:     In [12]: fn()
1
1    # 可以发现xx并没有被下级作用域修改

不要使用全局变量global

除非你清楚的知道global会带来什么,并且明确的知道,非global不行, 否则不要使用global

In [13]: xx = 1In [14]: def fn():...:     global xx    # global 可以提升变量作用域为全局变量...:     xx += 1...:     In [15]: fn()In [16]: xx
Out[16]: 2

闭包函数

闭包定义(Wikipedia):在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性

通俗理解:当某个函数被当成对象返回时,夹带了外部变量,就形成了一个闭包。

如果我们想实现一个无限增长的计数器,可以写一个counter函数,函数内部进行自增就行。假定我们按照以下写法:就会报错

In [17]: def counter(): ...:     c = 0...:     def inc():...:         c += 1 # c[0] = c[0] + 1...:         return c...: return inc...: In [18]: f = counter()In [19]: f()
---------------------------------------------------------------------------
UnboundLocalError                         Traceback (most recent call last)
<ipython-input-19-0ec059b9bfe1> in <module>()
----> 1 f()<ipython-input-17-9dd4cd4942f6> in inc()2     c = 03     def inc():
----> 4         c += 1 # c[0] = c[0] + 15         return c6     return incUnboundLocalError: local variable 'c' referenced before assignment

在 python 的函数内,可以直接引用外部变量,但不能改写外部变量,因此如果在闭包中直接改写父函数的变量,就会发生错误。比如上述程序直接改写父函数中的变量c

python的闭包中如果想改写父函数的变量可以用可变容器实现,这也是python2实现的唯一方式

In [1]: def counter():...:     c=[0]...:     def inc():...:         c[0] += 1...:         return c[0]...:     return inc...: In [2]: f = counter()In [3]: f
Out[3]: <function __main__.counter.<locals>.inc>In [4]: f()
Out[4]: 1In [5]: f()
Out[5]: 2In [6]: f()
Out[6]: 3

nonlocal关键字

在python3中改写父变量还有一种方就是使用nonlocal关键字

nonlocal 关键字用于标记一个变量由他的上级作用域定义, 通过nonlocal标记的变量, 可读可写

In [7]: def counter():...:     c = 0...:     def inc():...:         nonlocal c...:         c += 1...:         return c...:     return inc...: In [8]: f = counter()In [9]: f
Out[9]: <function __main__.counter.<locals>.inc>In [10]: f()
Out[10]: 1In [11]: f()
Out[11]: 2

如果上级没有定义nonlocal的变量,使用nonlocal时会抛出语法错误

In [12]: def fn():...:     nonlocal xxxFile "<ipython-input-12-2d2b8104e945>", line 2nonlocal xxx
SyntaxError: no binding for nonlocal 'xxx' found

函数的__defaults__属性

可变参数和不可变参数的__defaults__属性不一样

参数可变时

当使用可变类型作为默认值参数默认值时,需要特别注意,会改变函数的__default__属性

In [1]: def fn(xxyy=[]):...:     xxyy.append(1)...:     print(xxyy)...:     In [2]: fn()
[1]In [3]: fn()
[1, 1]In [4]: fn.__defaults__        # 参数是函数对象的属性
Out[4]: ([1, 1],)In [5]: fn()
[1, 1, 1]In [6]: fn.__defaults__     # 所有的函数参数封装成一个元组,第一个函数参数时列表在动态变化
Out[6]: ([1, 1, 1],)

参数不可变时

使用不可变类型作为默认值,函数体内不改变默认值

In [8]: def fn(x=0, y=0):...:         x = 3   # 赋值即定义...:         y = 3   # 赋值即定义...:     In [9]: fn.__defaults__
Out[9]: (0, 0)In [10]: fn()In [11]: fn.__defaults__
Out[11]: (0, 0)

可变参数时None的使用

通常如果使用一个可变类型作为默认参数时, 会使用None来代替

In [1]: def fn(lst=None):    # 向一个列表中插入元素3,列表默认为None...:     if lst is None:...:         lst = []...:     lst.append(3)...:     print(lst)...:     In [2]: fn.__defaults__        # 函数的__defaults__属性就是可变参数对应的None
Out[2]: (None,)In [3]: fn()
[3]In [4]: fn()                # 如果不传入值,函数执行的时候会先创建一个空列表,然后append
[3]In [5]: fn.__defaults__
Out[5]: (None,)In [6]: fn([1,2])
[1, 2, 3]In [7]: fn.__defaults__        # 传入值之后,也不会改变函数的__default__属性
Out[7]: (None,)

Python作用域、闭包、装饰器资料

  • Python 的闭包和装饰器
  • 说说Python中的闭包 - Closure
  • Python Enclosing作用域、闭包、装饰器话聊上篇
  • Python Enclosing作用域、闭包、装饰器话聊下篇

函数执行流程

函数的执行过程就是压栈和出栈的过程。具体如下

当调用函数的时候, 解释器会把当前现场压栈,然后开始执行被调函数, 被调函数执行完成,解释器弹出当前栈顶,恢复现场

递归函数

递归函数的定义就是函数调用函数自身。

  • 递归函数必须要有退出条件
  • 为了保护解释器, Python对最大递归深度有限制
  • 绝大多数递归都可以转化为循环使用
  • 尽量避免使用递归
  • sys模块中的getrecursionlimit和setrecursionlimit可以获取和设置最大递归深度

匿名函数

In [1]: lambda x: x + 1
Out[1]: <function __main__.<lambda>>

匿名函数有以下特点

  • lambda来定义
  • 参数列表不需要用小括号
  • 冒号不是用来开启新语句块
  • 没有return,最后一个表达式的值即返回值
  • 匿名函数(lambda表达式)只能写在一行上,所以也叫单行函数

匿名函数的好处是

  • 函数没有名字,不必担心函数名冲突
  • 匿名函数也是一个函数对象,可以把匿名函数返回给一个变量,再利用变量调用函数
In [1]: lambda x: x + 1
Out[1]: <function __main__.<lambda>>In [2]: f = lambda x: x + 1        # 直接把lambda函数返回给变量fIn [3]: f(3)                    # 由变量f调用函数
Out[3]: 4In [4]: f(5)
Out[4]: 6In [5]: (lambda x: x * 2)(3)    # 第一对括号用来改变优先级 第二对括号表示函数调用
Out[5]: 6In [6]: (lambda : 1)()            # lambda表示式参数可以为空
Out[6]: 1In [7]: (lambda x, y: x + y)(3, 5)    # lambda表达式的位置参数
Out[7]: 8In [8]: (lambda *args: args)(*range(3))    # lambda表达式的位置可变参数
Out[8]: (0, 1, 2)In [9]: (lambda *args, **kwargs: print(args, kwargs))(*range(3), **{str(x):x for x in range(3)})    # lambda表达式的位置可变参数和关键字可变参数
(0, 1, 2) {'0': 0, '1': 1, '2': 2}In [10]: (lambda *, x: x)(x=3)    # *号后面的位置参数必须使用关键字参数
Out[10]: 3

普通函数所支持的参数的变化,匿名函数都支持

匿名函数的常见用法:通常用于高阶函数的参数, 当此函数非常短小的时候,就适合使用匿名函数

比如匿名函数可以作为sorted函数的自定义键函数(custom key function)

In [11]: help(sorted)Help on built-in function sorted in module builtins:sorted(iterable, key=None, reverse=False)Return a new list containing all items from the iterable in ascending order.A custom key function can be supplied to customise the sort order, and thereverse flag can be set to request the result in descending order.In [12]: from collections import namedtupleIn [13]: point = namedtuple('point',['x','y'])    # 定义命名元组pointIn [14]: points = [point(1, 2), point(4, 3), point(8, 9)]In [15]: def getY(point):...:     return point.y...: In [16]: sorted(points, key=getY)    # 简短的函数可以作为自定义键函数
Out[16]: [point(x=1, y=2), point(x=4, y=3), point(x=8, y=9)]In [17]: sorted(points, key=lambda x: x.y)    # lambda表示也可以作为自定义键函数
Out[17]: [point(x=1, y=2), point(x=4, y=3), point(x=8, y=9)]

高阶函数

高阶函数的定义

高阶函数英文叫Higher-order function。

在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:

  • 接受一个或多个函数作为输入:通常用于大多数逻辑固定,少部分逻辑不固定的场景
  • 输出一个函数:函数作为返回值: 通常是用于闭包的场景, 需要封装一些变量

常见的高阶函数有map,reduce,filter

高阶函数:插入排序

插入排序时,排序顺序分为升序和降序,我们可以使用一个函数作为插入排序函数的参数来控制是升序还是降序。

首先看一下按照升序插入排序,然后再改进成升序降序可控的插入排序

def insertSort(iter):ret = []for x in iter:for i, y in enumerate(ret):if x < y:                # 修改处ret.insert(i, x)breakelse:ret.append(x)return ret

如果想让这个函数降序排序,则只需要修改代码中的注释处,改成x > y即可

如果传入一个函数来控制if后面的bool值,则就实现了通过参数控制升降了

def insertSort(iter, cmp = lambda x, y: x < y):ret = []for x in iter:for i, y in enumerate(ret):if cmp(x, y):ret.insert(i, x)breakelse:ret.append(x)return ret

这个函数就默认为升序排序了,但是可以传入一个比较函数变成降序,如下

lst = insertSort([1, 3, 2, 4, 6, 8, 5],lambda x, y: x > y)

map

map()函数原型:map(func, *iterables) --> map object

map()函数接收两个参数,一个是函数func,一个是可迭代对象Iterablemap将传入的函数依次作用到可迭代对象的每个元素,并把结果放入map对象这个迭代器中。所以map函数是高阶函数。

map类中存在__iter____next__函数

map使用示例

把list中的所有数字的平方

In [1]: def f(x):                                # 定义平方函数f...:         return x ** 2...: In [2]: ret = map(f, [1, 2, 3, 4, 5, 6, 7])        # 函数f和列表作为map的参数In [3]: ret                                        # map的返回值只是一个返回值
Out[3]: <map at 0x7f2d539a7470>In [4]: next(ret)                                # 可以用next方法输出map的结果
Out[4]: 1In [5]: next(ret)
Out[5]: 4In [6]: lst = list(ret)                            # 也可以用list函数计算出所有的值In [7]: lst
Out[7]: [9, 16, 25, 36, 49]

reduce

map函数是map类的函数,但是reduce函数属于functools包的reduce模块中

from functools import reduce

然后可以使用help方法查看reduce函数的使用

help(reduce)

输出结果如下

Help on built-in function reduce in module _functools:reduce(...)reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence,from left to right, so as to reduce the sequence to a single value.For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates((((1+2)+3)+4)+5).  If initial is present, it is placed before the itemsof the sequence in the calculation, and serves as a default when thesequence is empty.

reduce使用示例

  • 输出1到10的和
def add(x,y): return x + y
print(reduce(add, range(1, 11)))

输出结果为55

  • 把字符串转化为int,不适用int()函数
def str2int(s):def char2num(c):return {'0': 0, '1': 1, '2': 2 ,'3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[c]def f(x, y):return 10 * x + y return reduce(f, map(char2num, s))

str2int('1234321') => 1234321

filter

help(filter)之后可以发现filter是一个类,其中有一个filter函数,原型如下

filter(function or None, iterable) --> filter object

map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。返回值也是一个迭代器。

filter使用示例

使用filter筛选出list中的回文数

def is_palindrome(n):m = str(n)for i in range(len(m)//2):if m[i] != m[len(m) - i -1]:return Falseelse:return Truelst = list(filter(is_palindrome, [12321, 194, 13431]))
print(lst)
# 结果: [12321, 13431]

所以filter()函数用于过滤序列,重点在于选择一个正确的筛选函数。

生成器

带yield语句的函数称之为生成器函数, 生成器函数的返回值是生成器

  • 生成器函数执行的时候,不会执行函数体
  • 当next生成器的时候, 当前代码执行到之后的第一个yield,会弹出值,并且暂停函数
  • 当再次next生成器的时候,从上次暂停处开始往下执行
  • 当没有多余的yield的时候,会抛出StopIteration异常,异常的value是函数的返回值

生成器的基本形式

In [1]: def g():...:     for x in range(5):...:         yield x    # 弹出x...:         In [2]: r = g()        # 函数调用完成之后函数现场并没有被销毁In [3]: r
Out[3]: <generator object g at 0x7f0e18543990>In [4]: next(r)
Out[4]: 0In [5]: next(r)
Out[5]: 1In [6]: for x in r:...:     print(x)...:     
2
3
4

生成器的执行顺序

In [1]: def g():...:     print('a')...:     yield 1...:     print('b')...:     yield 2...:     return 3...: In [2]: r = g()    # 执行生成器函数的时候函数并没有被执行 In [3]: next(r)    # 执行到第一个yield就停止执行
a
Out[3]: 1In [4]: next(r)    # 执行到第二个yield就停止执行
b
Out[4]: 2In [5]: next(r)    # 从第二个yield开始,当没有更多yield的时候,抛出StopIteration异常,异常的值正好是return的返回值
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-5-0b5056469c9c> in <module>()
----> 1 next(r)StopIteration: 3

生成器的应用

计数器第一种形式

In [1]: def counter():...:     x = 0...:     while True:...:         x += 1...:         yield x    # 每次将+1之后的x弹出...:         In [2]: def inc(c):...:     return next(c)...: In [3]: c = counter()    # counter函数执行的结果就是一个生成器,所以c就是生成器In [4]: inc(c)
Out[4]: 1In [5]: inc(c)
Out[5]: 2

计数器第二种形式

In [6]: def make_inc():...:     def counter():...:         x = 0...:         while True:...:             x += 1...:             yield x...:     c = counter()...:     return lambda : next(c)    # 使用lambda表达式将next(c)作为函数返回,而不是只返回一个next(c)...: In [7]: make_inc()
Out[7]: <function __main__.make_inc.<locals>.<lambda>>    # make_inc本质是一个匿名函数In [8]: inc = make_inc()In [9]: inc()
Out[9]: 1In [10]: inc()
Out[10]: 2

斐波拉契数列

In [11]: def fib():...:     a = 1...:     b = 1...:     while True:...:         yield a...:         a, b = b, a + b...:         In [12]: fib()
Out[12]: <generator object fib at 0x7f9ff2746830>In [13]: f = fib()    # 生成器fIn [15]: next(f)
Out[15]: 1In [16]: next(f)
Out[16]: 1In [17]: next(f)
Out[17]: 2In [18]: next(f)
Out[18]: 3In [19]: g = fib()In [20]: ret = []    # 将yield的值都保存在ret中In [21]: for _ in range(1000):    # 遍历生成器...:     ret.append(next(g))...:     In [22]: ret[-1]    # 取ret列表的最后一个元素值,速度很快
Out[22]: 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875

生成器的高级用法

生成器的高级用法是协程

  • 协程:协程运行在一个线程之内, 在用户态调度

生成器参考资料

  • python生成器到底有什么优点?

  • Understanding Generators in Python

  • Introduction to Python Generators

  • 生成器资料汇总

记得帮我点赞哦!

精心整理了计算机各个方向的从入门、进阶、实战的视频课程和电子书,按照目录合理分类,总能找到你需要的学习资料,还在等什么?快去关注下载吧!!!

resource-introduce

念念不忘,必有回响,小伙伴们帮我点个赞吧,非常感谢。

我是职场亮哥,YY高级软件工程师、四年工作经验,拒绝咸鱼争当龙头的斜杠程序员。

听我说,进步多,程序人生一把梭

如果有幸能帮到你,请帮我点个【赞】,给个关注,如果能顺带评论给个鼓励,将不胜感激。

职场亮哥文章列表:更多文章

wechat-platform-guide-attention

本人所有文章、回答都与版权保护平台有合作,著作权归职场亮哥所有,未经授权,转载必究!

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Leetcode每日打卡---- 20200928

    文章目录117.填充每个节点的下一个右侧节点指针 II117.填充每个节点的下一个右侧节点指针 II 题目链接 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个…...

    2024/4/13 1:57:21
  2. ReentrantLock&CountDownLatch & Semaphore & CyclieBarries 实现原理详解

    ReentrantLock 基于AQS实现的独占锁&#xff0c;加锁失败的线程进入同步等待队列。 例子 public class ReentrantLockTest {private static int sum 0;private static Lock lock new ReentrantLock(true);public static void main(String[] args) {for (int i 0; i <…...

    2024/4/24 1:56:49
  3. C++中constexpr和const的区别

    在C中constexpr和const的区别主要体现在所修饰的对象或者函数处于编译期和运行期的差异 对象 const指的是编译期和运行期的常量&#xff0c;两者没有什么区别。 constexpr特指的是编译期的常量。 函数 const可以修饰类的成员函数&#xff0c;被修饰的函数在执行期间不会改…...

    2024/4/8 10:49:47
  4. 1-3课英语课堂作业

    ...

    2024/4/20 2:21:05
  5. MAVEN 私有仓库搭建与配置

    一. nexus 下载安装 1. 下载 官网地址&#xff1a;https://www.sonatype.com/nexus/repository-oss 由于XXX原因&#xff0c;官网地址可能无法下载 百度网盘&#xff1a;https://pan.baidu.com/s/16pYBz6qOg3sgG3cJd7HYsg 提取码&#xff1a;ogjf 2. 安装(linux) 安装包上…...

    2024/4/26 1:57:35
  6. pdfbox报错缺少字体问题解决

    使用PDFBOX将PDF转换成PNG时&#xff0c;字体模糊&#xff0c;看日志缺少宋体&#xff0c;将附件字体安装到Linux系统后解决问题 添加字体到系统文件夹 #新建目录newFont以存放新字体 mkdir /usr/share/fonts/chinese/ #上传或者拷贝当前目录下的字体到/usr/share/fonts/chine…...

    2024/4/24 16:51:10
  7. 权限表设计

    /* Navicat MySQL Data Transfer Source Server : 信用-uac Source Server Version : 50730 Source Host : 10.1.253.215:3306 Source Database : creditcloud_uac Target Server Type : MYSQL Target Server Version : 50730 File Encoding …...

    2024/4/25 15:53:57
  8. 算法-分块索引和倒排索引

    分块索引&#xff1a;块与块是有序的 &#xff0c;块内无序的&#xff1b;最大值也要小于最小值 倒排索引&#xff1a;对文章分词&#xff0c;分词结果都索引到这篇文章...

    2024/4/28 6:15:07
  9. zTree使用记录

    版本 &#xff1a;zTree v3 官网&#xff1a;http://www.treejs.cn/v3/main.php#_zTreeInfo <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here</title> <link rel"stylesheet" hre…...

    2024/5/5 2:50:23
  10. RuntimeError: Sizes of tensors must match except in dimension 2. Got 5 and 4

    调试代码的时候&#xff0c;遇到***RuntimeError: Sizes of tensors must match except in dimension 2. Got 5 and 4*** 这个问题&#xff0c; 解决方式&#xff1a; 进行单步调试&#xff0c;发现&#xff0c;torch.cat(x,y) 这两个feature map 的大小不一致&#xff0c;可以…...

    2024/4/10 16:21:32
  11. 思维导图:刀具寿命

    ...

    2024/4/24 8:19:09
  12. 目标检测的图像特征提取之(二)LBP特征

    原文&#xff1a;https://blog.csdn.net/zouxy09/article/details/7929531&#xff08;侵删&#xff09; 目标检测的图像特征提取之&#xff08;二&#xff09;LBP特征 zouxy09qq.com http://blog.csdn.net/zouxy09 LBP&#xff08;Local Binary Pattern&#xff0c;局部二值…...

    2024/4/20 20:59:47
  13. 无人机姿态解算:四元数及其与欧拉角的转换

    无人机姿态解算&#xff1a;四元数及其与欧拉角的转换 引言&#xff1a;获得无人机飞行时的飞行姿态对于无人机稳定控制来说至关重要。无人机主要通过传感器数据融合来进行状态估计&#xff0c;常用于无人机的传感器包括&#xff1a;MPU&#xff08;包含了三轴加速度计和三轴陀…...

    2024/5/1 11:47:00
  14. 实现operator常见的四种方式

    有点囫囵吞枣的意思&#xff0c;找时间写一个简单的operator就能上手了 官方链接&#xff1a;https://kubernetes.io/docs/concepts/extend-kubernetes/operator/#what-s-next 四种方式 KUDO 相关链接&#xff1a;https://kudo.dev/基本概念 KUDO is a toolkit that makes …...

    2024/4/25 11:14:52
  15. GIT知道这些就够了

    git 知道这些就够了 『Git』知道这些就够了git status 可以查看当前仓库的状态信息。 如果在仓库创建两个新文件&#xff0c;index.html 和 index.js。 在执行一下 git status。 git add <文件名> 输入git add <文件名> 可以将单个文件加入暂存区。 再次查看…...

    2024/4/23 13:19:41
  16. 安装Redhat 7.5 Linux (三)Linux配置

    安装Redhat 7.5 Linux (三&#xff09;Linux配置 Linux网络配置 之前选择的是NAT连接&#xff0c;需要使用到VMware在安装的时候配置的VM net8 检查这里是否有VMnet1和8&#xff0c;如果没有&#xff0c;卸载VMware重新安装一次&#xff0c;还是没有的话使用重装系统可以解决…...

    2024/5/1 23:17:25
  17. 功能定义

    查看参数 参数信息 Stream_ID Mode 参数名称 模式 单位名称单位符号是否可控 可控 互联场景 支持 创建时间 2020-05-21 13:49:24 更新时间 2020-08-20 13:43:52 参数值 参数值类型 int 参数值范围 最小值&#xff08;0&#xff09; 最大值&#xff08;28&#xff09; 枚举参…...

    2024/4/11 18:56:13
  18. Android 9 (P)非SDK API限制调用开发指南

    https://blog.csdn.net/tkwxty/article/details/105784784 Android 9 (P)非SDK API限制调用开发指南 Android 9 (P)开发适配指南系列博客目录&#xff1a; Adnroid 9 (P) recovery升级Map of /cache/recovery/block.map’failed问题分析指南Android 9 (P)版本解决VNDK library:…...

    2024/4/7 5:56:14
  19. HBase 常用操作工具类(2.0)

    写这个小工具的时候公司还在使用比较老的HBase大数据套件&#xff0c;后来公司升级了大数据套件该工具很多类被弃用&#xff08;HBase官网&#xff1a;As of release 2.0.0, this will be removed in HBase 3.0.0. Use xxx to build xxx&#xff09;&#xff0c;领导要求跟改掉…...

    2024/4/25 18:09:37
  20. ZooKeeper运维之数据文件和事务日志

    http://blog.csdn.net/jiyiqinlovexx/article/details/42687157 1、面临问题&#xff1a; 最近在基于Zookeeper开发一个分布式注册中心&#xff0c;包括两大功能&#xff1a; 配置信息的集中管理&#xff1b;服务的动态注册和发现。 这里面会面临一个问题&#xff1a; 平时在…...

    2024/4/28 10:16:52

最新文章

  1. Vue3工程化配置

    Vue3工程化配置 目录 Vue3工程化配置创建项目vue-clivite(推荐) 快速体验2和3的差别vue3vue2 ref和reactive 创建项目 vue-cli 具体环境配置请点这里 记得新建配置时这里选vue3 vite(推荐) 注&#xff1a;Vite 需要 Node.js 版本 18&#xff0c;20 1.选定路径后再cmd输入创建…...

    2024/5/7 12:40:18
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. [C++][算法基础]模拟队列(数组)

    实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 x&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要对队列进行 M 个操作&#xff0c;其中的每…...

    2024/5/5 0:14:29
  4. GIS与数字孪生共舞,打造未来智慧场景

    作为一名数字孪生资深用户&#xff0c;近日我深刻理解到GIS&#xff08;地理信息系统&#xff09;在构建数字孪生体中的关键作用。 数字孪生技术旨在构建现实世界的虚拟镜像&#xff0c;而GIS则是这一镜像中不可或缺的空间维度框架和导航灯塔。数字孪生的核心是通过数字化方式…...

    2024/5/2 2:35:02
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/6 18:40:38
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/6 23:37:19
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/6 7:24:07
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/6 7:24:06
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/6 20:04:22
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/6 7:24:04
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/6 7:24:04
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/6 7:24:03
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/7 0:32:49
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/7 11:08:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/7 7:26:29
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/7 0:32:47
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57