在编写下一个代码之前要学习的 16 个 Python 技巧


 

Python 是一种通用且广泛使用的编程语言,具有大量的库和框架。但是,有一些鲜为人知的 Python 编码技巧和库可以让您作为开发人员的生活更轻松,代码更高效。

在这篇博客中,我们将探讨一些鲜为人知的 Python 技巧,这些技巧可能非常有用,但并不广为人知。通过学习和实施这些技巧,您可以节省编码的时间和精力,并使代码更加优雅和高效。所以,让我们潜入并探索Python语言的这些隐藏的宝石!

1. 三元算子

三元运算符是 if-else 语句的简写。语法为 。它是一个单行代码,可以替换多行 if-else 语句,使您的代码更加简洁。value_if_true if condition else value_if_false

a = 5 b = 10 max = a 如果 a > b 否则 
b ##value_if_true if 条件 else value_if_false

print(max)
#10  

上面的查询检查“a”是否大于“b”,如果为真则返回“a”,如果为假则返回“b”。

2. 枚举功能

该函数将计数器添加到可迭代对象,并以枚举对象的形式返回它。当您想要循环访问列表并跟踪索引时,此函数非常有用。enumerate()

水果 = ['苹果', '香蕉', '芒果'] 
用于索引,枚举中的水果(水果): 
 打印(索引, 水果)

#0 苹果
#1 香蕉
#2 芒果 

3.拉链功能

该函数聚合来自每个可迭代对象的元素,并返回元组的迭代器。当您想要同时迭代两个或多个列表时,此函数很有用。zip()

list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] 

for x, y in zip(list1, list2):
 print(x, y)

#1 a
#2 b
#3 c

4. 列表推导

列表推导式是从现有列表或任何可迭代对象创建列表的简洁方法。它是一个单行代码,可以替换 for 循环,使您的代码更加高效和可读。

squared_numbers = [x**2 表示范围 (1, 6)] 中的 x]print(squared_numbers)


#[1, 4, 9, 16, 25]

5. λ函数

Lambda 函数是使用关键字定义的匿名函数。当您需要编写小型一次性函数并且不想使用该关键字来定义命名函数时,它们非常有用。lambdadef

add = lambda x, y: x + y 

result = add(3, 4)print(result)


#7

6. 任何和所有功能

和函数返回 或 基于可迭代对象中元素的真实性。如果可迭代对象中的任何元素为 true,则函数返回,如果可迭代对象中的所有元素都为 true,则函数返回。any()all()TrueFalseany()Trueall()True

数字 = [1, 2, 3, 0, 4] 
结果 = 任意(数字) #True 
结果 = 所有(数字) # 假。 0 使它变假  

7. 迭代工具

该模块提供了一组用于迭代器的函数,并不广为人知。此模块中的一些函数是 、 和 。itertoolschainproductpermutations

导入 Itertools numbers = [1, 2, 3] result = list(itertools.permutations
(numbers)) #output所有排列 
 #[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1), (<>, <>, <>)]



8. 发电机

生成器是一种可迭代对象,它动态生成值,而不是将它们存储在内存中。它们是使用关键字定义的,可用于创建自定义迭代器。yield

### 使用 yield 关键字 
def fibonacci_series(n)
 创建的生成器: a, b = 0, 1
 for i in range(n): 
 yield a a, b = b, a
 + b

# 驱动程序代码,用于检查上述生成器函数
中 fibonacci_series(10) 中的数字:
 打印(数字)

#0
#1#1
#2

#3
#5
#8
#13
#21
#34

9. 装饰器

装饰器是一种修改函数或类行为的方法。它们是使用符号定义的,可用于向函数添加功能,例如日志记录、计时或身份验证。@

def log_function(func): def wrapper(*args, **kwargs):

 print(f'Running {func.__name__}') result = func(*args, **kwargs) print(f'{func.__name__} return {result}')


 return result
 return wrapper


@log_function def add(x, y):
 返回 x + y


print(add(5,7))#Running

 add
#add 返回 12#12 

10. 多函数参数

在 Python 中,您可以使用 and 运算符来处理多个函数参数。运算符用于将参数列表作为单独的位置参数传递,运算符用于传递关键字参数字典。******

def print_arguments(*args, **kwargs):
 print(args) print(kwargs)print_arguments(1, 2, 3, name='John', age=30)#(1, 2, 3)





#{'name': 'John', 'age': 30}

11. 动态导入

您可以使用模块动态导入模块。当您想要根据用户输入或配置导入模块时,这可能很有用。importlib

import importlib

module_name = 'math'
module = importlib.import_module(module_name)
result = module.sqrt(9)

12. Dictionary Comprehensions

Dictionary comprehensions are a concise way to create a dictionary from an existing dictionary or any iterable. It’s a one-liner that can replace a for loop, making your code more efficient and readable.

squared_numbers = {x: x**2 for x in range(1, 6)}
print(squared_numbers)

#{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

13. 可调用对象

在 Python 中,任何可以称为函数的东西都称为可调用对象。这包括函数、方法、类,甚至定义方法的对象。__call__

类加法器:
 def __call__(self, x, y):
 返回 x + y

加法器 = 加法器()结果 = 加法器(3, 4)打印(结果)



#7

14.您可以用下划线分隔大数字/字符

大数字很难解释,因此python具有强大的功能,可以放置下划线以使数字更具可读性。

num_test = 100_345_405 # 这是数字

print(num_test)

## 100345405

15.快速合并2个词典

我们可以使用以下代码在 python 中快速合并 2 个字典。

dictionary_one = {“a”: 1, “b”: 2}dictionary_two = {“c”: 3, “d”: 4}merge = {**dictionary_one, **dictionary_two}print(merged) 
 # {'a': 1, 'b': 2, 'c': 3, 'd': 4} 




16. 列表、集合和字典是可变的

可变意味着我们可以更改或更新对象(列表、集合或字典),而无需更改内存中对象的指针。让我们看看它的实际效果。

在下面的示例中,我们通过追加一个新城市来更新城市列表。我们可以看到 ID(对象指针)保持不变。集合和字典也是如此

cities = [“Munich”, “Zurich”, “London”]
print(id(cities)) # 2797174365184 cities.append(“Berlin”)print(id(
cities)) 
# 2797174365184
####Sets 

my_set = {1, 2, 3}
print(id(my_set)) # 2797172976992 my_set.add(4)print(id(
my_set)) 
 # 2797172976992
###Dictionary 

thisdict = {
 “brand”: “Ford”, “model”: “Mustang”,

 “year”: 1964
}
print(id(thisdict)) #2797174128256 thisdict[“engine”] = “2500cc”
print(id(
thisdict)) #2797174128256

 

本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;

2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;

3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;

4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;

5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/296572.html

(0)
上一篇 2023年3月30日 08:45
下一篇 2023年3月30日

相关推荐

发表回复

登录后才能评论