首页 > 其他分享 >2024-06-05 拷贝、函数、装饰器、迭代生成器

2024-06-05 拷贝、函数、装饰器、迭代生成器

时间:2024-06-10 18:02:15浏览次数:11  
标签:06 05 生成器 lists say time print new hello

一、浅拷贝

lists = [1,2,[6]]

内存空间不同,浅拷贝内容不变 

new_lists=copy(lists)
lists.append(7)
print(lists,new_lists)      //[1,2,[6],7]  [1,2,[6]]

改变列表中内容,内存空间相同,数值改变

new_lists=copy(lists)
lists[-1].append(7)
print(lists,new_lists)   //[1,2,[6,7]]

二、函数

1.返回值

可以返回多个值,元组类型

def hello():
    return 123,456,789
print(hello())         //(123,456,789)

交换变量值

a=22
b=33
a,b = b,a
print(a,b)    //33,22

返回值-----yield 生成器遍历打印

def get_data(num):
    x = 0
    y = 1
    for i in range(num):
        x,y = y,x+y
        yield x            //生成器

for i in get_data(10):
         print(i) 

2.不定长函数

*args返回元组类型,args可以换成其他

def hello(*args):
    print(min(args))
    
hello(5,2,1,6,3)        //(5,2,1,6,3)

 **kwargs返回字典类型,kwargs可以换成其他

def hello(**kwargs):
    print(kwargs)
hello(nihao ='谢谢',byeby = '再见')     //{'nihao': '谢谢', 'byeby': '再见'}

 3.参数

有确定数值写在变量后面

defhello(name,age=15):

4.递归函数

自己调用自己

def get_data(n):
    if n==1:
        return 1
    return n+get_data(n-1)
print(get_data(100))          //斐波那契数列  5050
    

5.装饰器

装饰器是一个接受函数对象作为参数并返回一个新函数的函数。

import time
def my_decorator(func):
    def wrapper(*args,**kwargs):
        begin_time = time.time()
        data=func()                     //func()调用say_hello(),把函数作为参数
        stop_time = time.time()
        print(stop_time-begin_time)
        return data
    return wrapper

@my_decorator
def say_hello():                        //Hello!
    time.sleep(3)                         3.06215522
    print("Hello!")                       ok
                                          
print(say_hello())                      //打印say_hello返回值
@my_decorator装饰器装饰say_hello(),实际上是将say_hello()函数作为参数传递给my_decorator,然后返回wrapper函数。
调用say_hello(),实际上是在调用wrapper函数,先记录开始时间,再调用原始的say_hello()函数,记录结束时间,计算并打印执行时间,最后返回say_hello()的返回值。

6.迭代

可迭代对象-->迭代器-->生成器 能被for循环遍历的元素

迭代器:能被next函数调用,并不断返回下一个值

迭代器包含1.生成器    2.被强制转成迭代器

lista = [1,2.3,4]
new_lists = iter(lists)   //强制转迭代器
print(next(new_lists))
print(next(new_lists))
print(next(new_lists))

生成器

data1 = (x for x in range(100))

标签:06,05,生成器,lists,say,time,print,new,hello
From: https://blog.csdn.net/m0_45266493/article/details/139480678

相关文章

  • 2024-06-06 闭包、常用函、类和实例
    一、闭包1.定义闭包是一个函数内部定义的内部函数,且可以访问外部函数的变量。常用与数据隐藏和信息封装。defhello():username='小小奇'defvoi()://内部函数变量returnusernamereturnvoi2.数据隐藏将变量封装在内部函数......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-006 连续因子
    L1-006连续因子一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3×5×6×7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数N(1<N<2^31)。输......
  • 2024.06.09 与显哥在办公室Mock Interview复盘
    我已刷题3月,现正准备着下周一Weride的电面;今日回办公室与显哥进行mockinterview,一起做题LC30。耗时50分钟而我没有做出,结束后与显哥复盘,发现以下问题:没有充分理解题意没有进行时空复杂度分析,事先确定求解的复杂度没有打草稿后再写代码在对代码进行解释时,不足够high-level;容......
  • 202400610刷题总结
    T1T559。T2(带权并查集)1380。把行和列的取值看成变量,其中行取1代表+1,列取1代表-1,为了凑x-y=c,这样可以拿并查集来做了。维护d[x],到根的距离,我们把边定义为+,反向走为-。这样就行了,如果在一个集合,那么判断距离是不是c。还可以差分约束,dfs(直接遍历一遍,遇到环就判断).#i......
  • Keysight 是德 DSOX3054G 数字示波器
    DSOX3054G示波器:500MHz,4个模拟通道DSOX3054G500MHz示波器提供了4个模拟通道、4Mpts存储器和1,000,000波形/秒的捕获率,以及8.5英寸电容触摸屏和区域触摸触发功能,同时标配嵌入式软件,其中可提供波形和测量直方图。500MHz4个模拟通道8.5英寸大尺寸电容触摸屏让......
  • Prov-GigaPath:新型数字病理基础模型|顶刊精析·2024-06-10
    小罗碎碎念顶刊精析|2024-06-10首先祝各位老师、师兄师姐、师弟师妹们端午节快乐!!小罗是社恐,所以就不一一发消息问候了,哈哈。今天这篇推文是昨天下午写完的,想着时间有点晚了,所以就放到今天发了。这篇文献想必很多研究病理组学的老师已经看到了,朋友圈也看到了这篇文献相......
  • 2024-06-09 英语学习纪要
    remedyv.补救,纠正,改进Thissolutioniseasilyremedied.n.处理方法,改进措施/药品,疗法/(走法律程序的)救济aherbalremedyThereisnosimpleremedyforunemploymentinconvenience可以用作动词这种单词可太牛逼了,gpt4o又告诉了我另一些英语中确实有一些带有典型名......
  • [AI资讯·0609] SamAltman建立了庞大投资帝国,通义千问Qwen2发布即爆火,OpenAI泄密者公
    AI资讯奥特曼28亿「投资帝国」曝光!不要OpenAI股份,当CEO最不赚钱开源超闭源!通义千问Qwen2发布即爆火,网友:GPT-4o危OpenAI泄密者公布165页文件:2027年实现AGI、计算集群将耗资千亿美元清华系细胞大模型登Nature子刊!能对人类2万基因同时建模奥特曼百万年薪挖角谷歌TPU人才,欲砸7万......
  • Honor of Kings 2024.06.03 50star (S35) AFK
    HonorofKings2024.06.0350star(S35)AFK来个赛季S35总结吧,这个赛季结束以后,可能要和【魔兽世界】一样AFK了,手游来说肯定没法子和WOW相比,干啥都是有队友才好玩。单排荣耀王者,基本都是肉肉队伍我玩的基本都是肉,爆发强的英雄,最好可以是万金油,免控那种无脑我不怎么玩......
  • SpringBoot社区配送服务系统小程序-计算机毕业设计源码88705
    摘要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,社区当然也不例外。社区配送服务系统小程序是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进......