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优质课程推荐
2022年 100天 Python Pro 编码训练营【Udemy 中英文字幕】
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优质课程推荐
Python圣经™ | 用 Python 编码你所需的一切【Udemy 中英文字幕】
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)有海量的国外优质课程可以下载或者在线观看学习。
如果本站的内容对你有帮助,可以点击这儿,不花一分钱捐赠本站