一周学会python4变量

4 变量

为了正常运行,Python程序需要变量和运算符等基本组件。包括变量和运算符在内的这些元素对于程序员新手来说很容易理解和应用,使他们能够开发出创建复杂软件所需的算法。

本章涉及到了第8章函数的内容,如不能理解,可学习函数后再温习。

4.1 变量简介

变量是在Python程序中存储和处理数据的一种方式。它们允许用户和软件与数据交互。没有数据,软件应用程序就毫无用处,对最终用户也没有任何作用。

变量在Python中用于将数据存储在特定的计算机内存位置,允许软件上传或下载数据。变量的概念最早出现在代数学中,自诞生以来一直是高级编程语言的基本组成部分。

例如,在数学公式2x + 3y中,变量x和y可以赋值,然后用来改变公式的输出。在编程中,具有不变值的变量被称为常量。通过使用变量,您可以通过提供字面值来修改程序的输出。变量是可以替换的,而不应该被替换的值在编程中通常被称为常量。

sample = "My first example"
print(sample)
sample = "My second example"
print(sample)

4.2 变量命名

变量名只能包含数字、字母字符和下划线。例如"sample1"可以用作变量名,而"$sample1"则不能,因为它以不支持的符号 $开头。

Python程序员不能用数字作为变量名的开头。例如,"sample1 "是一种有效的变量命名格式,而 "1sample "则不是。

在Python中,使用中文作为变量名是被允许的,但并不被广泛建议。官方的Python编码规范(PEP 8)建议变量名使用英文单词,以提高代码的可读性和可维护性。以下是一些关于变量命名的考虑因素:

  • 可读性:使用英文变量名可以使代码更易读和理解。大多数 Python 程序员使用英文变量名,这样可以让他人更容易理解你的代码,并降低沟通和协作的难度。

  • 代码共享和社区:Python 社区中的大多数代码和资源都使用英文变量名,这意味着在使用中文变量名时,你可能会在共享代码、博客文章、文档和问题解答方面遇到一些困难。

  • 跨平台和工具支持:一些编辑器、集成开发环境(IDE)和开发工具对中文变量名的支持可能有限,可能会导致一些显示或处理问题。

尽管如此,有时在特定的情况下,使用中文变量名可能会更符合特定的应用场景或需求。例如,当你需要与中文文档、中文领域专业术语或特定业务逻辑对应时,使用中文变量名可能更具描述性。

最重要的是保持一致性和可读性。如果你决定在你的代码中使用中文变量名,请确保在整个代码库中保持一致,并与团队成员达成一致。

>>> 变量 = "hello"
>>> print(变量)
hello

参考资料

4.3 变量的内存地址

在Python中,可以使用内置函数id()来获取变量的内存地址。该函数返回表示对象内存地址的整数。

>>> x = 42
>>> id(x)
1724559656464

对于不可变类型的变量(如整数、字符串等),Python在遵循"同一值具有相同的内存地址"的原则下,会对相同的不可变值共享内存。这意味着对于相同的不可变值,它们的内存地址可能是相同的。而对于可变类型的变量(如列表、字典等),每个对象都有自己独立的内存地址。

以下是一个示例,演示了相同的不可变值具有相同的内存地址:

>>> x = 42
>>> y = 42
>>> id(x)
1724559656464
>>> id(y)
1724559656464

上述代码中,x和y都被赋值为相同的整数值42,因此它们具有相同的内存地址。

需要注意的是,不应该依赖于变量的内存地址来进行比较或判断相等性。应该使用==运算符来比较变量的值,而不是比较内存地址。

4.4 局部变量和全局变量

在Python中,变量的作用域分为局部变量和全局变量。

局部变量是在函数内部定义的变量,只在函数内部有效。它们的作用域仅限于函数内部的代码块。当函数执行完毕后,局部变量将被销毁,不能在函数外部访问。

# This is an example of a local variable within a function
def my_sample():
    x = "This is a sentence"
    print(x)
    
mysample()

在上述示例中,变量x是在函数my_sample(内部定义的局部变量。它只在函数内部有效,当函数执行完毕后,变量x将被销毁。

全局变量可用于整个程序。

# Let's create a global variable
x = "This is a sentence"

def function1():
    print(x)

def function2():
    print(x)
    
function1()
function2()

在函数内部修改全局变量时,如果没有使用global关键字声明,Python会将其视为局部变量。因此,在修改全局变量之前,需要使用global关键字明确告诉Python该变量是全局变量。

x = 42  # 全局变量

def my_function():
    global x  # 声明x为全局变量
    x = 43  # 修改全局变量的值
    print(x)

my_function()
print(x)  # 输出修改后的全局变量的值

执行结果:

43
43

使用全局变量时,需要谨慎考虑,因为滥用全局变量可能导致代码的可读性和可维护性下降。以下是一些适合使用全局变量的情况:

  • 共享数据:如果多个函数或模块需要访问和修改相同的数据,可以使用全局变量来共享数据。这样可以避免传递参数或使用返回值来传递数据。
  • 全局配置:在程序中需要设置全局配置参数时,可以使用全局变量来存储这些参数。这样可以方便地在不同的函数或模块中访问和修改配置值。
  • 缓存数据:如果需要在多个函数或模块中缓存某些计算结果或数据,可以使用全局变量来存储缓存数据,以便后续的函数调用可以直接使用。这样可以提高程序的性能。

然而,应该避免滥用全局变量,因为全局变量可能导致以下问题:

  • 命名冲突:如果过多地使用全局变量,可能会导致变量名冲突,使代码难以理解和维护。
  • 难以追踪:全局变量的值可以在程序的任何地方被修改,这可能使代码难以追踪和调试。
  • 依赖关系:函数之间过度依赖全局变量可能导致代码的耦合性增加,使代码难以重构和测试。

如果有必要使用全局变量,请确保在使用前进行适当的设计和规划,并遵循良好的编码实践。使用全局变量时,应该注意变量的命名,避免与局部变量或其他全局变量发生冲突。

posted @ 2023-10-29 15:46  磁石空杯  阅读(83)  评论(0编辑  收藏  举报