【python】 學會優雅你的python


https://www.jianshu.com/p/35187942a96f

優雅的使用你的pycharm

—獲取函數的幫助

按住ctrl鍵,將鼠標箭頭移動至函數名
在這裏插入圖片描述

—同時修改多處位置

按住alt鍵,點擊鼠標左鍵確定修改位置
在這裏插入圖片描述
輸入要修改添加的內容後
在這裏插入圖片描述

優雅你的賦值語句

—爲多個變量賦值

一般方法
a = 1
b = 2
c = 3

優雅方法
a,b,c = 1,2,3

—序列解包

一般方法
l = ['peter',11,'man']
name = l[0]
age = l[1]
gender = l[2]

優雅方法
l = ['peter',11,'man']
name,age,gender = l

—對象方法的嵌套

一般方法
s = "$hello *world!"
s1 = s.replace('$','')
s2 = s1.replace('*','')

優雅方法
s = "$hello *world!"
s1 = s.replace('$','').replace('*','')

輸出;
>>hello world!

優雅你的[判斷語句]

—if…else…三目運算符的使用

一般方法
x = 1
if x > 0:
    y = x
else:
    y = -x

優雅方法
x=1
y = x if x > 0 else -x

—區間判斷

一般方法
x = 85
if x >=80 and x <= 90:
	print('良好')

優雅方法
x = 85
if 80 <= x <= 90:
	print('良好')

輸出;
>>良好

—判斷是否爲多個取值之一

一般方法
s='a'
if s == 'a' or s == 'b' or s == 'c':
    print('yes!')

優雅方法
s = 'a'
if s in ('a','b','c'):
    print('yes!')

輸出;
>>yes!

—判斷是否爲空列表,空字典,空字符串

一般方法
s,l,d = '',[1,2,3],{}
if len(s)>0:
    print("s is not empty!")
if len(l)>0:
    print("l is not empty!")
if len(d)>0:
    print("d is not empty!")

優雅方法
s,l,d = '',[1,2,3],{}
if s:
    print("s is not empty!")
if l:
    print("l is not empty!")
if d:
    print("d is not empty!")
輸出;
>>l is not empty!

—判斷多個條件是否至少有一個成立

一般方法
t1,t2,t3 = 59,60,61
if t1 >= 60 or t2 >= 60 or t3 >= 60:
    print('pass')

優雅方法
t1,t2,t3 = 59,60,61
if any([t1>=60,t2>=60,t3>=60]):
    print('pass')

輸出:
>>pass

—判斷多個條件是否都成立

一般方法
t1,t2,t3 = 80,90,95
if t1 >= 60 and t2 >= 60 and t3 >= 60:
    print('pass')

優雅方法
t1,t2,t3 = 80,90,95
if all([t1>=60,t2>=60,t3>=60]):
    print('pass')

輸出:
>>pass

優雅你的循環語句

—單行循環語句:推導式

一般方法
digit_l = []
l=[1,2,2,'abc',5.0]
for i in l:
    if isinstance(i,(int,float)):
        digit_l.append(i)
print(sum(digit_l))

優雅方法
l=[1,2,2,'abc',5.0]
print(sum([i for i in l if type(i) in (int,float)]))

輸出:
>>10.0

—同時遍歷序列的元素和元素下標

一般方法
seasons = ['spring','summer','autumn','winter']
for i in range(len(seasons)):
    print(i,seasons[i])

優雅方法
seasons = ['spring','summer','autumn','winter']
for i,j in enumerate(seasons):
    print(i,j)

輸出:
>>0 spring
>>1 summer
>>2 autumn
>>3 winter

—顯示循環進度

import time
i,n=0,100
for i in range(n):
    time.sleep(0.1)
    if (i+1)%10 == 0:
        print(i+1)#直接不斷print下標。該方法容易導致輸出刷屏

import time
i,n=0,100
for i in range(n):
    time.sleep(0.1)
    if (i+1)%10 == 0:
        print("\r{}".format(i+1),end='')#在一行中不斷更新i+1的值

—"_"的妙用

for _ in range(5):
    print('hello')

輸出:
>>hello
>>hello
>>hello
>>hello
>>hello

優雅你的函數

—使用lambda匿名函數

一般方法
l = [1,2,2,'abc',5.0]
def isnumber(x):
    return isinstance(x,(int,float))
print(sum(list(filter(isnumber,l))))

優雅方法
l = [1,2,2,'abc',5.0]
print(sum(list(filter(lambda x:isinstance(x,(int,float)),l))))

輸出:
>>10.0

—使用yield生成器收集值

一般方法
def fibs(x):#輸出斐波那契數列
    result=[]
    a,b,i=1,1,1
    while i <= x:
        result.append(a)
        a,b = b,a+b
        i += 1
    return result
print(fibs(10))

優雅方法
def fibs(x):#輸出斐波那契數列
    a,b,i=1,1,1
    while i<=x:
        yield a
        a,b=b,a+b
        i+=1
print(list(fibs(10)))
輸出:
>>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

—使用裝飾器

一般方法
import time
def run_time(*args):
    number = 0
    start = time.time()
    for i in args:
        number += i
    end = time.time()
    return end - start
print(run_time(*range(10000)))

優雅方法
import time
def run_time(func):
    def wrapper(*args,**kwargs):
        start = time.time()
        result = func(*args,**kwargs)
        end = time.time()
        spend_time = end - start
        print(spend_time)
        return result
    return wrapper

@run_time
def fun1(c):
    i,number = 0,0
    while i <c:
        number += i
        i += 1
    return number
fun1(10000)

輸出:
>>0.000997304916381836
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章