python之高级编程【面试必问】

1、 闭包函数必须满足三个点:                    
 1)函数中嵌套一个函数                     
 2)外层函数返回的是内层函数的函数名              
 3)内层函数对外部作用域有非全局变量的引用(不能引用全局变量) 
                                 
"""                                                        
# b = 2                          
# def func():                    
#     a = 10                     
#     def wrapper():             
#         print(a)               
#         print("内部嵌套的函数")       
#     return wrapper             
#                                
                                 
2、 装饰器的作用:在不修改原功能代码的基础上,给代码扩展新的功能。
                                 
# def func(fu):                  
#     def wrapper():             
#         print("--------开始执行----
#         fu()                   
#         print("--------结束执行----
#                                
#     return wrapper             
#                                
# @func                          
# # 打印两个数的和                      
# def add():                     
#     a = 10                     
#     b = 20                     
#     print("a + b =", a + b)    
#                                
# add()                          
 3、可迭代对象(iterable):只要可以通过for循环进行遍历的都
                                 
    迭代器(iterator):能够使用next函数取值(取完所有值之
    所有的可迭代对象都可以使用内置函数iter()转换为迭代器
                         
                                 
# li = [11,22,33]                
#                                
# li2 = iter(li)                 
#                                
# print(li2)                     
#                                
# print(next(li2))               
                                 
                  
4、生成器(generator):一种特殊的迭代器,比迭代器多几个方法
send():和生成内部进行数据交互               
                                 
生成器的定义:                          
                                 
第一种:生成器表达式                       
                                 
第二种:生成器函数                        
    只要函数中定义yield这个关键字,那么这个函数就不再是一
    生成器函数在调用时,会自动返回一个生成器对象       
                                 
                                 
                       
# 生成器表达式                         
#                                
# g1 = (i for i in range(10))    
# print(g1)                      
# print(next(g1))                
                                 
# 生成器函数                          
# def gen():                     
#     print("--------开始执行-------"
#     for i in range(10):        
#         res = yield i          
#         print(res)             
#                                
# g2 = gen()                     
# print(g2)                      
# print(next(g2))                
# print(g2.send(666))            
                                 
5、深浅复制【一般是列表嵌套列表】                
# import copy                    
li = [4,5,6]                     
list1 = [1,2,3,li]         
      
#浅复制:列表自带的copy()方法:复制一层,表面是什么就是什
list2 = list1.copy()             
li.append(999)                   
print(list1,id(list1))           
print(list2,id(list2))           
                                 
#深复制deepcopy【需要导入copy模块】:会把嵌套列表的
                                 
# list3 = copy.deepcopy(list1)   
# print(list1,id(list1))         
# print(list3,id(list3))         
                                 
# li.append(999)                 
# print(list1,id(list1))         
# print(list3,id(list3))         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值