为了账号安全,请及时绑定邮箱和手机立即绑定

妙不可言,10个python小技巧,写出优雅代码

标签:
Python

毫无疑问,python是一种、流行且容易理解的语言。
当然,有人说过:“没有最好,只有更好”,但Python最好🤪。

接下来,给大家分享10个最好的Python小技巧,让生活更加美好。

欢迎大家点赞、收藏,支持!

人生苦短,我用Python。即用Python,则学点小技巧! – 无名

1. 链式操作符

让我们模拟一个场景: 假设你在招聘机构工作,公司的HR给了一个任务,开发招聘系统,该系统可用于选择所有符合条件的候选人。

现在需要根据输入条件检索相关候选人。那么,最简单明了的想法是什么?可以根据if条件进行判断筛选!。

candidateage = 30
candidate_exp = 5
candidate_salary_expectation = 95000

if candidateage > 18:
    if candidate_exp >= 2:
        if candidate_salary_expectation <= 100000:
            print("Congrats ! You are Eligible for the job")
        else:
            print("Not! eligible")

上面的代码没有任何问题,但是其实可以使用链式操作的方式来完成。在一个语句中列出所有条件:

candiateage = 30
candidate_exp = 5
candidate_salary_expectation = 95000

## 精华在此
if candiateage > 18 and candidate_exp >= 2 and candidate_salary_expectation <= 100000:
    print("Congrats ! You are Eligible for the job")
else:
    print("Not! eligible")

2. 格式化大数字

如果让你阅读下面的数字,你能快速阅读和理解哪一个?

  • 2456456987
  • 3,456,986,784

几乎全部的人选第二个,因为这个数字更可读的。甚至小孩子都可以快速的读出:三十亿、四亿五千六百万、九十八万六千、七百八十四。
在python中,你可以在数字的任何位置加入下划线_,它居然是可行的。

num = 2456456987
num2 = 3_456_986_784 # 魔幻的写法,魔幻的世界
sum = num + num2
print(f"{sum:,}") # 5,913,443,771

3.内联条件

根据特定条件去执行任务时:如果只有一条执行语句,则可以在一行中完成,这样更容易阅读。

x =5
if x==5: print("x equals 5")  # 一行代码
for i in range(x+5): print(i) # 一行代码

甚至也可以在一行中完成:设置变量值

传统代码:

condition = True
if condition:
    x = 5
else:
    x = 10
print(x) # 5

行内代码:

condition = True
x = 5 if condition else 10 # one line do it
print(x) # 5

更进一步,行内操作可以与 lambda 函数一起使用,产生更魔幻地现实世界:

check = lambda condition: 5 if condition else 10
print(check(True)) # 5
print(check(False)) # 10

4. 列表推导式

列表推导通常是一种更时尚、更有用的列表生成方法。
它们将帮助我们写更好且可读性高的代码。能用1行代码,为什么要用有3-4行代码呢?

与其创建一个空列表,然后在列表中添加元素,不如使用列表推导式来创建一个空列表并同时将元素添加到列表中。

语法:new_list = [expression for item in iterable (if conditional)]

例如:求平方

