可迭代对象,函数

可迭代对象, 函数

迭代

迭代协议:
内部有一个__next()__方法, 也可以手动调用
和next()全局函数一个功能
但是只循环一边,不会自动重头再来

可迭代对象:tuple, list, dict,file, range
但是如果没有已经实现,有些时候要自己写iter
优势:相比list之类的,内存占用小
迭代工具:for, 推导,map
#map的作用, map(function, iter_variable)
#把iter_variable里面的值每一个喂给function

函数

def 函数名(参数):函数内容
optional:return

  1. 函数名最好不要和全局函数重叠, 比如len, open之类的
  2. 参数可以有,可以没有
  3. return可以有可以没有,如果没有,只执行操作,但是无法把变量传递给其它操作
def intersect(seq1, seq2):
	result = []
	for x in seq1:
		if x in seq2:	
			result.append(x)
return result

#seq1和seq2只是名字,可以随意取名,但是要直观

#并没有提前规定变量的性质,所以可能出错
#seq1和2的生命周期只在函数运行间,下面这个例子说明

x = 55
def funcx():
#如果加一行global x,则会改变x的值
		x = 99  
		print(x)
	
print(x)
print(funcx())
#这个例子可以说明,如果变量名重复了会有啥不好

#三个层级:built-in, global, enclosure,local

嵌套函数

def func():
	x =100
	def nested():
		#nonlocal x  这样的话,那就会影响嵌套的外面了
		x =99
		print(x)
	nested()
	print(x)
	
print(func())
#则会出现99和100

可改变/不可改变类型:

  1. 如int型就是不可改变。会创造一个副本值给函数操作,但是本身不会改变,除非改变指针
  2. 如list型就是可以改变的,那么函数操作后,是可以改变其值的
    不可变:tuple, str, int
    可变:list, dict
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值