2017/10/16
.lambda函数,globals()/locals()函数,eval()exec()函数,闭包函数,函数式编程,高阶函数
1.lambda表达式(又称匿名函数对象)
作用:
    创建一个匿名(无名)函数对象
    同def类似,但是不提供函数名

语法:
    lambda [参数1,参数2,...]:表达式
    注:[]内的部分可以省略

--------------------------------------------------
实例:
def myadd(x,y):
    return x + y

可以改写为:
myadd = lambda x,y:x+y
myadd(10+20)
print('10+20=',myadd(10,20))

实例:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
print('10+20=',(lambda x,y:x*y)(100,200))

--------------------------------------------------

实例:
def operator(fn,x,y):       
    return fn(x,y)

operator((lambda a,b:a+b),100,200)
operator((lambda a,b:a*b),100,200)

del operator  #释放函数所占的内存空间,用完之后销毁

曾出现的bug分析总结:
在python的交互环境中执行以上程序,如果
def operator(fn,x,y):       
    return fn(x,y) 

operator((lambda a,b:a+b),100,200)
直接按没有空行,交出出现SyntaxError: invalid syntax bug错误交互环境下,如果写下函数语句(多个表达式,系统会认为你的函数表达式可能还没有写完,因此前面依旧有3个点 ... 
提示是否继续写语句,我们应该按回车表示已经结束函数的定义,在>>>提示符下进行键入operator((lambda a,b:a+b),100,200))

注意:operator((lambda a,b:a+b),100,200) 和 print('10+20=',(lambda x,y:x*y)(100,200)) 的写法

语法说明:
    lambda只是一个表达式,它用来创建一个函数对象;
    当labda表达式执行时(调用的时候),返回的是冒号(:)后面的表达式的值;
    lambda表达式创建的函数只能包含一条语句(一个表达式)
    lambda比函数简单且可以随时创建和销毁,有利于减少程序的偶合度(联想以前的电视连接线和现在的一根HDMI线)

实例练习:
写一个lambda表达式,求两个变量的最大值
def mymax(x,y):
    if x >= y:
        return x
    else:
        return y

mymax2 = lambda x,y:mymax(x,y)

print(mymax2(100,200))

新的解法(题意实际上是将一个定义函数改写成为lambda函数表达式):
(1)
def mymax(x,y):
    if x >= y:
        return x
    return y
(2)
def mymax(x,y):
    rturn max(x,y)
(3)正确解法
def mymax(x,y):
    rturn x if x >= y else y

改写:
mymax2 = lambda x,y : x if x >= y else y
print(mymax2(100,200))

----------------------------------------------------------------------------------------------------------------------------------------------

2.globals()/locals()函数
  globals() 返回当前全局作用域内变量的字典
  locals()  返回当前局部作用域内变量的字典

实例:
a = 1
b = 2
def fn(c,d):
    e = 300
    print('locals 返回:',locals())
    print('globals返回:',globals())

fn(100,200)

>>>
locals 返回: {'c': 100, 'e': 300, 'd': 200}
globals返回: {'a': 1, 'b': 2, 'fn': xxxxxxxxxxxx}@@@@@@@@@@@@@@@@@@@@@
globals返回: {'__name__': '__main__', '__spec__': None, 
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f81a0d72a58>,
 'b': 2, '__doc__': None, 'a': 1, '__builtins__': <module 'builtins' (built-in)>, 
'__file__': 'yuan.py', 'fn': <function fn at 0x7f81a0e30f28>, '__package__': None, 
'__cached__': None}

实例:
a = 1
b = 2
def fn(c,d):
    e = 300
print('locals 返回:',locals())@@@@@@@@@@@@
    print('globals返回:',globals())
    d = globals()
    d['b'] = 10

fn(100,200)
print(d)  >>>10

----------------------------------------------------------------------------------------------------------------------------------------------

3.eval(),exec()函数
eval()函数作用:
    把一个字符串当成一个表达式来执行,返回表达式执行后的结果
eval()格式:
    eval(source,globals=None,local=None)@@@@@@@ @@@@@@@@@@@@@@@@

