Python是最受欢迎,最强大的编程语言之一。它被广泛用于各种目的,例如 Web开发,数据分析,机器学习,自动化等。还以简单性,可读性和表现力而闻名。
但是,编写Python代码不仅是遵循语言的语法和语义。这也是关于遵循Python社区的风格和文化。这就是我们所说的以Pythonic方式编写Python代码。
以pythonic的方式编写Python代码意味着遵循Python语言的最佳实践和成语,使您的代码更加可读,优雅和高效。这也意味着利用Python提供的功能和选项使您的代码更加简洁和表现力。
在这篇博客文章中,我将根据《 Python代码和一些在线资源》的官方样式指南,与您分享有关如何以Pythonic方式编写Python代码的一些提示和示例。让我开始!
一般写作风格
编写Python代码时要考虑的第一件事是一般写作风格。这包括如何格式化代码,如何命名变量和功能,如何使用空格和凹痕,如何编写评论和docstrings等。
。 每个凹痕水平使用4个空间。
# Bad practice
def foo():
print("Hello")
print("World")
# Good practice
def foo():
print("Hello")
print("World")
将所有线路限制为最多79个字符。
# Bad practice
print("This is a very long line of code that exceeds the recommended limit of 79 characters")
# Good practice
print("This is a very long line of code that "
"exceeds the recommended limit of 79 characters")
使用空白行分开功能和类,以及在功能中的较大代码块。
# Bad practice
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
return x / y
# Good practice
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
return x / y
将小写字母用于变量和函数,以及常数的大写字母。使用下划线将名称分开。
# Bad practice
MyVariable = 10 # variable name should be lowercase
myFunction() # function name should be lowercase
my constant = 20 # constant name should be uppercase
# Good practice
my_variable = 10 # variable name is lowercase
my_function() # function name is lowercase
MY_CONSTANT = 20 # constant name is uppercase
使用描述性名称来反映其目的和含义的变量和函数。避免使用单个字母或模棱两可的名称。
# Bad practice
x = 10 # what does x represent?
f() # what does f do?
n = 20 # what does n represent?
# Good practice
length = 10 # length is descriptive
area(length, width) # area is descriptive
is_prime(number) # is_prime is descriptive
使用Docstrings记录您的功能和类。
def area(length, width):
"""Return the area of a rectangle.
Parameters:
length (float): The length of the rectangle.
width (float): The width of the rectangle.
Returns:
float: The area of the rectangle.
"""
return length * width
help(area) # displays the docstring
area.__doc__ # returns the docstring
在必要时使用注释来解释您的代码。
# Bad practice
x = 10 # assign 10 to x
y = x + 5 # add 5 to x and assign to y
print(y) # print y
# Good practice
x = 10 # initial value
y = x + 5 # increment by 5
print(y) # display result
通过遵循这些通用书写样式指南,您将使代码更加一致,清晰且易于阅读。
使用变量技巧
Python提供了许多选项,可让您编写包含可变分配操作的简单和表达命令。以下是您可以用来使代码更加Pythonic的一些技巧:
交换两个变量而不使用临时变量。
# Bad practice
temp = x
x = y
y = temp
# Good practice
x, y = y, x
在一行中分配多个变量。
# Bad practice
x = 1
y = 2
z = 3
# Good practice
x, y, z = 1, 2, 3
将序列解开为多个变量。
# Bad practice
my_list = [1, 2, 3]
x = my_list[0]
y = my_list[1]
z = my_list[2]
# Good practice
my_list = [1, 2, 3]
x, y, z = my_list
使用星号(*)操作员收集或解开可变数量的参数。
# Bad practice
def add(a, b):
return a + b
def add_many(*args):
result = 0
for arg in args:
result += arg
return result
# Good practice
def add(*args):
return sum(args)
add(1, 2) # returns 3
add(1, 2, 3) # returns 6
add(1, 2, 3, 4) # returns 10
通过使用这些变量技巧,您将使您的代码更加简洁和表达。
处理列表
列表是Python中最常见和最通用的数据结构之一。他们可以存储任何类型的对象并支持各种操作,例如索引,切片,附加,扩展,插入,插入,删除,分类,倒车等。以下是您可以使用的一些技巧和技巧:
使用列表综合以创建现有迭代的新列表。
# Bad practice
squares = []
for x in range(10):
squares.append(x**2)
# Good practice
squares = [x**2 for x in range(10)]
使用在运算符中检查列表中是否在列表中。
# Bad practice
found = False
for x in my_list:
if x == target:
found = True
break
# Good practice
found = target in my_list
使用枚举函数在带有索引的列表上循环。
# Bad practice
index = 0
for x in my_list:
print(index, x)
index += 1
# Good practice
for index, x in enumerate(my_list):
print(index, x)
使用zip函数并行循环在多个列表上。
# Bad practice
for i in range(len(names)):
print(names[i], ages[i])
# Good practice
for name, age in zip(names, ages):
print(name, age)
通过使用这些技巧和技巧,您将在处理列表时使代码更加高效,优雅。
玩起来
功能是Python最重要,最有力的功能之一。它们允许您分组和重复使用代码,提高可读性和模块化,并实施抽象和封装。以下是您可以通过功能获得乐趣并使您的代码更加Pythonic的一些方式:
使用默认参数为您的功能提供可选参数。
# Bad practice
def greet(name):
if name:
print(f"Hello, {name}!")
else:
print("Hello, world!")
# Good practice
def greet(name="world"):
print(f"Hello, {name}!")
使用关键字参数为您的函数提供命名参数。
# Bad practice
def area(length, width):
return length * width
area(10, 5) # returns 50
# Good practice
def area(length, width):
return length * width
area(width=5, length=10) # returns 50
使用lambda函数创建匿名函数。
# Bad practice
def square(x):
return x**2
my_list = [1, 2, 3]
squares = map(square, my_list)
# Good practice
my_list = [1, 2, 3]
squares = map(lambda x: x**2, my_list)
使用装饰器修改或增强功能的行为。
# Bad practice
def hello():
print("Hello")
def log(func):
def wrapper():
print(f"Calling {func.__name__}")
func()
print(f"Done calling {func.__name__}")
return wrapper
hello = log(hello)
hello()
# Good practice
def log(func):
def wrapper():
print(f"Calling {func.__name__}")
func()
print(f"Done calling {func.__name__}")
return wrapper
@log
def hello():
print("Hello")
hello()
通过使用这些方式,您将使您的代码在使用函数时更加有趣和灵活。
跟随Python的禅宗
Python的禅宗是指导Python语言设计的19个原则的集合。它们是由Python的核心开发人员之一Tim Peters撰写的,可以通过在Python解释器中键入import this
来访问。这是编写Pythonic代码的一些最重要的:
- 美丽比丑陋更好。
- 显式比隐式更好。
- 简单胜于复杂。
- 复合物比复杂。
- 扁平比嵌套更好。
- 稀疏比密集好。
- 可读性计数。
- 应该有一种 - 最好只有一种 - 很明显的方法。
- 如果实现很难解释,这是一个坏主意。
- 如果实现很容易解释,这可能是一个好主意。
通过遵循这些原则,您将使您的代码更加美丽,Pythonic。
上找到我我将以最佳的Pythonic编写Python代码的方式更新此故事,因此请不要忘记保存它。