【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
发布了82 篇原创文章 · 获赞 468 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/qq_44647926/article/details/102522375