函数四

函数

回顾

变量作用域

num = int(10)      # 内置变量   B
# num = 20         # 全局变量   G
def outer():
   # num = 30     # 闭包变量   E
   def inner():
       # num = 40 # 局部变量   L
       print(num)
   return inner
i = outer()
i()

注意: 访问顺序 LEGB

列表中元素大小写转换

l = ["pY","IS","eASY"]
bs_list =  [x.swapcase() for x in l]
print(bs_list)
迭代器

数据类型看并且可以使用for…in循环:

1> list,set,tuple,dict,string

2> generator[生成器] 【第一种形式: (),函数结合yield】

def lg(num):
   for i in range(1,num):
       yield i
l = lg(10)
# 生成器保存是算法,而列表保存内容是在内存中,列表不占优势,耗内存,生成器节约内存开销
print(sum(l))
# 生成器只被使用一次
print(sum(l))
gs = (x for x in range(1,10))
判断是否为生成器
from collections.abc import Iterable
isinstance(gs,Iterable)

关键字:

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
装饰器

作用: 程序代码运行时,动态增加功能

本质: 就是一个闭包,返回了函数的高阶函数

好处: 遵序开闭原则,对修改关闭,对扩展开放

def demo():
	print("demo func")
def func():
	print("demo func")
	print("func")
func()
# y是形参,是函数
def demo(y):
   print("demo func")
   y()
@demo
def func():
	print("func")
func是实参   

带参数装饰器

def demo(func):
   def inner(age):
       if age<=10:
           mystr = "children"
       elif age <= 20:
           mystr = "midman"
       else:
           mystr = "oldman"
       return func(mystr)
   return inner

@demo
def func(p):
   print("你是一个这样的",p)

# 调用
func(60)

栈和队列

特点: 先进后出

具体化: 羽毛球桶

my_stack = []
# 向栈进入数据
my_stack.append(23)
my_stack.append(22)
my_stack.append(21)
my_stack.append(20)
my_stack.append(19)
print(my_stack)

my_stack.pop()
print(my_stack)
my_stack.pop()
print(my_stack)
my_stack.pop()
print(my_stack)
my_stack.pop()
print(my_stack)
my_stack.pop()
print(my_stack)
结果: 
[23, 22, 21, 20, 19]
[23, 22, 21, 20]
[23, 22, 21]
[23, 22]
[23]
[]
队列

特点:先进先出

import collections
queue = collections.deque([1,20,25,40])
print(queue)
# 入队一年
queue.append(68)
print(queue)
queue.append(77)
print(queue)

# 出队
queue.popleft()
print(queue)
queue.popleft()
print(queue)
闭包

闭包是一种函数框架包

1.内层函数定义在外层函数之内

2.内层函数引用外层的参数进行设定特定的功能

3.外层函数返回内层函数名

4.如a=f()通过配合赋值运算将外层的返回值,也就是将内层的函数名赋给a

5.通过这变量a来间接调用内层函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值