实例:
x = 100
y = 200
a = eval('x+y')
print(a)   
>>>300
总结('x+y')本应该是字符串表达式,但是eval将其作为一个表达式来执行并返回了

实例:
x = 100
y = 200
a = eval('x+y')
print(a)     #300

s = input('请输入字符串:')          #只能输入表达式例如1+2,如果输入字符串反而会出错---
a = eval(s)
print('请输入字符串的结果',a)   
>>>输入的数字字符串会像数字一样输出

实例:
x = 100
y = 200
a = eval('x+y')
print(a)
local_scope = {'x':5,'y':10}
a = eval('x+y',None,local_scope)
print('a=',a)
z = 300
a = eval('x*y+z',{'z':3333},local_scope)@@@@@@ @@@@@@@@@@@@
print(a)

----------------------------------------------------------------------------------------------------------------------------------------------

4.exec()函数:
作用:把一个字符串当做程序来执行
格式:
    exec(source,global=None,locals=None)

实例:
x = 100
y = 200
s = 'print('hello:',x,y)'
exec(s)   #hello:100 200

实例:
gs = {'x':10,'y':20}   #作用域
ls = {'x':1,'y':2}     #作用域
exec('z = x + y',gs,ls)              @@@@@@@@@@@@@@@@@@@
print(ls)   #{'x':1,'y':2,'z':3}

实例练习:
写一个程序的解释执行器,解释我们自己输入的程序
$./myprog.py
请输入程序:>>>> x = 100<回车>
请输入程序:>>>> x = 200<回车>
请输入程序:>>>> print('x+y',x+y)<回车>
x+y=300
提示:用exec()函数实现

a = input('请输入程序:')
b = input('请输入程序:')
c = input('请输入程序:')

exec(a)
exec(b)

新的解法:@@@@@@@@@@@@@@@@@@@@@@@

#!/usr/bin/python3

while True:
    s = input('请输入程序:>>>')
    exec(s)                      #将任意写入的程序都用python3的解释执行器解释执行

----------------------------------------------------------------------------------------------------------------------------------------------

5.闭包 closure
    将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象成为闭包
说明:
    如果一个内嵌函数访问函数外部作用域的变量,则这个函数就是闭包

实例:
def make_power(x):
    def fn(arg):
        return arg ** x  #本作用域内是没有x的绑定值的,因此去找其作用域外的变量值2
    return fn

f2 = make_power(2)       #f2绑定了一个函数,函数中绑定了一个值2
y = f2(100)             #平方 100的平方

f3 = make_power(3)       #f3绑定了一个函数,函数中绑定了一个值3
y = f3(4)               #立方 4的立方

注意:只有内嵌函数才能形成闭包,见以上的说明。

----------------------------------------------------------------------------------------------------------------------------------------------

6.函数式编程:
    指用一些列函数解决问题

函数式编程的好处:
    每一个函数完成细小的功能,一系列函数的任意组合可以完成大问题;
    函数仅接受输入并产生输出,不包含任何可能影响输出的内部状态

函数的可重入性:
    输入一定,则输出必须一定(函数没有用到函数外的变量)

可重入函数的优点:
    易于测试,易于调试,更高的生产率(软件、函数的复用),模块化(逻辑清晰),逻辑可证

实例-不可重入函数:
y = 200
def myadd(x):
    return x+y
print(myadd(10))    #210

y = 300
print(myadd(10))    #310

实例-可重入函数:
def add2(x+y):
    return x+y

----------------------------------------------------------------------------------------------------------------------------------------------

7.高阶函数:
    满足以下条件中的一个条件的函数即为高阶函数:
    1.函数接受一个或者多个函数作为参数输入
    2.函数返回一个函数

实例:
def operator(fn,x,y):       #函数作为参数
    return fn(x,y)

python中内置(builtins)的高阶函数:map,filter,sorted

--------------------------------------------------

(1)map函数:
    map(func,*iterable)
    用函数和可迭代对象中的每个元素作为参数计算出新的可迭代对象,当最短的一个可迭代对象完成迭代后,迭代生成结束

