五個最有用的Python技巧 - dannysteenman

banq發表於2021-01-25

這裡有5個Python技巧,這些技巧使編寫程式碼比以往任何時候都更有效率。可以編寫更好,更緊湊的Python程式碼。
 

1.生成器Generator函式
Generator函式是一種特殊型別的函式,它不返回單個值,而是返回帶有一系列值的迭代器物件:

def mygenerator():
    print('First item')
    yield 10

    print('Second item')
    yield 20

    print('Last item')
    yield 30


>>> gen = mygenerator() 
>>> next(gen) 
First item 
10                      
>>> next(gen) 
Second item 
20                      
>>> next(gen) 
Last item 
30                   

它使用yield而不是return關鍵字。因此,yield每次呼叫時都會針對關鍵字返回值。但是,您需要為此函式建立一個迭代器如next();生成器函式不能包含return關鍵字。如果包含它,它將終止該功能,return語句返回值並終止函式的執行。
 

2.裝飾器decorator
裝飾器是Python中的一種設計模式,它允許使用者向現有物件新增新功能而無需修改其結構。

def a_new_decorator(a_func):

    def wrapTheFunction():
        print("I am doing some boring work before executing a_func()")

        a_func()

        print("I am doing some boring work after executing a_func()")

    return wrapTheFunction

def a_function_requiring_decoration():
    print("I am the function which needs some decoration to remove my foul smell")

a_function_requiring_decoration()
outputs: "I am the function which needs some decoration to remove my foul smell"

a_function_requiring_decoration = a_new_decorator(a_function_requiring_decoration)
now a_function_requiring_decoration is wrapped by wrapTheFunction()

a_function_requiring_decoration()
outputs:I am doing some boring work before executing a_func()
#        I am the function which needs some decoration to remove my foul smell
#        I am doing some boring work after executing a_func()


裝飾器用來包裝函式並以一種或另一種方式修改其行為。
 

3.三元運算子
三元運算子在Python中通常被稱為條件表示式。這些運算子根據條件是否成立來評估某些內容。他們成為2.4版Python的一部分

is_nice = True
state = "nice" if is_nice else "not nice"

它允許快速測試條件而不是使用多行if語句。通常,它可能非常有用,並且可以使您的程式碼緊湊但仍可維護。
 

4.Setattr和getattr setattr函式
set指定物件的指定屬性的值。getattr方法返回物件的命名屬性的值。
 

5.列舉
列舉為可迭代物件新增計數器,並以列舉物件的形式返回。
Python透過為該任務提供內建函式enumerate()減輕了程式設計師的任務。 Enumerate()方法向可迭代物件新增一個計數器,並以列舉物件的形式返回它。然後可以將此列舉物件直接用於for迴圈,或使用list()方法將其轉換為元組列表。

python
# Python program to illustrate
# enumerate function
l1 = ["eat","sleep","repeat"]
s1 = "geek"
 
# creating enumerate objects
obj1 = enumerate(l1)
obj2 = enumerate(s1)
 
print ("Return type:",type(obj1))
print (list(enumerate(l1)))
 
# changing start index to 2 from 0
print (list(enumerate(s1,2)))
​​​​​​​
輸出:
Return type: < type 'enumerate' >
<p class="indent">[(0, 'eat'), (1, 'sleep'), (2, 'repeat')]
<p class="indent">[(2, 'g'), (3, 'e'), (4, 'e'), (5, 'k')]


 

相關文章