发布于2019-08-06 11:26 阅读(604) 评论(0) 点赞(0) 收藏(3)
def func():
print(1)
print(func)
a = func
a()
def func():
print(1)
lst = [func,func,func]
for i in lst:
i()
def func(f):
f()
def foo():
print("is foo")
func(foo)
def f1():
def f2():
print(1)
def f3():
print(2)
return f2
ret = f2() # f2 函数的内存地址
return ret #
print(f1())
s = f"你好{'常鑫'}" # 填充字符串
s1 = F"你好{'常鑫'}"
s1 = f"你还是挺好的{s}" # 填充变量
print(s1)
s1 = f"{35+15}" # 填充计算公式
print(s1)
a = 10
b = 20
s1 = f"{a if a>b else b}" # 填充表达式
print(s1)
s1 = f"{{{{{{'常鑫吃..'}}}}}}" # 填充大括号
print(s1)
s1 = f"{{}}"
print(s1)
s1 = f"{'{}{}{}{}{}'}"
print(s1)
s1 = f"{print(123)}"
print(s1)
def prin(a):
print(a)
s1 = f"{prin(123)}"
prin(s1)
def foo():
def func():
a = 1
return a
return func()
s1 = f"{foo()}"
print(s1)
lst = [1,3,4,5,6]
s1 = f"{lst[0:5]}"
print(s1) # [1,3,4,5,6]
dic = {"key1":123,"key2":345}
s1 = f"{dic['key2']}"
print(s1)
%s,format,f
list,dict,str,set,tuple -- 可迭代对象 使用灵活
方式一:
list.__iter__()
dict.__iter__()
str.__iter__()
set.__iter__()
tuple.__iter__()
方法二:
查看源码
方法三:
print(dir(list))
可迭代对象的优点:
1.使用灵活
2.直接查看值
可迭代对象的缺点:
1.消耗内存
list,tuple,str -- 索引
dict -- 键
set -- 直接取值
f = open("xxxx","w")
f.__iter__()
f.__next__()
lst = [1,2,3,4,6]
new_list = lst.__iter__() #将可迭代对象转换成迭代器
new_list.__iter__()
new_list.__next__()
s = "123434"
new_s = s.__iter__() #将可迭代对象转换成迭代器
print(new_s)
new_s.__iter__()
new_s.__next__()
new_s = s.__iter__() #将可迭代对象转换成迭代器
print(new_s)
new_s.__iter__()
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
s = "12343" # 更改版for的本质
s = [1,2,3,4,5,7]
count = len(s)
new_s = s.__iter__()
while count:
print(new_s.__next__())
count -= 1
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
s = "12345"
new_s = s.__iter__()
while True:
try:
print(new_s.__next__()) # for真实本质
except StopIteration:
break
except Exception:
print("我是万能的!")
break
总结:
可迭代对象:
优点:使用灵活,可以直接查看值
缺点:占内存,不能迭代取值
迭代器:
优点:节省内存,惰性机制
缺点:使用不灵活,操作比较繁琐,不能直接查看元素
迭代器的特性:
1.一次性的(用完就没有了)
2.不能逆行(不能后退)
3.惰性机制(节省内存)
什么是可迭代对象:
具有很多私有方法,具有__iter__()方法的就是一个可迭代对象
什么是迭代器:
具有__iter__()和__next__()方法的就是迭代器
迭代器什么时候使用:当容器中数据量较多的时候使用迭代器
1.自己调用自己 (不断调用自己本身) -- 死递归
2.有明确的终止条件
递:一直执行直到碰到结束条件
归:从结束条件开始往回退
官方声明: 最大层次1000,实际测试 998/997
def func():
print(123)
func()
func()
def age(n): # 1,2,3
if n == 3:
return "猜对了"
else:
age(n+1)
print(age(1))
def age2(n):
if n == 3:
return "猜对了"
def age1(n):
if n == 3:
return "猜对了"
else:
age2(n+1)
def age(n):
if n == 3:
return "猜对了"
else:
age1(n+1)
age(1)
1.宝元 18-2-2-2
2.太白 18-2-2
3.wusir 18-2
4.alex 18
def age(n):
if n == 4:
return 18
else:
return age(n+1)-2
print(age(1))
def age4(n):
if n == 4:
return 18
def age3(n):
if n == 4: # 问的是不是第四个了
return 18
else:
return age4(n+1)-2
def age2(n):
if n == 4: # 问的是不是第四个了
return 18
else:
return age3(n+1)-2
def age1(n):
if n == 4: # 问的是不是第四个了
return 18
else:
return age2(n+1)-2
print(age1(1))
作者:伤心太平洋
链接:https://www.pythonheidong.com/blog/article/8341/cab573ba26c601b63d22/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!