首页 > 编程语言 >学习python第十天

学习python第十天

时间:2024-10-31 21:48:37浏览次数:7  
标签:__ return 第十天 python self 学习 func print def

今天学习了闭包,语法糖(列表推导式),装饰器,迭代器,生成器相关笔记如下

'''
知识点:
    1.闭包
    2.语法糖(列表推导式)
    3.装饰器
    4.迭代器
    5.生成器
'''

#高阶函数
# def func(a):
#     res=a()  #func2()
#     print(a())
#
# def func2():
#     return "python"
#
#
#
# func(func2())

#嵌套函数
# def func1():
#     def func2():
#         print("hello,world")
#     return func2()
#
# func1()

#闭包
def func1(a):
    def func2():
        print(a+a)
    return func2

#func1(2)()
#列表推导式
#三目运算暂时不讲

a=[]

for i in range(10):
    a.append(i)

#print(a)

b=[i for i in range(10)]  #列表推导式 用的地方很多
#print(b)

#不改变原有的调用方式,但是可以给函数添加新的功能
# def girl():
#     return "如此美丽"
#
# print(girl())

# def girl():
#     return "小明"+"如此美丽"

#print(girl())

# def modify(func):
#     result=func()
#     return "小明"+result

#print(modify(girl))
#装饰器(闭包做的)
def modify(func):
    def wrapper():
        print("开始验证")#当成代码逻辑
        result=func()
        return "小明"+result
    return wrapper


@modify
def girl():
    return "如此美丽"

print(girl())

#python 内置装饰器 3个
class Rectangles:
    def __init__(self,length,width):
        self.length=length
        self.width=width

    def area(self):
        areas=self.length*self.width
        return areas

    @property#像属性一样访问我们的方法,调用可以不用括号
    def areas(self):
        areas=self.length*self.width
        return areas

    @staticmethod #静态方法 和self进行解绑
    def func():
        print('HELLO,WORLD')

    @classmethod  #类方法  传递的就是类本身
    def show(cls):
        print("python")

a=Rectangles(10,5)
#print(a.area())
#print(a.areas)
#a.func()
#Rectangles.func()

#使用类来做装饰器
class TestClass:
    def __init__(self,func):
        self.func=func

    def __call__(self, *args, **kwargs):
        print("正在验证")
        return self.func

@TestClass
def func_test():
    print("qi")

func_test()












#带参数的装饰器

def func1(a):
    def func2(func):
        def func3(*args,**kwargs):
            return a+func(*args)
        return func3
    return func2

@func1("haha")
def qiyue(c):
    return "heihei"+c

print(qiyue("嗯嗯"))
#迭代器  优势是可以优化内存,惰性计算
from itertools import count

li=[1,2,3,4,5,6,]

#print(dir(li))
#__iter__ 代表是一个可迭代的对象
#__next__
'''
['__add__', '__class__', '__contains__', '__delattr__',
 '__delitem__', '__dir__', '__doc__', '__eq__',
 '__format__', '__ge__', '__getattribute__', '__getitem__', 
'__gt__', '__hash__', '__iadd__', '__imul__', '__init__', 
'__init_subclass__', '__iter__', '__le__', '__len__', 
'__lt__', '__mul__', '__ne__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__reversed__', 
'__rmul__', '__setattr__', '__setitem__', 
'__sizeof__', '__str__', '__subclasshook__', 
'append', 'clear', 'copy', 'count', 'extend', 
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

'''#有__iter__没有__next__说明是一个可迭代对象
a=iter(li)
print(dir(a))
'''
['__class__', '__delattr__', '__dir__', '__doc__', 
'__eq__', '__format__', '__ge__', '__getattribute__', 
'__gt__', '__hash__', '__init__', '__init_subclass__',
 '__iter__', '__le__', '__length_hint__', '__lt__', 
 '__ne__', '__new__', '__next__', '__reduce__', 
 '__reduce_ex__', '__repr__', '__setattr__', '__setstate__',
 '__sizeof__', '__str__', '__subclasshook__']
'''#有了__next__说明是一个迭代器
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))

# itr=iter(li)
# try:
#     while True:
#         a=next(itr)
#         print(a)                    #本质是一个for循环
# except StopAsyncIteration as e:
#     pass

#生成器

# def func():
#     yield 1
#     yield 2
#     yield 3
#     yield 4
#
# b=func()
# print(b.__next__())
# print(next(b))

