python高级(1)

1、作用域的类型

• L(local)局部作用域
○ 函数内的命名空间
• E(enclosing)嵌套作用域
○ 外部嵌套函数的命名空间
• G(global)全局作用域
○ 所在模块(文件)的命名空间
• B(built-in)内置作用域
○ Python内置模块的命名空间

2、搜索变量名的优先级:

局部作用域 > 嵌套作用域 > 全局作用域 > 内置作用域

3、global与nonlocal关键字

• global适用于函数内部修改全局变量的值
• nonlocal适用于嵌套函数中内部函数修改外部变量的值

4、python针对变量的内存管理机制

id()函数
每个对象各有多少个引用,简称引用计数
这个对象的引用计数变为0时,它通常会被垃圾回收

5、浅拷贝和深拷贝

copy.copy与copy.deepcopy,分别表示浅拷贝与深拷贝。
• 浅拷贝: 不管是多么复杂的数据结构,浅拷贝只会拷贝第一层.
• 只拷贝内存地址 不拷贝内容。
• 深拷贝会完全复制原变量的所有数据(递归),在内存中生成一套完全一样的内容,我们对这两个变量中的一个进行任意修改都不会影响另一个变量。

6、==和is运算符的区别

== 比较的是两个对象的内容是否相等,即内存地址可以不一样,内容一样就可以了。
is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。
7、迭代器

		1. 可迭代对象
			通过for...in...这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)
		2、可迭代对象包括:
			§ 列表、字典、集合、字符串等数据类型。
			§ 数字类型不可迭代
			§ 可以使用 isinstance() 判断一个对象是否是 Iterable(可迭代) 对象:
		3. 可迭代对象的本质
			§ 可迭代对象通过__iter__方法向我们提供一个迭代器,
			一个具备了__iter__方法的对象,就是一个可迭代对象。
		4. iter()函数与next()函数
			§ iter()函数实际上就是调用了可迭代对象的__iter__方法。(本质)
		5.可以使用isinstance()判断一个对象是否是iterator对象
		6. 迭代器Iterator
			§ 一个实现了__iter__方法和__next__方法的对象,就是迭代器。
		7. 除了for循环能接收可迭代对象,list、tuple等也能接收

8、生成器

§ 生成器是一类特殊的迭代器
§ 使用了yield的函数就是生成器
§ yield关键字有两点作用:
□ 保存当前运行状态(断点),然后暂停执行,即将生成器(函数)挂起
□ 将yield关键字后面表达式的值作为返回值返回,此时可以理解为起到了return的作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值