标签:cep stop 比较 python pytho while循环 local 新特性 for
global 1.可以在局部作用域声明一个全局变量 2.可以修改全局变量
nonlocal 1.不能操作全局变量 2.可以对父级作用域的变量进行修改,并且在当前作用域创建(复制)一份此变量
默认参数为可变数据类型时
def func(a,li=[]):
li.append(a)
return li
print(func(1)) # [1]
print(func(2)) # [1,2]
print(func(3)) # [1,2,3]
函数名是一个变量
def func():
print(666)
f1 = func
f2 = f1
f2()
f1()
函数名是一个特殊变量
print(func) => func = <function func at 0x00000000003F1EA0>
函数名可以作为容器类类型的元素
def func1():
print('in func1')
def func2():
print('in func2')
def func3():
print('in func3')
l = [func1, func2, func3]
print(l)
for i in l:
i()
函数名可以作为函数的实参
函数名可以作为函数的返回值
def func1():
print('in func1')
def func2(argv):
print('in func2')
return argv
ret = func2(func1)
ret()
加入表达式
s1 = 'alex'
s2 = f'我的名字{s1.upper()}'
print(s2)
l1 = ['蔡徐坤', 18, 176]
s1 = f'我的名字{l1[0]},我的年龄{l1[1]},我的身高{l1[2]}'
print(s1)
可以结合函数
def func(a,b):
return a + b
s1 = f'最终的结果{func(1,3)}'
print(s1)
不能放一些特殊的字符 ! , : { } ;
定义: 内部含有'__iter__'方法的对象,就是可迭代对象
已学可迭代对象: str,list,dict,tuple,set,range,文件句柄
判断一个对象是否是可迭代对象 => print('__iter__' in dir(str))
优点:直观,操作方法多
缺点:占内存,不能迭代取值
定义:内部含有'__iter__'并且含有"__next__"方法的对象,就是迭代器
可迭代对象转化成迭代器,并利用next()取值
li=[1,2,3,4]
obj=iter(li)
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
优点:非常节省内存;惰性机制
缺点:不直观;操作不灵活;效率相对低
特性:
li = [11,22,33,44,55,66]
obj = iter(li)
for i in range(3):
print(next(obj)) 11 22 33
for i in range(3):
print(next(obj) 44 55 66
利用while循环,模拟for循环内部循环可迭代对象的机制
1.先要将可迭代对象转化成迭代器
2.利用next对迭代切进行取值
3.利用异常处理防止报错 try: except StopIteration:
li=[1,2,3,4,5]
obj=iter(li)
while True:
try:
print(next(obj))
except StopIteration:
break
可迭代对象:可迭代对象是一个操作比较灵活,直观,效率相对高,但是比较占用内存的数据集。
迭代器:迭代器是一个非常节省内存,满足惰性机制,但是效率相对低,操作不灵活的数据集。
标签:cep stop 比较 python pytho while循环 local 新特性 for
原文地址:https://www.cnblogs.com/wxl1025/p/11052023.html