实例:
#生成一个迭代器,此迭代器可以生成1-9的自然数的平方:1 4 9 16...

def power2(x):
    return x**2
mit = map(power2,range(1,10))  #range已经是一个可迭代器,map将range迭代器中的所有元素处理后再重新生成并返回一个迭代器,power2 没有括号,表示调用函数,而不是返回函数运行结果

>>> mit
<map object at 0x7f9068dd37f0>
>>> for x in mit:
...     print(x,end=' ')
... 
>>>1 4 9 16 25 36 49 64 81

总结:
mit = map(power2,range(1,10)) 语句中全是函数或者是可迭代器,map函数,power2自定义函数,range(1,10)迭代函数(器,对象)
将后函数的迭代元素取出,供前函数使用,最后生成新迭代元素集,由map函数生成迭代器

实例:
#生成迭代器,1*4 ,2*3,3*2,4*1

def mymul(x,y):
    return x*y
mit = map(mymul,[1,2,3,4],[4,3,2,1])     #power2 没有括号,表示调用函数,而不是返回函数运行结果
for x in mit:
    print(x,end=' ')
>>>4 6 6 4

实例:
#求和:1**1 + 2**2 + 3**3 + ... + n**n ,用pow,sum,map,range函数组成来做
#知识点提示 pow(a,b,c)  表示 a**b%c

我的解法:
n = int(input('please enter a num:'))
mit = map(pow,range(1,n+1),range(1,n+1))
L = []
for x in mit:
    L.append(x)
print(sum(L))

新的解法1:
def mysum(n):
    def power(x):
        return pow(x,x)
    mit = map(power,range(1,1+n))
    return sum(mit)

a = int(input('please enter a num:'))
print(mysum(a))

新的解法2:
def mysum(n):
    return sum(map(pow,range(1,n+1),range(1,n+1)))
a = int(input('please enter a num:'))
print(mysum(a))

新的解法3:
def mysum(n):
    return sum(map(lambda x : pow(x,x),range(1,n+1)))
a = int(input('please enter a num:'))
print(mysum(a))

实例:
#求和: 1**9 + 2**8 + 3**7 + ... + 9**1 的和 11377
#提示:函数式编程 pow sum map range

def mysum(n):
    return sum(map(lambda x,y : (x ** y),range(1,n+1),range(n,0,-1)))
a = int(input('please enter a num:'))
print(mysum(a))

实例:@@@@@@@@@@@@@@@@@@@@@
mit = map(pow,[1,2,3,4],[3,2])
L = [x for x in mit]
print(L)
>>>[1,4]
总结:记得pow是幂运算!!!!!
--------------------------------------------------

(2)filter函数:
    filter(function or None,iterable)
    function是筛选条件
作用:
    筛选序列中的数据,返回一个可迭代对象,此可迭代对象将对iterable进行筛选

说明:
    function将对iterable中的每个元素进行求值,返回False则将此数据丢弃,返回True,则保留此数据

实例:
L = [x for x in range(10)]  #[0,1,2,3,4,5,6,7,8,9]

def isodd(x):                  #如果奇数则返回True
    return x % 2 == 1 
L2 = [x for x in filter(isodd,range(10))]    #filter函数中只有两个参数,一个是函数,另一个是迭代器函数
print(L2)
>>>[1, 3, 5, 7, 9]

--------------------------------------------------

(3)sorted函数
作用:
    将原可迭代对象的数据进行排序,生成排序后的列表
格式:
    sorted(iterable,key=None,reverse=False)
说明:
    key函数用来提供一个值,这个值将作为排序的依据

实例:
L = [5,-2,-4,0,3,1]
L2 = sorted(L)                      #[-4, -2, 0, 1, 3, 5]
L3 = sorted(L,reverse=True)         #[5,3,1,0,-2,-4]
L4 = sorted(L,key=abs)              #[0, 1, -2, 3, -4, 5]
L5 = sorted(L,key=abs,reverse=True) #[5, -4, 3, -2, 1, 0]

