基本补充以及函数
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第三个值
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()取值

浙公网安备 33010602011771号