pyrhon学习_day12___习题讲解及装饰器

一、习题讲解

1、写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组。例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)]

def cards():
    num=[]
    for v in range(2,11):
        num.append(v)
    num.extend([‘J‘,‘Q‘,‘K‘,‘A‘])
    type=[‘红心‘,‘草花‘,‘方块‘,‘黑桃‘]
    result=[]
    for i in num:
        for j in type:
            result.append((j,i))
    return result

print(cards())

2、写函数,传入n个数,返回字典:{‘max’:最大值,’min’:最小值}。例如: min_max(2, 5, 7, 8, 4),返回: {‘max’:8,’min’:2}

def max_min(*args):
    the_max=args[0]
    the_min=args[0]
    for i in args:
        if i>the_max:
            the_max=i
        if i<the_min:
            the_min=i
    return {‘max‘:the_max,‘min‘:the_min}
print(max_min(2,4,1,55,-3))

3、写函数,专门计算图形的面积。其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积

   调用函数area(‘圆形’, 圆半径)  返回圆的面积  调用函数area(‘正方形’, 边长)  返回正方形的面积  调用函数area(‘长方形’, 长,宽)  返回长方形的面积
#方法一:import math
def area(name,*args):
    def areas_rectangle(x,y):
        return x*y

    def area_square(x):
        return x**2

    def area_round(r):
        return math.pi*r*r

    if name=="圆形":
        return  area_round(*args)
    elif name=="正方形":
        return area_square(*args)
    elif name=="长方形":
        return areas_rectangle(*args)

print(area(‘长方形‘, 3, 4))
print(area(‘圆形‘, 3))
print(area(‘正方形‘, 3))
#方法二(eval)
import math
def area(name,*args):
    def rectangle(x,y):
        return x*y

    def square(x):
        return x**2

    def round(r):
        return math.pi*r*r
    if name in locals():
        return eval(name)(*args)
print(area(‘rectangle‘,13,2))
4、写函数,传入一个参数n,返回n的阶乘。例如: cal(7) 计算7 * 6 * 5 * 4 * 3 * 2 * 1
ef cal(n):
    result=1
    for i in range(n,0,-1):
        result=result*i
    return result

print(cal(7))

5、斐波那契数列:[1,1,2,3,5,8,13,...],每个元素为前两个元素之和

  (1)当要求长度小于某个值的时候:

l = [1,1]
while len(l)<20:
    l.append(l[-1]+l[-2])
print(l)

  (2)当要求小于某个数的时候:

l = [1,1]
while l[-1]<4000000:
    l.append(l[-1]+l[-2])
del l[-1]
print(l)

二、函数装饰器

  在不修改原函数的内容及调用方式的前提下,对原函数进行功能扩展

1、计算函数执行时间实例

import time
def timmer(func):                                                #装饰器
    def innner(*args,**kwargs):
        start=time.time()
        ret=func(*args,**kwargs)
        end=time.time()
        print(start-end)
        return ret
    return innner

@timmer                                                          #语法糖,等价name=timmer(name)

def name(a,b):                                                   #被装饰函数
    print(‘老板万岁‘)
    return a+b

name(4,6)

2、打印当前正在调用函数名的实例

def wrapper(func):
    def inner(*args,**kwargs):
        print(‘你当前调用的函数是:%s‘ %func.__name__)
        ret=func(*args,**kwargs)
        return ret
    return inner
@wrapper
def welcome(name):
    print(‘welcome,%s‘ %name)
welcome(‘zhangli‘)
@wrapper
def home():
    print(‘欢迎来到home页‘)
home()

  

 
时间: 2024-10-23 08:45:01

pyrhon学习_day12___习题讲解及装饰器的相关文章

Python学习笔记__4.4章 装饰器(添加额外功能)

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 装饰器可以帮助我们为已经存在的对象添加额外的功能 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 装饰器经常用于有切面需求的场景,比如:插入日志.性能测试.事物处理.缓存.权限校验等场景. 1.1.为now函数 加一行日志 # 定义now函数 def now(): print('2018-5-8') # 编辑decorator def log(func):

Python学习笔记(十一)装饰器

摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000#0 本文章完全用来个人复习学习,侵删: 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25') ... >

Python学习笔记(2)装饰器

1,.概念 装饰器英文名Decorator,装饰器的作用就是为已经存在的对象添加额外的功能.总的来说,装饰器其实就是一个函数,一个用来包装函数的函数,所以他的参数是被修饰的函数对象,返回一个修改之后的函数对象,将其重新赋值原来的标示符,并永久丧失对原始函数对象的访问. 2.装饰器语法 1.def deco(func): 2. print func 3. return func 4[email protected] 5.def foo():pass 6.foo() 第一个函数deco是装饰函数,它

python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: 1 >>> g = (x * x for xin range(10)) 2 >>> g3 <generator object <genexpr> at 0x1022ef630> 此处g就是一个生成器. 迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是gene

Python 3 学习笔记(六)----装饰器

一.定义 装饰器本质是函数,装饰其他函数,就是为其它函数添加附加功能 二.装饰器原则 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 三.实现装饰器的必要知识 1.函数即是变量 1 # def foo(): 2 # print("in the foo") 3 # bar() #bar未定义 4 # foo() 5 6 7 # def bar(): 8 # print("int the bar") 9 # def foo(): 10 # prin

python学习笔记-(八)装饰器、生成器&amp;迭代器

本节课程内容概览: 1.装饰器 2.列表生成式&迭代器&生成器 3.json&pickle数据序列化 1. 装饰器 1.1 定义: 本质上是个函数,功能是装饰其他函数—就是为其他函数添加附加功能 1.2 装饰器原则: 1)  不能修改被装饰函数的源代码: 2)  不能修改被装饰函数的调用方式: 1.3 实现装饰器知识储备: 1.3.1 函数即“变量” 定义一个函数相当于把函数体赋值给了函数名 变量可以指向函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Python学习笔记(yield与装饰器)

yeild:返回一个生成器对象: 装饰器:本身是一个函数,函数目的装饰其他函数(调用其他函数) 功能:增强被装饰函数的功能 装饰器一般接受一个函数对象作为参数,以便对其增强 @原函数名  来调用其他函数 递归:递归需要边界条件,递归前进段和递归返回段: 10*9*8*7*6*5*4*3*2*1 10*9 10*(10-1)*(10-1)-1) 协程: 函数的设计规范: 耦合性: (1)通过参数接受输入,以及通过return产生输出以保证函数的独立性: (2)尽量减少使用全局变量进行函数间通信:

Python学习笔记(12)装饰器

import time def show_time(f): def inner(a, b): start = time.time() f(a, b) end = time.time() print('spend %s' % (end - start)) return inner @show_time # add = show_time(add)def add(a, b): print(a + b) time.sleep(1) add(3, 4) import timeimport functoo

python学习day07 高阶函数 装饰器 语法糖

语法糖对于计算机的运行并没有任何的好处,但是对于程序员的好处是很大的,方便我们写代码,所以称为糖 #******************************装饰器************************* # 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. # 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景 import time def func1(): print('in f