如何以Pythonic的方式编写Python代码
#编程 #生产率 #python

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代码的方式更新此故事,因此请不要忘记保存它。

您可以在Twitter LinkedInWebsite

上找到我