10个Python初学者提升编码质量的技巧

Python有自己的语言哲学,在代码的处理上有其他传统语言无法比拟的简洁性和便捷性。

很多初学者或者是从其他语言转过来的同学,写的Python代码会比较生硬,不够Pythonic。他们的代码可以正常运行,但是不够简洁。很多问题在Python中往往有更“优雅”的解决方式。

以下是10个面对初学者非常有用的Python小技巧,让我们来看看吧。

1. 真值比较

初学者经常在 if 语句中使用==比较符来判断表达式是否为真值

a = True
b = False
if a == True:
    print('This is true')
    
if b == False:
    print('This is false')

这是一种冗余的写法,其实你可以直接对变量本身进行检查

a = True
b = False
if a:
    print('This is true')
    
if not b:
    print('This is false')

2 . 字符串连接

在Python中,用+号来拼接字符串是很简单直接的方法,这种操作对于初学者来讲,非常好用。不过如果你的字符串较长,并且中间需要做字符串转换,那么连接的过程就会显得复杂。不容易阅读还容易出错。

name = 'Crazy xiaohei'
age = 18
print('My name is ' + name + ' and I am ' + str(age) + ' years old')

你可以使用f-string方式,将变量放置在{} 中,该方法能让代码清晰易读,因为你不需要针对非字符串变量做强制转换了。

name = 'Crazy xiaohei'
age = 18
print(f'My name is {name} and I am {age} years old')

3. 忘记关闭文件

操作文件时,下面的代码看起来可读性很好,打开文件、编辑文件、关闭文件。不过在最后你总要是手动去调用close方法来关闭文件。很多新手经常会忘记关文件,会导致各种莫名其妙的问题。

f = open('data.txt', 'w')
f.write('hello')
f.close()

其实python提供了内置的上下文管理器,你压根就不有手动管关闭文件,Python会在你用完文件后,自动的帮你关闭。使用with关键字操作文件,让Pyhton帮你优雅地完成这些琐事。

with open('data.txt', 'w') as f:
    f.write('hello')

tips:Python优质课程推荐

10个Python初学者提升编码质量的技巧

2022年 100天 Python Pro 编码训练营【Udemy 中英文字幕】

https://www.koudaizy.com/tutorials/100-days-of-code/

4. 检查列表是否为空

假设你要基于列表做某些操作,操作前需要判断列表是否为空,初学者通常会使用len方法判断列表的长度是否为0,并做后续操作。

names = ['Bob', 'Steve', 'Ben', 'Jack']
if len(names) != 0:
    print('hello, everyone!')

有经验的开发者会告诉你,一种更好的方式是直接用列表本身来判断列表是否为空。

names = ['Bob', 'Steve', 'Ben', 'Jack']
if names:
    print('hello, everyone!')

5. 字典中获取key和value

如果你要列出并打印字典中所有元素,首先你要拿到每个元素的key,然后通过key来获取对应的value,初学者通常将两个步骤分开处理。

names = {1:'Bob', 2:'Steve', 3:'Ben', 4:'Jack'}
for index in names:
    name = names[index]
    print(f'{index}:{name}')

更便捷的方法是,字典的items()方法会返回一个由(key, value)元组构成的可迭代对象,

names = {1:'Bob', 2:'Steve', 3:'Ben', 4:'Jack'}
for index, name in names.items():
    print(f'{index}:{name}')

6. 解构赋值

元组在python中是一种固定长度的数据结构,新手在将元组中的元素赋值给多个不同的变量时,他们通常的做法是从元组中逐个赋值给变量

agelist = [18, 19, 20]
age_Bob = agelist[0]
age_Steve = agelist[1]
age_Ben = agelist[2]
print(f"Bos's age is {age_Bob}\nSteve's age is {age_Steve}\nBen's age is {age_Ben}")

更好的做法是直接在一行代码中用解构的方式,将元组同时赋值给多个不同的变量。

agelist = [18, 19, 20]
age_Bob, age_Steve, age_Ben = agelist
print(f"Bos's age is {age_Bob}\nSteve's age is {age_Steve}\nBen's age is {age_Ben}")

7. 列表迭代

对于新手来说,用for循环迭代列表中的元素时,他们通常的做法是先拿到列表的长度,然后通过元素的下标索引来获取值。

names = ['Bob', 'Steve', 'Ben', 'Jack']
for i in range(len(names)):
    print(names[i])

特别是从其他语言过来的伙伴,很多都会采用上面的方法。而在Python中,我们可以直接迭代列表本身,每次迭代出来值就是列表中的元素,这一点很多其他语言是不支持的。

names = ['Bob', 'Steve', 'Ben', 'Jack']
for name in names:
    print(names)

8. 一个索引用于多个列表

假设你想将两个列表中的值做加操作,通常,你会从索引0开始循环直到列表的结尾,每次循环将列表项做加操作组成新的列表

hourly_wage = [35, 40, 45, 40, 60]
hours = [8, 9, 10, 6, 5]
wages = []

for i in range(len(hours)):
    value1 = hourly_wage[i]
    value2 = hours[i]
    wages.appen(value1 * value2)

python提供了一个更好的方法zip(),它将两个列表对象重新组合成一个成对出现的tuple元素列表

hourly_wage = [35, 40, 45, 40, 60]
hours = [8, 9, 10, 6, 5]
wages = []

for value1, value2 in zip(hourly_wage, hours):
    wages.appen(value1 * value2)

zip(hourly_wage, hours),会得到一个zip对象,把zip对象内容迭代出来看一下,就能看清楚了。

for value in zip(hourly_wage, hours):
    print(value)

# output: 
# (35, 8)
# (40, 9)
# (45, 10)
# (40, 6)
# (60, 5)

tips:Python优质课程推荐

10个Python初学者提升编码质量的技巧

Python圣经™ | 用 Python 编码你所需的一切【Udemy 中英文字幕】

https://www.koudaizy.com/tutorials/the-python-bible/

9. 海象操作符

在python3.8之前,当一个变量作用在 if 判断语句上时,要先给他赋值然后再处理

hobbies = []
hobby = input("Please input your hobby or input 'q' to exit: ")
while hobby != 'q':
    hobbies.append(hobby)
    hobby = input("Please input your hobby or input 'q' to exit: ")
    
print(hobbies)

python3.8的海象操作符,让你的代码减少重复,看起来更简洁,你可以将变量的赋值和if判断一行处理。

hobbies = []
while (hobby := input("Please input your hobby or input 'q' to exit: ")) != 'q':
    hobbies.append(hobby)
    
print(hobbies)

10. 获取列表索引

如果有一个文本列表,你想随下标一起打印,可以你单独定义一个数字变量每次迭代的时候递增1

names = ['Bob', 'Steve', 'Ben', 'Jack']
index = 0
for name in names:
    print(f'{index}:{name}')
    index += 1

一个更为专业的做法是直接用enumerate()方法,每次迭代时,他会返回元素的下标索引和元素本身

names = ['Bob', 'Steve', 'Ben', 'Jack']
for index, name in enumerate(names):
    print(f'{index}:{name}')

以上就是10个可以提升你的Python技能的小技巧,希望对正在学习Python编程你有所帮助。如果你有更多的好的点子,欢迎在评论区讨论。

如果你想学习更多Python方面的课程,口袋资源网(koudaizy.com)有海量的国外优质课程可以下载或者在线观看学习。

如果本站的内容对你有帮助,可以点击这儿,不花一分钱捐赠本站

(0)
疯狂的小黑的头像疯狂的小黑
上一篇 2022年7月30日 下午4:29
下一篇 2022年9月21日 上午12:31

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

微信