实例:
names = ['Tom','Jerry','Spike','Tyke']
L1 = sorted(names)                   #['Jerry', 'Spike', 'Tom', 'Tyke'] 首字母
L2 = sorted(names,key=len)           #['Tom', 'Tyke', 'Jerry', 'Spike']
pirnt(L1,L2)

实例:
'ekipS','ekyT''moT','yrreJ',  后再首字母  @@@@@@@@@@@@@@@@@@@@
names = ['Tom','Jerry','Spike','Tyke']
def k(x):
    return x[::-1]      #将字符串翻转,reversed.不能用
L = sorted(names,key=k) #翻转只是依据
print(L)                #['Spike', 'Tyke', 'Tom', 'Jerry']

实例-要求同上:
names = ['Tom','Jerry','Spike','Tyke']
L = sorted(names,key = lambda x : x[::-1])
print(L)
>>>['Spike', 'Tyke', 'Tom', 'Jerry']

=======================================================================================

8.递归函数(recursion):
    函数直接或间接是调用自身

实例:
def f():
    print('hello')
    f()
f()                       #调用函数
print('递归完成')
>>>
ello
hello
hello
hello
hello
...
最终bug提示:RecursionError: maximum recursion depth exceeded while calling a Python object
函数始终在调用自己,调用深度无限大,无限进入(屋子)(但是python系统中默认最多的递归深度是1000层),而不进行返回,
屏幕不会打印 递归完成

实例改进-方便观察:
import time
def f():
    print('hello')
    time.(1)
    f()
f()                       #调用函数
print('递归完成')

说明:
    递归一定要空值递归的层数,当符合某一条件时要终止递归调用;
    几乎所有的递归都能用while循环来代替

优缺点:
    优点:可以把问题简化,让思路清晰,代码更简洁
    缺点:递归因系统环境影响大,当递归深度太大,可能会得到不可预知的结果

实例:
#循环实现阶乘
def myfac(n):
    result = 1
    for x in range(1,n+1):
        result *= x
    return result

a = int(input('please enter a num:'))
print(myfac(a))

#递归实现阶乘  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
def myfac(n):
    if n == 1:                #递归 和 循环的思想类似,其循环的判断条件,既可以按顺序取数,例如 个数,升序, 也可以逆顺序排列,例如本题的降序
        return 1              #这里用很巧妙的方法将阶乘实现,其实际是从 n (n-1)... 一直乘到 1
    return n * myfac(n-1)
print('5!= ',myfac(5))

=======================================================================================

课后练习:
1.用filter函数将 1-100之间的所有素数prime放入到列表中并打印

L = [x for x in range(10)]  #[0,1,2,3,4,5,6,7,8,9]

def isodd(x):                  #如果奇数则返回True
    return x % 2 == 1 
L2 = [x for x in filter(isodd,range(10))]    #filter函数中只有两个参数,一个是函数,另一个是迭代器函数

2.用递归方式计算 1+2+3+  ...  +n的和
def mysum(n):
    ...#此处自己实现

3.用函数式编程,算出1-20的阶乘的和

4.改写之前学生信息的程序,每个人的信息有:
  姓名:name
  年龄:age
  成绩:score
输入5个学生的信息,然后做如下的操作:
按成绩从高到低打印学生信息;
按年龄从高到低打印学生信息;
按年龄从低到高打印学生信息;
按原来输入顺序打印学生信息(保持原来的列表不变);

1.
def isprime(n):
    for i in range(2,n):
        return n % i != 0 
L = [ x for x in filter(isprime,range(1,101))]
print(L)

2.
def fun(n):
    if n == 1:                
        return 1              
    return n + fun(n-1)

a = int(input('please enter a num:'))
print(fun(a))

3.
def fun(n):
    if n == 1:                
        return 1              
    return n * fun(n-1)      #算阶乘
L = []
for i in range(1,21):
    L.append(fun(i))
print(sum(L))

4.
第1次做题:
docs = []
for x in range(5):
    name = input("请输入第"+str(x+1)+"个学生的姓名:")
    age  = int(input("请输入第"+str(x+1)+"个学生的年龄:"))
    d = {"name":name,"age":age}
    docs.append(d)
