'''
一、函数名.
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 函数名,闭包,装饰器. +作业的更多相关文章

  1. 第四天 内置函数2 随机码 装饰器 迭代器、生成器 递归 冒泡算法 JSON

    关于函数的return li = [11,22,33,44] def f1(arg): arg.append(55) li = f1(li) print(li) 因为li = f1(li) 实际赋值的 ...

  2. python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)

    一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...

  3. python 函数名 、闭包 装饰器 day13

    1,函数名的使用. 函数名是函数的名字,本质就是变量,特殊的变量.函数名()加括号就是执行此函数. 1,单独打印函数名就是此函数的内存地址. def func1(): print(555) print ...

  4. 函数基础(三) 装饰器\闭包 day 12

    目录 昨日回顾 可变长参数 * ** 函数对象 函数嵌套 名称空间和作用域 今日内容 闭包函数 装饰器 语法糖 装饰器模板 迭代器 昨日回顾 可变长参数 * *形参:接受多余的位置实参 *实参(可迭代 ...

  5. python 闭包@装饰器

    1.装饰器 装饰器(Decorator)相对简单,咱们先介绍它:“装饰器的功能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的函数),并返回包装后的被装饰的函数”,听起来有点绕,没关系,直 ...

  6. Python 进阶_闭包 & 装饰器

    目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...

  7. 闭包&装饰器详解

    闭包 先不着急看闭包的定义,让我们从一段示例代码开始.如果将上一个示例稍微修改下: >>> def outer(): ... x = 1 ... def inner(): ... p ...

  8. 【Python】 闭包&装饰器

    python中的函数本身就是对象,所以可以作为参数拿来传递.同时其允许函数的层级嵌套定义,使得灵活性大大增加. 闭包 闭包的定义:将函数的语句块与其运行所需要的环境打包到一起,得到的就是闭包对象.比如 ...

  9. Python闭包装饰器笔记

    Python三大器有迭代器,生成器,装饰器,这三个中使用最多,最重要的就是装饰器.本篇将重要从函数嵌套开始讲起,从而引入闭包,装饰器的各种用法等. python中的一切都是一个对象(函数也是) 1.首 ...

  10. python基础之函数当中的装饰器

    在实际工作当中存在一个开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新 ...

随机推荐

  1. 深入了解 php 底层机制 (-)洪定坤

  2. div+css隐藏内容样式方法

    div css隐藏内容样式方法     div+css隐藏内容方法 一般情况下,css隐藏的用途,如下: 1.对文本的隐藏 2.隐藏超链接(另类黑链) 3.对统计代码隐藏 4.隐藏超出图片 5.css ...

  3. MySql中4种批量更新的方法

    最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共有以下四种办法 1..replace into 批量更新 ...

  4. QFileInfo

    https://www.cnblogs.com/findumars/p/10247573.html

  5. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  6. 2018.09.15 poj2117Electricity(割点)

    传送门 其实求一个图删除一个点之后,联通块最多有多少. 直接tarjan求割点更新答案就行了. 但注意原图不一定连通. 代码: #include<iostream> #include< ...

  7. mysql报错排查总结

    mysql报错: [root@zabbix ~]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through sock ...

  8. Deployment failure on Tomcat 6.x. Could not copy all resources to D:\...\webapps\eptInfo. If a file is locked, you can wait until the lock times out to redeploy, or stop the server and redeploy, or ma

    tomcat服务并没有启动.工程中之前引了一个包,后来这个包被删除了,但是因为已经发布过这个工程了,所以classpath中就有这个包名了,这样发布的时候也会去找这个包但是已经不存在了,所以无copy ...

  9. HDU 1040 As Easy As A+B (排序。。。水题)

    题意:给定n个数,让你从小到大排序. 析:不说什么了. 代码如下: #include <cstdio> #include <iostream> #include <cst ...

  10. I2C总线驱动框架详解

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,I2C通信方法(”algorithm”)上层的,与 ...