shd岗面试准备

一、装饰器

想添加功能,但是不改变原来的逻辑结构。所以在前面写了一个函数A,然后在被装饰的函数B前面写@A,这样就将B作为一个参数传入A,就可以在实现B的同时,T添加A的功能。

常用格式:

def deco(func):
    def wrapper(*args,**kwargs):
        res = func(*args,**kwargs)
        return res
    return wrapper

https://www.jb51.net/article/165063.htm

*表示:接收任意多个参数并自动解析为元组,元组就是不能改变的。

>>> def d(a,b,c):
  print(a,b,c)

  
>>> d(1,2,3)
1 2 3


>>> a=[1,2,3]
>>> b=[1,2,3]
>>> c=[1,2,3]
>>> d(a,b,c)
[1, 2, 3] [1, 2, 3] [1, 2, 3]

  
>>> d(*a)
1 2 3

test(*args):* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。

**表示: 将参数解析为字典。有关键字:键值。

**parameter用于接收类似于关键参数一样赋值的形式的多个实参放入字典中(即把该函数的参数转换为字典)。

字典:{a:b}

>>> def demo(**p):
  for i in p.items():
    print(i)

    
>>> demo(x=1,y=2)
('x', 1)
('y', 2)

二、迭代器

可以直接作用于for循环的对象统称为可迭代对象(Iterable)。
可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator)。
所有的Iterable均可以通过内置函数iter()来转变为Iterator。

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>> 

三、生成器

如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator。返回迭代函数值,然后下次从暂停位置继续。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器生成器一次只能产生一个值,这样消耗的内存数量将大大减小,而且允许调用函数可以很快的处理前几个返回值,因此生成器看起来像是一个函数,但是表现得却像是迭代器

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行

使用()来定义。例如a=sum(i for i in range(10))

使用yield函数,例如斐波那契数列

>>> def fibs():
	a = 0
	b = 1
	while True:
		a, b = b, a + b
		yield a

看上去,好像是死循环,因为永远为True,但是这是一个生成器,随时都可以被暂停,只要 yield, 就返回,就暂停了

我们用一个 for 语句把它打印出来,我们这里设置一下,如果大于100的话,就跳出循环,要不就会一直走下去:

>>> for each in fibs():
	if each > 100:
		break
	print(each, end = '  ')
 
	
1  1  2  3  5  8  13  21  34  55  89  

 这里的for是逼着调用下一个fibs,因为遇到yield就会停止和保存返回数据。

四、labmda表达式 

五、列表的切片

就是从列表中取出数值

#group members
groups = ["张三","李四","王五","赵六","老七"];

#print the members range of 0-2
print(groups[0:3]);

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值