print(docs)

L=docs.copy()    #浅拷贝  L=docs[::]也可以
print('+'+'-'*13+'+'+'-'*13+'+')
print('|'+'姓名'.center(12)+'|'+'age'.center(12)+'|')
print('+'+'-'*13+'+'+'-'*13+'+') 
for d in L:
    print("|",d["name"].center(13),"|",str(d["age"]).center(13),'|',sep='')
print('+'+'-'*13+'+'+'-'*13+'+')

############
names = ['Tom','Jerry','Spike','Tyke']
L1 = sorted(names)                   #['Jerry', 'Spike', 'Tom', 'Tyke'] 首字母
L2 = sorted(names,key=len)           #['Tom', 'Tyke', 'Jerry', 'Spike']
pirnt(L1,L2)
############

def fun():
    for i in L:
    d['age']

for i in range(5):

def quzhi():
    for i in range(5):
        return L[i]['age']

L3 = sorted(L,key =quzhi )

s = [(q,1,3)(w,2,4)(e,4,5)]
L = sorted(s,lanbda s : s[2])
print(L)

第2次做题:

网络参考提示:
L = [{'name':'a','score':10},{'name':'b','score':30},{'name':'c','score':20}]
print(L)
L2 = sorted(L,key=lambda stu:stu['score'])
print(L2)

#----------------------------------------------------------------------正解如下————————————————
docs = []

for x in range(3):
    name = input("请输入第"+str(x+1)+"个学生的姓名:")
    age  = int(input("请输入第"+str(x+1)+"个学生的年龄:"))
    score = int(input("请输入第"+str(x+1)+"个学生的分数:"))
    d = {"name":name,"age":age,"score":score}
    docs.append(d)

L=docs.copy()    #浅拷贝  L=docs[::]也可以

#----------------------------------------------------------------------

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')
print('|'+'NAME'.center(13)+'|'+'AGE'.center(13)+'|'+'SCORE'.center(13)+'|')
print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

for d in L:
    print("|",d["name"].center(13),"|",str(d["age"]).center(13),'|',str(d["score"]).center(13),'|',sep='')

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

#----------------------------------------------------------------------

L = sorted(L,key=lambda stu:stu['score'])

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')
print('|'+'NAME'.center(13)+'|'+'AGE'.center(13)+'|'+'SCORE'.center(13)+'|')
print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

for d in L:
    print("|",d["name"].center(13),"|",str(d["age"]).center(13),'|',str(d["score"]).center(13),'|',sep='')

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

#----------------------------------------------------------------------

L = sorted(L,key=lambda stu:stu['age'])

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')
print('|'+'NAME'.center(13)+'|'+'AGE'.center(13)+'|'+'SCORE'.center(13)+'|')
print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

for d in L:
    print("|",d["name"].center(13),"|",str(d["age"]).center(13),'|',str(d["score"]).center(13),'|',sep='')

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

#----------------------------------------------------------------------

L = sorted(L,key=lambda stu:stu['age'],reverse = True)

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')
print('|'+'NAME'.center(13)+'|'+'AGE'.center(13)+'|'+'SCORE'.center(13)+'|')
print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

for d in L:
    print("|",d["name"].center(13),"|",str(d["age"]).center(13),'|',str(d["score"]).center(13),'|',sep='')

print('+'+'-'*13+'+'+'-'*13+'+'+'-'*13+'+')

可以使用输入重定向完成这道题,工作中是写好了脚本方便测试
Python3 shiyan.py < nn.txt
如果用./students.py运行,需要为该文件添加执行权限 chmod u+x shiyan.py 并在该程序文档的首行(必须是第一行)键入#!/usr/bin/python3  来声明python3 解释执行器的位置

如果是shell文件 则要键入   #!/usr/bin/bash