squares = [i*i for i in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

例如:求偶数的平方

squares = [i*i for i in range(10) if i%2==0]
print(squares) # [0, 4, 16, 36, 64]

5. F-字符串

F字符串随python3一起提供。它们非常简单易用,并且让代码更具可读性和可理解性。F-字符串 提供了一种简洁方便的方法来将python 表达式(如变量)嵌入字符串中,并可格式化。

让我们定义两个变量nameage并且要包含在print语句中。

  • 直接打印法:
name, age = "John", 23
print("Hey This is ",name,"and I am ",age) 
  • 字符串连接方法
name, age = "John", 23
print("Hey This is "+name+" and I am "+str(age)) 
  • 传统的格式化方法
name, age = "John", 23
print("Hey This is {} and I am {}".format(name,age))
  • F-字符串方法
name, age = "John", 23
print(f"Hey This is {name} and I am {age}")

F-字符串方法也是可以格式化输出的,例如:{age:1.2f}\{age:1.2f\}{age:1.2f}{age:03}\{age:03\}{age:03}你可以更改上面的代码,运行它,看看输出的结果。

name, age = "John", 23

# 现在开始怀疑世界,居然还可以这么用!
print(f"Hey This is {name} and I am {age: 1.2f}")
print(f"Hey This is {name} and I am {age: 03}")

6. enumerate枚举迭代

数一数 Python 的最佳特性,那么枚举enumerate一定是名列前茅的。
它与循环相似,不同的是,同时提供循环对象和索引值。

语法:for index,value in enumerate(iterable): print(index,value)

通过一个例子来更好地理解它,我们需要将列表中所有值为偶数的位置替换为Even,将所有值为奇数的位置替换为Odd

lst = [13,2,3,4,90]
for index,value in enumerate(lst):
    if value%2==0:
        lst[index] = "Even"
    else:
        lst[index] = "Odd"
print(lst) # ['Odd', 'Even', 'Odd', 'Even', 'Even']

当然结合列表推导 、if单行表达可以一行搞定:

lst = [13,2,3,4,90]
lst = ['Even' if value %2 == 0 else 'Odd' for index,value in enumerate(lst) ]
print(lst) # ['Odd', 'Even', 'Odd', 'Even', 'Even']

7. 参数拆包

这是很多开发者不知道的一个Python特性。Python允许简单直接的解压变量。

让我们考虑一个现实生活中的用例: 有一个列表data其中包含有关不同人的信息,例如他们的姓名,年龄和电子邮件。现在需要将所有姓名,年龄和电子邮件分成单独的列表。

你可能会考虑使用一些空列表,然后相应地将数据附加到列表中;也可能直接赋值。但还有一个简单的一行代码执行此操作,这就是解包操作。

data = [['Abhay','Karl','Trey'],[20,26,30],['abhay@gmail.com','karl@gmail.com', 'Trey@qq.com']]
name,age,email = data #一行搞定

print(name) # ['Abhay', 'Karl', 'Trey']
print(age) # [20, 26, 30]
print(email) # ['abhay@gmail.com','karl@gmail.com', 'Trey@qq.com']
print(id(name), id(data[0])) # 1407917606400 1407917606400
name[1]= "KARL"
print(data[0]) # ['Abhay', 'KARL', 'Trey']

值得注意的是,解包操作是一个简单的指向操作。如果你需要得到新的列表,请使用列表的copy()方法。

8. 函数多值返回

def user_info():
    name = 'Abhay'
    age = 26
    address = 'Bangalore'
    return name, age, address

Name , Age , Address = user_info()
print(Name, Age, Address) # Abhay 26 Bangalore

9. 单行代码 和 大量的库

Python 的另外两大特点是 单行代码大量的库

使用 单行代码 ,只需一行代码即可完成一项任务,而无需编写 5 或 10 行代码,这将节省大量时间,毕竟头发有限!

另一方面,大量优质的第三方库库Package

部分人可能会认为始终需要编写自己的代码,但在我看来,如果可以仅用一行代码或一次导入完成某些任务,那么编写数千行代码的必要性是什么,我们不是应该以目的为导向么? 你可能不同意我的想法,但请记住:

“永远不要去记你可以查到的东西。” - 艾伯特·爱因斯汀

当然还有一个名人也说过:

“请学习牛顿,站在github的肩上编程!” - 鲁迅

10. 代码注释

注释对于编写更好的代码非常有用。它们可以帮助自己和队友更好地理解代码。注释显示了代码的流程。注释是开发者的长期投资。

一个好的开发者需要养成写注释的好习惯,才可能写出像pythontip这样有趣的站点。

“注释不仅可增加代码的行数,且背后体现了coder的价值观,比如在注释中偷偷添加吐槽,却无人知晓!” – 混子日

分享一个好的注释:

"""
Why i should need a job?
Why i shuold owner for company?
Why i can not do something for myself?

So, from Now! To be a onwer for yourself!
"""

# 产品要求3天内上线,开玩笑吗?
# 算了,直接来吧,前人挖坑,后人填坑
print("just do it!!!") 

# 没有思路,写不下去,算了pythontip 上刷题吧!

小节

以上就是我们分享的10个实用的pyhton技巧,希望在未来或现在的编程路上对你有用!

欢迎大家点赞、收藏,支持!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消