第十一節 一,函數名的第一類對象 函數名當作值,賦值給變數 print(函數名) 查看看書的記憶體地址 print(函數名) 查看看書的記憶體地址 函數名可以當作容器中的元素 函數名可以當作函數的參數 函數名可以當作函數的返回值 二,f-strings字元串格式化 f"{變數名}" F"{變數名}" f ...
一,函數名的第一類對象
-
函數名當作值,賦值給變數
-
print(函數名) 查看看書的記憶體地址
-
-
函數名可以當作容器中的元素
lis = []
dic = {}
def func():
print(11)
def foo():
print(22)
lst.append(func)
lst.append(foo)
print(lst)# 輸出後的是記憶體地址
msg = """
1 登錄
2 註冊
3 主頁
"""
choose = input(msg) # 1
if choose.isdecimal():
if dic.get(choose):
dic[choose]()
else:
print("請正確輸入!")
# 用字典存儲大量數據,通過字元串顯示每個數字代表的功能,在字典中找到並讀取該值 -
函數名可以當作函數的參數
def func(a):
print(111)
a()
def foo():
print(222)
func(foo) -
函數名可以當作函數的返回值
def func():
def foo():
print(111)
return foo
func()() # foo()
二,f-strings字元串格式化
-
-
f"{變數名}"
-
F"{變數名}"
-
f"""{變數名}"""
-
f"{input()}"
-
f"{3 if 3 > 2 else 2}"
-
f"{list[索引]}"
-
f"{dict[keys]}"
-
三,迭代器
迭代器是基於上一次停留的位置,進行取值
-
可迭代對象
-
具有iter()方法就是可迭代對象
list,tuple,str,srt,dict # 取值方式直接看
# 只有具有.__iter__()方法就是一個可迭代對象 -
-
迭代器
-
具有.iter()和.next()兩個方法才是迭代器
-
迭代器的優點:
-
惰性機制——節省空間。
-
-
迭代器的缺點:
-
不能直接查看值,迭代器看到的是一個迭代器的記憶體地址
-
一次性,用完就沒了
-
不能逆行(後退)
-
-
空間換時間:容器存儲大量的元素,取值時間短,但是容器占用空間比較大
-
時間換空間:迭代器就是節省了空間,但是取值時間較長。
-
-
Python3:
-
iter()和iter()都有;next()和next()都有
-
-
Python2:
-
只有__iter__(),next()
-
-
# python3:iter()和__iter__()都有;next()和__next__()都有
# python2:只有iter(),next()
# 具有.__iter__()和.__next__()兩個方法才是迭代器
lis = [1,2,3,4,5,6]
l = lis.__iter__()# 將可迭代對象轉換成迭代器
l = iter(lis) # iter 和__iter__是一樣的
l.__iter__()#迭代器指定__iter__()還是原來的迭代器
# for 迴圈的本質:
while True:
try:
print(l.__next__())
except StopIteration:
break -
-