python笔记11 - lambda函数,globals()/locals()函数,eval()exec()函数,闭包函数,函数式编程,高阶函数相关推荐

  1. python学习——函数式编程——高阶函数

    python学习--函数式编程--高阶函数 函数式编程(高阶函数):1:map && reduce; 2 : filter; 3: sorted; ------------------ ...

  2. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊...

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  3. python3_函数_形参调用方式 / 不定长参数 / 函数返回值 / 变量作用域 / 匿名函数 / 递归调用 / 函数式编程 / 高阶函数 / gobal和nonlocal关键字 / 内置函数

    1.形参的调用方式 1. 位置参数调用 2. 关键词参数调用 原则: 关键词参数调用不能写在位置参数调用的前边 def test1(name, age):print("name:" ...

  4. 函数式编程 --- 高阶函数

    含义: 高阶函数全称 (Higher-order function) 1.可以把函数作为参数传递给另一个函数 2.可以把函数作为另一个函数的返回结果 意义:高阶函数是用来抽象通用的问题:抽象可以帮我们 ...

  5. 【一天时间|JavaScript进阶】函数式编程高阶函数的应用

    一天时间系列文章是博主精心整理的面试热点问题和难点问题,吸收了大量的技术博客与面试文章,总结多年的面试经历,带你快速并高效地审视前端面试知识.直击技术痛点,主动出击,精密打击,这才是面试拿到高薪的秘诀 ...

  6. Python编程 高阶函数使用技巧

    在坚持的初期,坚持本身比坚持的事情更重要.也许,生活的意义并不在于实现了怎样伟大的梦想,而是在于自己全身心地投入,让每一天都成为梦想的一部分.只要是能确定带给自己价值感的事情,去做就好.时间在流逝,每 ...

  7. python自定义高阶函数_python基础知识5(集合,高级特性,高阶函数)

    ** 删除列表中重复的元素:l = [1,2,3,1,2,3] - 强制转化列表为集合类型:list(set(l)) - 将列表转化为字典,拿出里面的所有key值: dict.fromkeys(l). ...

  8. 函数式编程4-高阶函数

    以其他函数作为参数的函数 本章的所有代码,均在github.com/antgod/func- 关于传递函数的思考 max 在很多编程语言的核心库,都包含一个叫做max的函数.包括underscore也 ...

  9. Python:高阶函数

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  10. python中高阶函数map怎么用_python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

最新文章

  1. 开工啦!这本书助你快速回归高效工作状态
  2. LOJ#6374 网格
  3. Asp.Net就业课之案例实践第二次课
  4. apache php mysql 整合_PHP+Apache+MySQL整合
  5. erlang lists
  6. linux按键检测结束,关于Linux下按键的检测
  7. 计算机考研评分标准,考研的评分标准.doc
  8. POJ1011 Sticks
  9. c#中接口的使用方法图解_C#中的接口interface的使用
  10. 一阶梯度法、二阶段梯度法、牛顿法
  11. CAD-Arcgis 坐标校正
  12. idea无法下载源代码
  13. java源码系列:HashMap底层存储原理详解——5、技术本质-原理过程-算法-取模会带来一个什么问题?什么是哈希冲突?为什么要用链表?
  14. “一品四境”学JAVA——书籍推荐/路径规划
  15. Docker 的数据持久化项目实战
  16. matlab磁场计算公式,利用MATLAB计算电磁场有关分布.doc
  17. 手机自动识别软件项目举例
  18. Android项目实战系列—基于博学谷(四)我的模块(上)
  19. pacemaker+drbd主从
  20. Facebook身份验证如何有效通过

热门文章

  1. h5 字体加粗_HTML中如何将字体加粗
  2. 四级英语口语模拟测试软件,英语四级口语模拟题:非常有用
  3. 多年未用photoshop后,我忘记了p图(将黑底图片修改为白底)
  4. 网站排名不好的解决方法
  5. MT7658芯片组资料,MT7658处理器参数介绍
  6. PHP快速输出26大小写字母
  7. ios12卡贴机(有锁)/无锁机 改电信VOLTE //高通基带//教程
  8. java 替换emoji表情,java 替换掉emoji表情
  9. Oracle 12C 新特性之 恢复表
  10. c语言魔方编程,用C语言编程玩转魔方阵小游戏