python函数名第一类方法、f-string格式化、迭代器及递归函数
生活随笔
收集整理的這篇文章主要介紹了
python函数名第一类方法、f-string格式化、迭代器及递归函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數第一類方法
函數名可以賦值給其他變量
def func():print(1) a = func a() # 結果:1函數名可以當做容器類的元素
def func1():print(1) def func2():print(2) def func3():print(3) for i in [func1,func2,func3]:i() # 結果: 1 2 3函數名可以當做函數的參數
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def func():print(1) def func1(f):print('我是傳遞過來的函數')f() func1(func) # 結果: '我是傳遞過來的函數' 1函數名可以作為函數的返回值
def func():def foo():a = 1print(a)return foo ret = fun() ret() # 結果: 1f-string字符串格式化
支持:F,變量,數字計算,表達式,函數,列表取值,字典取值
填充字符串
s = f"你好{'賽麗亞'}" # 填充字符串 s1 = F"你好{'賽麗亞'}" print(s) print(s1) # 結果: 你好賽麗亞 你好賽麗亞填充變量
s = '世界' 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)填充函數
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def foo():def func():a = 1return areturn func() s1 = f"{foo()}" # 填充函數 print(s1)填充列表
lst = [1,3,4,5,6] s1 = f"{lst[0:5]}" #填充列表 print(s1)填充字典
dic = {"key1":123,"key2":345} s1 = f"{dic['key2']}" #填充字典 print(s1) print(f"{{73}}") # {73} print(f"{{{73}}}") # {73} print(f"{{{{73}}}}") # {{73}} m = 21 # ! , : { } ;這些標點不能出現在{} 這里面。 # print(f'{;12}') # 報錯 # 所以使用lambda 表達式會出現一些問題。 # 解決方式:可將lambda嵌套在圓括號里面解決此問題。 x = 5 print(f'{(lambda x: x*2) (x)}') # 10迭代器
可迭代對象
在python中,但凡內部含有iter方法的對象,都是可迭代對象。
a = 'alex' print(dir(a)) # 結果: ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']簡單的方法:
a = 'alex' print('__iter__' in dir(a)) # 結果: True我們平時用到的list 、str、tuple、dict、set都是可迭代對象
可迭代對象的優點:
- 方便取值,比較直觀
- 占用內存
迭代器
迭代器的定義:
從字面意思來看,迭代器就是可以迭代取值的工具。
從專業角度來說:迭代器是這樣的對象:實現了無參數的__next__方法,返回序列中的下一個元素,如果沒有元素了,那么拋出StopIteration異常.python中的迭代器還實現了__iter__方法,因此迭代器也可以迭代。
我們常見數據類型list、str、dict、tuple、set及文件句柄,只有文件句柄是迭代器
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' o1 = 'alex' o2 = [1, 2, 3] o3 = (1, 2, 3) o4 = {'name': '李白','age': 18} o5 = {1, 2, 3} f = open('file',encoding='utf-8', mode='w') print('__iter__' in dir(o1)) # True print('__iter__' in dir(o2)) # True print('__iter__' in dir(o3)) # True print('__iter__' in dir(o4)) # True print('__iter__' in dir(o5)) # True print('__iter__' in dir(f)) # Trueprint('__next__' in dir(o1)) # False print('__next__' in dir(o2)) # False print('__next__' in dir(o3)) # False print('__next__' in dir(o4)) # False print('__next__' in dir(o5)) # False print('__next__' in dir(f)) # True f.close()迭代對象轉化為迭代器:
lst = list(range(6)) lst1 = lst.__iter__() print(lst1) # 結果:<list_iterator object at 0x000001C68FCA87B8>lst = list(range(6)) lst1 = iter(lst) print(lst1) # 結果:<list_iterator object at 0x00000211B7048780>迭代器取值(使用__next__方法):
lst = list(range(3)) lst1 = lst.__iter__() ret = lst1.__next__() print(ret) # 0 ret = lst1.__next__() print(ret) # 1 ret = lst1.__next__() print(ret) # 2 ret = lst1.__next__() print(ret) # StopIteration # 迭代器利用next取值:一個next取對應的一個值,如果迭代器里面的值取完了,還要next,那么就報StopIteration的錯誤。while模擬for的內部循環機制:
lst = list(range(5)) count = len(lst) lst_s = lst.__iter__() while count:print(lst_s.__next__())count -= 1 # 郭氏原理lst = list(range(5)) lst_s = lst.__iter__() while True:try:print(lst_s.__next__())except StopIteration:print('迭代終止')遞歸函數
有效遞歸的兩個條件:
- 不斷的調用自己本身
- 有明確的終止條件
總結
以上是生活随笔為你收集整理的python函数名第一类方法、f-string格式化、迭代器及递归函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python元类、反射及双线方法
- 下一篇: python3 基础教程: 文件read