Python学习笔记 2022/04/09

本文详细介绍了Python中的变量与对象概念,包括可变与不可变对象的特性。深入探讨了深拷贝与浅拷贝的区别,以及在不同场景下的应用。接着,讲解了作用域的层次,展示了如何在局部作用域中修改全局变量。此外,文章还阐述了高阶函数,如map、reduce、filter和sorted的用法。最后,提到了匿名函数lambda的使用场景和优势。
摘要由CSDN通过智能技术生成

1.变量与对象

对象:内存中存储数据的实体,有明确类型
变量:指向对象的指针

Python中一切都是对象,函数也是对象
对象分为:
可变对象——对象对应内存值可以改变,变量改变后对象改变
比如列表,字典,集合
不可变对象——相反,变量改变的话会重新开辟内存,变量指向新内存——int \ float \ str \ tuple

对象引用计数为0时,对应内存被回收

2.深拷贝与浅拷贝

不可变对象——无论深浅,地址一样
可变对象——
1) 直接赋值 ——前后变量没有任何隔离
2)浅拷贝——copy()函数,拷贝第一层,不拷贝子对象,子对象仍然是引用
3) 深拷贝——deepcopy()函数,全部拷贝,前后变量完全隔离,而非引用

注意:以上两个函数都包含在copy模块中

3.作用域(?)

从内而外:

  • 局部
  • 嵌套
  • 全局
  • 内置

如何实现局部变量修改全局变量?
1)使用关键字global
2) 使用list/dict等可变对象的内置函数

4.高阶函数

指接受函数作为输入或者输出的函数

  • map() ——可以将一个函数映射作用到可迭代的序列中,并返回函数输出的序列
  • reduce() ——先使用输入函数对序列中的前两个元素进行操作,得到的结果再与第三个元素进行运算,知道最后一个元素
  • filter() ——通过输入函数对可迭代序列进行过滤,返回满足过滤条件的可迭代序列
  • sorted()——完成对可迭代序列的排序,返回一个新的列表,关键字key指定标准,reverse代表是否反向

5.匿名函数

# lambda表达式又叫匿名函数,常用来表示内部仅包含1行表达式的函数
# 如果一个函数的函数体仅有1行表达式,则该函数就可以用lambda 表达式来代替
# 语法格式:fun = lambda [可选参数列表]:表达式
# 可选参数列表相当于定义函数的时候,指定的函数列表
# fun 代表函数的返回值
# lambda表达式的意义两点:
# 1#:对于只有一行的函数,使用此方式可以省去定义函数的过程,使代码简洁明朗,"苗条健康".
# 2#:对于不需要重复使用之函数,此方式可以在用完之后,立即释放,提高程序执行的性能


def fun1(a1,a2):
    return a1 + a2
fun2 = lambda a1,a2:a1+a2
def fun3():
    print("孤山寺北贾亭西,水面初平云脚低。")
fun4 = lambda : print("孤山寺北贾亭西,水面初平云脚低。")
print(fun1(66, 77)

原文地址

6.迭代器与生成器 (先略过,学累了,后续补充)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值