def cycke(a,n):
    count = 0
    while True:
        if count<n:
            count +=1
            yield a
        else:
            break

haha = cycke("七月",8)

print(haha)
for i in haha:
    print(i)




标签:__,return,第十天,python,self,学习,func,print,def
From: https://blog.csdn.net/WuMingf_/article/details/143418470

相关文章

  • Request&Respond学习
    一、RequestHttpServletRequest对象代表客户端的HTTP请求。当客户端(通常是浏览器)向Servlet发送请求时,Servlet容器会创建一个HttpServletRequest对象,并将其作为参数传递给service()、doGet()、doPost()等方法。常用方法获取请求参数StringgetParameter(Stringname):获取......
  • python的基本数据类型有哪些
    摘要:PYTHON的基本数据类型主要包括:1、数字类型2、字符串类型3、列表类型4、元组类型5、集合类型6、字典类型。数字类型是最常见的数据类型,涉及整数、浮点数、复数等。数字类型在数据科学、机器学习等领域尤为重要,其包含了整形(Int)、浮点型(Float)和复数(Complex)等子类型。它们分......
  • Python基于TensorFlow实现卷积神经网络-双向长短时记忆循环神经网络加注意力机制回归
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后关注获取。1.项目背景随着大数据时代的到来,对复杂数据结构的理解和预测成为许多领域的重要课题。在这些领域中,无论是视频分析、语音识别还是自然语言处理,都面临着需......
  • Java进阶学习笔记64——IO流
    IO流:输入输出流,就是读写数据的。IO流的应用场景:怎么去学习IO流?1、先搞清楚IO流的分类、体系?2、再挨个学习每个IO流的作用、用法。IO流的分类:按流的方向分为:按流中数据的最小单位,分为: IO流总体上来看就有四大流:字节输入流: 把磁盘或网络中的数据以一个个......
  • Java进阶学习笔记63——字符集
    常见字符集介绍:美国人:英文字母(大小写)数字、标点符号、特殊字符。标准字符集:ASCII码:标准ASCII字符集:ASCII:美国信息交换标准代码,包括了英文、符号等。标准ASCII使用1个字节存储一个字符,首位是0,总共表示128个字符,对美国人老说完全够用。中国人自己的字符集:GBK(汉字内......
  • Python常用数据结构
    1.列表(List)列表是Python中最灵活的数据结构之一,像个能装万物的大箱子。你可以把任何类型的对象放进来,甚至可以把列表放进列表里,真是个魔法箱!功能特性:可变:你可以随时增加、删除、修改列表中的元素。有序:元素按插入顺序排列创建和基本操作:#创建一个空列表my_list=[]......
  • 华为OD机试-(E卷,100分) - 补种未成活胡杨(Java & Python& JS & C++ & C )
    最新华为OD机试题目描述近些年来,我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨(编号1-N),排成一排。一个月后,有M棵胡杨未能成活。现可补种胡杨K棵,请问如何补种(只能补种,不能新种),可以得到最多的连续胡杨树?输入描述N总种植数量,1<=N<=100000M未成活胡杨数量,M个空格......
  • 二叉树专题学习
    前言:由于二叉树这一章的题型比较多,涉及到的递归程序也较多,所以单开一个随笔来记录这个学习过程,希望对读者有帮助。理论知识基础在二叉树的选择题中,常常会涉及到对于最多或最少结点、最大或最小高度、求叶子结点个数这几类经典的问题。上机题1.二叉树的建立和遍历P1305新二......
  • 洛谷Python顺序结构题解合集
    P5705【深基2.例7】数字反转a=s[0]b=s[1]c=s[2]d=s[4]print(f"{d}.{c}{b}{a}")P5706【深基2.例8】再分肥宅水ans=float(a[0])/int(a[1])beizi=2*int(a[1])print(f"{ans:.3f}\n{beizi}")P5708【深基2.习2】三角形面积p=0.5*(a+b+c)ans=pow((p*(p-a)*(p-b)*(p-c)),0.5......
  • 学习高校课程-软件设计模式-责任链模式和命令模式(lec9)
    原文链接ChainofResponsibility:ProblemExample:anonlineorderingsystem示例:在线订购系统–Therequestmustpassaseriesofchecks–Newrequirements:validation,filteringrepeatedfailedrequests,speedingupbyreturningcachedresults,andmore–......