20个Python常用技巧分享
Python是一种优雅而易读的编程语言,拥有强大的功能和丰富的库。在这里,我们将分享20个常用的Python技巧,帮助你更好地使用Python。
1. 使用enumerate()函数
enumerate()函数可以将一个可迭代对象转换成一个枚举对象,它能帮助我们轻松地获取索引和对应项的值。示例如下:
my_list = ["apple", "banana", "orange"]
for idx, val in enumerate(my_list):
print(idx, val)
输出结果:
0 apple
1 banana
2 orange
2. 使用zip()函数
zip()函数可以将多个可迭代对象打包成一个元组列表,可以极大地方便我们同时迭代多个列表。示例如下:
list1 = [1, 2, 3]
list2 = ["apple", "banana", "orange"]
for i, j in zip(list1, list2):
print(i, j)
输出结果:
1 apple
2 banana
3 orange
3. 使用列表推导式
列表推导式是一种简洁明了的创建列表的方法,它可以简化编写代码的过程。示例如下:
my_list = [x**2 for x in range(1, 6)]
print(my_list)
输出结果:
[1, 4, 9, 16, 25]
4. 使用字典推导式
字典推导式同样是一种简洁明了的创建字典的方法,它可以非常方便地从现有的数据中创建新的字典。示例如下:
my_dict = {x: x**2 for x in range(1, 6)}
print(my_dict)
输出结果:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
5. 使用集合推导式
集合推导式也是一种简洁明了的创建集合的方法,它可以非常方便地从现有的数据中创建新的集合。示例如下:
my_set = {x**2 for x in range(1, 6)}
print(my_set)
输出结果:
{1, 4, 9, 16, 25}
6. 使用lambda函数
lambda函数是一种匿名函数,它可以简化编写代码的过程。示例如下:
my_list = [1, 2, 3, 4, 5]
new_list = list(map(lambda x: x**2, my_list))
print(new_list)
输出结果:
[1, 4, 9, 16, 25]
7. 使用filter()函数
filter()函数可以用于对列表进行过滤操作,只保留符合条件的项。示例如下:
my_list = [1, 2, 3, 4, 5]
new_list = list(filter(lambda x: x % 2 == 0, my_list))
print(new_list)
输出结果:
[2, 4]
8. 使用args和*kwargs
args和*kwargs可以用于传递任意数量的参数和关键字参数。示例如下:
def my_func(*args, **kwargs):
print(args)
print(kwargs)
my_func(1, 2, 3, a=4, b=5)
输出结果:
(1, 2, 3)
{'a': 4, 'b': 5}
9. 使用try...except语句
try...except语句可以用于捕获并处理异常。示例如下:
try:
x = 1 / 0
except ZeroDivisionError:
print("除数不能为零")
输出结果:
除数不能为零
10. 使用with语句
with语句可以用于管理资源,例如文件、网络连接等。示例如下:
with open("test.txt", "r") as f:
print(f.read())
输出结果:文件中的内容
11. 使用装饰器
装饰器是一种将函数作为参数的函数,它可以用于增强函数的功能。示例如下:
def my_decorator(func):
def wrapper():
print("执行前")
func()
print("执行后")
return wrapper
@my_decorator
def my_function():
print("正在执行")
my_function()
输出结果:
执行前
正在执行
执行后
12. 使用@property装饰器
@property装饰器可以用于设置类的属性,可以更方便地修改和访问属性。示例如下:
class MyClass:
def __init__(self, x):
self._x = x
@property
def x(self):
return self._x
@x.setter
def x(self, value):
self._x = value
obj = MyClass(10)
print(obj.x)
obj.x = 20
print(obj.x)
输出结果:
10
20
13. 使用super()函数
super()函数可以调用父类的方法,可以更方便地在子类中使用父类的方法。示例如下:
class Parent:
def func(self):
print("父类")
class Child(Parent):
def func(self):
super().func()
print("子类")
obj = Child()
obj.func()
输出结果:
父类
子类
14. 使用__init__.py文件
init.py文件是一个空文件,用于标记包。当包被导入时,这个文件会被自动执行。示例如下:
# __init__.py文件内容
print("包被导入了")
当导入这个包时,会执行__init__.py文件,输出结果为:
包被导入了
15. 使用__name__变量
__name__是一个特殊的变量,它存储了当前模块的名称。可以用于判断模块是被导入还是直接运行。示例如下:
# test模块的内容
def my_func():
print("函数被调用了")
if __name__ == "__main__":
my_func()
如果直接运行这个模块,输出结果为:
函数被调用了
如果将这个模块作为包的一部分导入到另一个模块中,则不会执行my_func()函数。
16. 使用多重继承
Python支持多重继承,可以从多个父类中继承属性和方法。示例如下:
class Parent:
def func(self):
print("父类")
class Parent2:
def func2(self):
print("父类2")
class Child(Parent, Parent2):
def func3(self):
print("子类")
obj = Child()
obj.func()
obj.func2()
obj.func3()
输出结果:
父类
父类2
子类
17. 使用__str__方法
__str__是一个特殊的方法,用于设置类的字符串表达式。当打印一个对象时,会调用它的__str__方法。示例如下:
class MyClass:
def __init__(self, x):
self.x = x
def __str__(self):
return str(self.x)
obj = MyClass(10)
print(obj)
输出结果:
10
18. 使用format()方法
format()方法可以用于格式化字符串,可以更方便地生成格式化后的字符串。示例如下:
name = "Alice"
age = 20
print("我的名字是{},我今年{}岁了".format(name, age))
输出结果:
我的名字是Alice,我今年20岁了
19. 使用collections模块
collections模块是Python内置的一种数据类型拓展工具,包含了一些Python内置类型的扩展,可以更方便地处理数据。示例如下:
import collections
my_list = [1, 2, 3, 3, 4, 4, 5]
counter = collections.Counter(my_list)
print(counter)
输出结果:
Counter({3: 2, 4: 2, 1: 1, 2: 1, 5: 1})
20. 使用itertools模块
itertools模块是Python内置的一个迭代器模块,可以用于生成各种各样的迭代器,帮助我们更方便地处理数据。示例如下:
import itertools
my_list = [1, 2, 3]
power_list = list(itertools.product(my_list, repeat=2))
print(power_list)
输出结果:
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:20个Python常用技巧分享 - Python技术站