Python基础开发 [高级函数及面向对象]

本文通过一系列Python编程练习,涵盖了闭包、装饰器、过滤函数、reduce计算、列表乘法重载、多继承、类属性与实例属性、类方法与静态方法等内容。还介绍了模块的制作、发布和安装过程,包括了解决模块缺失问题的方法。
摘要由CSDN通过智能技术生成

Python基础练习 [高级函数及面向对象]

1.(1)闭包需要满足的条件是什么?
A.外函数中定义了内函数B.内函数使用了外函数的非全局变量C.外函数最终返回的是内函数的引用
(2) 按照上面三个条件创建一个用于计算平方根的闭包函数
程序:【程序的排版按照python编程规范,要注意空格的所对应的编码层级】

#函数闭包
#outerfunc为外函数
import math
def outerfunc():
    y =int(input())      #y是外函数的非全局变量

    #innerfunc是内函数
    def innerfunc():

        #内函数使用了外函数的非全局变量
        return math.sqrt(y)

    #外函数最终返回的是内函数的引用
    return innerfunc
#然后执行如下代码:
func = outerfunc()
sqrtone=func()
print("内函数计算后的平方根是:"+str(sqrtone))
#输入16输出4
#因为外函数最终返回的是内函数的引用,所以变量func为内函数innerfunc的引用,
#func(),变量后面加了括号,则是执行内函数,所以最终结果为4。
#内函数实现的是返回外函数的引用,外函数实现的是具体的运算功能

结果如图:
在这里插入图片描述
2.现有一函数内容如下:
函数内容
要求为test函数创建装饰器,装饰器函数有入参,在装饰器中打印出装饰函数入参,执行结果要求如下:
在这里插入图片描述

程序:
#开始创建装饰器
def q(w1):
    def inner(num1,num2):
        print("装饰器开始装饰:")
        print("--打印装饰器的入参为:",num1,num2,"我是装饰器的入参啊")
        w1(num1,num2)
        return  'huatec'
    return inner
@q
def test(num1,num2):
    print("被验证函数开始,被修饰函数入参之和为:",num1+num2)
    return 'huatec'
#调用test函数
print(test(1,2))

结果如图:
在这里插入图片描述
3.使用过滤函数打印出1~100内所有能被3整除的数
程序:

 #filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
# 该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
import math
#先定义判断函数,返回判断后的结果值
def bszc(x):
    return x%3==0
#开始调用过滤函数,过滤时需要的参数是判断函数和列表,将列表中的元素一一放到判断函数中判断,过滤后返回满足判断函数的元素所组成的新列表,此时是引用变量
newlist = filter(bszc,range(1, 101))
print(list(newlist))
#print函数在打印变量时一般会以字符串形式显现,如果没有打印出目标变量而是字符串的话,用强制转换来进行(据具体的类型而变换)

结果如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值