基本补充以及函数



set,是一个无序且不重复的元素集合

深浅copy
一、数字和字符串
对于数字和字符串而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。
二、其他基本数据类型
对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。

函数
一、定义和使用
def 函数名(参数):
       
    ...
    函数体
    ...
    返回值
二、内置函数

lambda表达式

# ###################### 普通函数 ######################
# 定义函数(普通方式)
def func(arg):
    return arg + 1
    
# 执行函数
result = func(123)
    
# ###################### lambda ######################
    
# 定义函数(lambda表达式)
my_lambda = lambda arg : arg + 1
    
# 执行函数
result = my_lambda(123)

递归函数
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368...
def func(arg1,arg2):
    if arg1 == 0:
        print arg1, arg2
    arg3 = arg1 + arg2
    print arg3
    func(arg2, arg3)
  
func(0,1)
装饰器
装饰器的功能:在不修改原函数及其调用方式的情况下对原函数功能进行扩展

装饰器的本质:就是一个闭包函数

def wrapper(func):  # 装饰器
  def inner(*args, **kwargs):
    '''函数执行之前的内容扩展'''
    ret = func(*args, **kwargs)
    '''函数执行之前的内容扩展'''
    return ret
  return inner

迭代器
一、可迭代协议
可以被迭代要满足要求的就叫做可迭代协议。内部实现了__iter__方法
字符串,列表,元组,集合,字典都是可迭代的
二、迭代器协议
内部实现了__iter__,__next__方法
三、相同点
都可以使用for循环
生成器
常规定义函数,但是,使用yield语句而不是return语句返回结果。yield语句一次返回一个结果。
def  func(): #这是一个简单的函数
        a=1
        return a
print(func())


def func():
    print('第一次')
    a = 1
    yield a  # 返回第一个值
    print(’第二次')
    yield 12  # 返回第二个值


ret = func()  # 得拿到一个生成器
print(next(ret))#取第一个值
print(next(ret))# 取第二个值
print(next(ret))# 取第三个值,会报错,因为没有yield第三个值
 
yield from 就相当于for循环
 
列表推导式
l=[i 条件语句]
生成器表达式
类似列表推导式
l=(i 条件语句)#yeild
通过next()取值
posted @ 2019-03-17 13:02  爱学习的红领巾  阅读(153)  评论(0编辑  收藏  举报