python-函数(二)
1.当作值,赋值给变量
def func():
print(1)
print(func) # 查看函数的内存地址
a = func
print(a)
a()
lst = []
dic = {}
def func():
print(1)
def foo():
print(2)
def index():
print("")
lst = [func,foo]
dic = {"1":func,"2":foo}
def login():
print("这是登录")
def register():
print("这是注册")
def index():
print("这是主页")
msg = """
1 登录
2 注册
3 主页
"""
dic = {"1":login,"2":register,"3":index}
choose = input(msg)
if choose.isdecimal():
if dic.get(choose):
dic[choose]()
else:
print("请重新输入!")
3.函数名可以当作函数的参数
def func(a):
a()
print(111)
def foo():
print(222)
def f1():
print(333)
func(f1)
foo()
4.函数名可以当作函数的返回值
def func():
def foo():
print(111)
return foo
a = func()
a()
func()() # foo()
def func():
def foo():
print(111)
return foo()
print(func())
f - strings
结构:f(F)+str的形式,在字符串中想替换的位置用{}占位
注:!:,;{} 这些标点不能出现在{}这里面
name = input("name:")
age = input("age:")
msg = "姓名:xx 年龄:xx"
msg = "姓名:%s 年龄:%s"%(name,age)
msg = f"姓名:{name} 年龄:{age}"
print(msg)
print(F"姓名:{input('name:')} 年龄:{input('age:')}")
迭代器
可迭代对象:只要具有iter()方法的对象就是可迭代对象
迭代器:具有iter()和next()两个方法才是迭代器
lst = [1,2,3,5,4]
l1 = lst.__iter__() # 将可迭代对象转换成迭代器
l1 = iter(lst) # 将可迭代对象转换成迭代器
for 循环的本质
lst = [1,2,5,4,8]
l = iter(lst)
while True:
try:
print(l.__next__())
except StopIteration:
break
lst = [1,2,57,9,1,2]
l = iter(lst)
print(next(l))
print(next(l))
print(next(l))
print(next(l))
lst = [1,2,3,5,7,5]
print(next(iter(lst)))
print(next(iter(lst)))
print(next(iter(lst)))
print(next(iter(lst)))
print(next(iter(lst)))
两者的区别:前者是只转换一个迭代器,依此打印出列表的值
而后者是每次都要转换一次,且打印出来的值都是1
在python3中,
iter()和__iter__() 是一样的,推荐使用iter()
python3和python2的区别:
在python3中:iter()和__iter__()都有
next()和__naet__()都有
在python2中:只有iter()和next()
-
迭代器的优点:
-
惰性机制————节省空间
-
-
迭代器的缺点:
-
不能直接查看元素 迭代器查看到的是一个迭代器的内存地址
-
一次性,用完就没有了
-
不能逆行(后退)
-
空间换时间:容器存储大量的元素,取值时取值时间短,但容器占用空间较大
时间换空间:迭代器就是节省了空间,但是取值时间较长
-
迭代器是基于上一次停留的位置,进行取值
浙公网安备 33010602011771号