Day 11 函数名,闭包,装饰器. +作业
'''
一、函数名.
def func():
print(5555)
print(func)
#输出结果 <function func at 0x026B5E88> 打印函数地址. # 1. 函数名的内存地址 ,print(func)
f=func
f() #fun() def func():
print(555) def func1():
print(111)
def func2():
print(222)
def func3():
print(333)
l1 =[func(),func1(),func2(),func3()]
for i in l1 :
i
# 结果 :
# 555
# 111
# 222
# 333 def func2():
print(222)
def func3(x):
x() #func2()
func3(func2)
'''
def func2():
print(222)
def func3(x):
print(a)#func2()
return a
a= 3
ret = func3(a)
print(ret)
'''
#运行结果
3
3
'''
'''
def func2():
print(222)
def func3(x):
x()
func3(func2)
# 结果为 222 #函数值作为变量. def func2():
print(222)
def func3(x):
print(x)
return x
ret = func3(func2) #x func2
ret()
# 以上两句话相当与
# f = func2
# f()
# 打印结果:
# 3
# 3 # 1 . 函数的内存地址.
#2. 函数名可以复制给其他变量。
#3. 函数名可以当做容器类的元素
#4. 函数名可以当做函数的参数 。
#5. 函数名可以作为函数的返回值。 ''' # 二 、闭包
#内层函数对外层函数(非全局)的变量的引用,叫做闭包.
def wrapper():
name ="alex"
def inner():
print(name)
inner()
print(inner.__closure__)
wrapper()
# 打印结果:
# alex
# (<cell at 0x00460950: str object at 0x0043C8A0>,) def wrapper(name):
def inner():
print(name)
inner()
wrapper("alex")# 也是闭包函数.
# 打印结果:alex #方法一、
name ="alex"
def wrapper():
def inner():
print(name)
inner()
print(inner.__closure__)#检查是否为闭包,none就不是闭包
wrapper()
# 打印结果:
# alex #闭包的用处 (必考)
# 内层函数对外层非全局变量的引用
# 如果说内层函数时个闭包,python
# 内部有个机制,遇到闭包他会在内存中开启
# 一个内存空间,不会关闭。
'''
# 方法二、
def wrapper():
def inner():
print(666)
return inner
wrapper()() ''' 作业题
1、整理装饰器的形成过程,背诵装饰器的固定格式
2、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
3、编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果(升级题)
3.1.为题目3编写装饰器,实现缓存网页内容的功能:(升级题)
具体:实现下载的页面存放于文件中,如果网页有对应的缓存文件,就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
4.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
def func(*args):
l1 =[]
for i in args:
for j in range(1,14):
if j ==1 :
j="A"
l1.append((i,j))
return l1
ret=func("黑","红",'花',"片")
print(ret)
[('黑', 1), ('黑', 2), ('黑', 3), ('黑', 4), ('黑', 5), ('黑', 6), ('黑', 7), ('黑', 8), ('黑', 9), ('黑', 10), ('黑', 11), ('黑', 12), ('黑', 13), ('红', 1), ('红', 2), ('红', 3), ('红', 4), ('红', 5), ('红', 6), ('红', 7), ('红', 8), ('红', 9), ('红', 10), ('红', 11), ('红', 12), ('红', 13), ('花', 1), ('花', 2), ('花', 3), ('花', 4), ('花', 5), ('花', 6), ('花', 7), ('花', 8), ('花', 9), ('花', 10), ('花', 11), ('花', 12), ('花', 13), ('片', 1), ('片', 2), ('片', 3), ('片', 4), ('片', 5), ('片', 6), ('片', 7), ('片', 8), ('片', 9), ('片', 10), ('片', 11), ('片', 12), ('片', 13)]
5.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
例如:min_max(2,5,7,8,4)
返回:{‘max’:8,’min’:2}
def min_max(*args):
max = args[0]
min = args[0]
for i in args:
if i >max :
max =i
if i< min :
min = i
return {'max':max ,'min':min}
print(min_max(2,3,4,6,78,5))
6.写函数,专门计算图形的面积
其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
调用函数area(‘圆形’,圆半径) 返回圆的面积
调用函数area(‘正方形’,边长) 返回正方形的面积
调用函数area(‘长方形’,长,宽) 返回长方形的面积
def area():
def 计算长方形面积():
pass
def 计算正方形面积():
pass
def 计算圆形面积():
pass
import math
def func(*args, **kwargs):
if args[0] == "圆形":
def 圆形():
are = math.pi *args[1]**2
return are
return 圆形()
elif args[0] =='正方形':
def 正方形():
are = args[1]**2
return are
return 正方形()
else:
def 长方形():
are = args[1]*args[2]
return are
return 长方形()
print(func('圆形',4))
7.写函数,传入一个参数n,返回n的阶乘
例如:cal(7)
计算7*6*5*4*3*2*1
‘’‘’
def cal(n):
sum = 1
for i in range(1,n+1):
sum =sum*i
return sum
print(cal(7))
输出结果为 5040
‘’‘’
8、用面向函数的思想完成购物车作业(升级题)
函数一:实现三次登陆功能
函数二:实现新用户注册功能
函数三:购物功能
进阶任务:将购物功能拆分成多个函数
Day 11 函数名,闭包,装饰器. +作业的更多相关文章
- 第四天 内置函数2 随机码 装饰器 迭代器、生成器 递归 冒泡算法 JSON
关于函数的return li = [11,22,33,44] def f1(arg): arg.append(55) li = f1(li) print(li) 因为li = f1(li) 实际赋值的 ...
- python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)
一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...
- python 函数名 、闭包 装饰器 day13
1,函数名的使用. 函数名是函数的名字,本质就是变量,特殊的变量.函数名()加括号就是执行此函数. 1,单独打印函数名就是此函数的内存地址. def func1(): print(555) print ...
- 函数基础(三) 装饰器\闭包 day 12
目录 昨日回顾 可变长参数 * ** 函数对象 函数嵌套 名称空间和作用域 今日内容 闭包函数 装饰器 语法糖 装饰器模板 迭代器 昨日回顾 可变长参数 * *形参:接受多余的位置实参 *实参(可迭代 ...
- python 闭包@装饰器
1.装饰器 装饰器(Decorator)相对简单,咱们先介绍它:“装饰器的功能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的函数),并返回包装后的被装饰的函数”,听起来有点绕,没关系,直 ...
- Python 进阶_闭包 & 装饰器
目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...
- 闭包&装饰器详解
闭包 先不着急看闭包的定义,让我们从一段示例代码开始.如果将上一个示例稍微修改下: >>> def outer(): ... x = 1 ... def inner(): ... p ...
- 【Python】 闭包&装饰器
python中的函数本身就是对象,所以可以作为参数拿来传递.同时其允许函数的层级嵌套定义,使得灵活性大大增加. 闭包 闭包的定义:将函数的语句块与其运行所需要的环境打包到一起,得到的就是闭包对象.比如 ...
- Python闭包装饰器笔记
Python三大器有迭代器,生成器,装饰器,这三个中使用最多,最重要的就是装饰器.本篇将重要从函数嵌套开始讲起,从而引入闭包,装饰器的各种用法等. python中的一切都是一个对象(函数也是) 1.首 ...
- python基础之函数当中的装饰器
在实际工作当中存在一个开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新 ...
随机推荐
- linux下静默安装 weblogic12.2.1.3中间件
第一步:准备需要的安装包文件,这里注意 weblogic12.2.*需要的最低JDK版本为1.8以上 1.查看当前的镜像列表:docker images 2.运行镜像,并进入容器,这里运行基本的cen ...
- VINS-mono详细解读
VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono ...
- linux引导系统
一.linux引导系统 1.选择操作系统 /etc/grub.conf 设置grub引导装载程序口令,使用单用户模式时必须输入此密码 password --md5 md5后的密码字符串(可以通过gru ...
- Linux系统 SecureCRT SecureFX 注册破解方法
1.创建脚本文件crack-binary.sh,内容如下: #!/bin/sh cd $1 cat SecureCRT | od -A n -v -t x1 | tr -d ' \n ...
- Ubuntu部分命令的使用简介
1.查看USB设备 lsusb #查看系统中的usb设备 lsusb –v #查看详细的usb设备信息 2.ubuntu mount u盘 第一步:查看U盘信息 sudo fdisk -l 得到类似 ...
- 为了记忆和方便翻阅 vue构建后的结构目录说明
一. ├── build // 项目构建(webpack)相关代码 记忆:(够贱) 9个 │ ├── build.js // 生产环 ...
- sqlserver将数据库的数据导成excel文档方法
sqlserver将数据库的数据导成excel文档方法 最近公司需要下载uniport的数据跟之前的数据进行对比,所以避免不了需要将数据库的数据导出来,把SQLServer表中的数据导出为Excel文 ...
- php文件上传代码解析
php文件上传代码解析 is_uploaded_file() //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...
- 转: JaxbContext生成xml文件或java类对象转化注解
JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换.在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版 ...
- 99 Times--Kate Voegele
歌手 Kate Voegele 是美国俄亥俄州的一位年轻创作型歌手,她会唱歌.会写歌.特 别擅长弹吉他.还会弹钢琴.她是美国新生代歌手中的佼佼者. 99 Times--Kate Voegele S ...