Python基础:变量作用域、参数传递与模块导入详解
本文深入解析Python开发中的核心概念,详细阐述变量的命名规则、局部与全局作用域的区别及global关键字的使用。同时介绍Python按引用传递参数的机制,区分位置参数与关键字参数,并讲解自定义模块的创建、命名空间管理及标准库模块的导入方法,帮助开发者规范代码结构。
前言
在掌握Python函数的基本用法后,日常开发中还需重点掌握变量、参数和模块这三个核心要素。尽管Python的变量类型已在语法介绍中简要提及,但本文将更深入地探讨变量的作用域问题,并分别详细解析参数和模块的具体使用方法。
1 变量
在Python中,变量本质上是存储在内存中的值。当程序执行变量创建操作时,系统会在内存中开辟一个空间,Python解析器会根据变量的数据类型分配相应的内存。变量起到标记或指向特定值的作用。
示例如下:代码中的 color 即为变量名,它指向字符串 'blue'。语句 color = "blue" 通过赋值运算符 = 将变量与值关联。= 号的作用是让变量指向一个具体的值。当Python遇到变量时,会将其替换为所指向的值。此外,Python支持同时为多个变量赋值。
>>> color = "blue"
>>> color
'blue'
>>> count = 5
>>> 100 * count
500
>>> a,b,c = "hello",888,666
>>> a
'hello'
>>> b
888
>>> c
666
变量的使用虽然简单,但必须遵循以下命名规则:
1. 变量名的第一个字符必须是字母或下划线,不能是数字;
2. 变量名不能使用Python的关键字。例如,if、else、while、def、or、and、not、in 和 is 均为Python保留关键字,不可用作变量名;
3. 变量名长度不限,但只能包含字母、数字和下划线,禁止使用空格、连字符、标点符号、引号或其他特殊字符;
4. Python严格区分大小写,因此 A、B 和 a、b 被视为完全不同的变量名。
以下是一个错误的示例:

>>> While = "nihao"
>>> While
'nihao'
鉴于Python区分大小写,我们可以将小写的 w 改为大写 W 来避免错误,从而使用变量名。不过,通常不建议采用这种大小写混用的命名方式,以保持代码规范。
结合之前介绍的函数概念,变量带来的一个重要问题是作用域。作用域决定了变量在程序中哪些区域可被访问或操作,通常分为局部变量和全局变量。对比以下两个函数:
import math
def example1(x, y, a, b):
s = (x - a) ** 2 + (y - b) ** 2
return math.sqrt(s)
def example2(x, y, a, b):
w = abs(x - a)
h = abs(y - b)
return w * h

全局变量 color 的值并未改变,仍为 'blue'。问题在于Python将函数 my_color 中的变量 color 视为局部变量,因此对其的修改并未影响全局变量 color。此时,必须使用关键字 global。对上述代码稍作修改,如下:这样即可将 my_color() 中的变量应用扩展到 what_color() 函数中。

2 参数
在Python编程中,参数的主要作用是向函数传递数据,且支持多种参数类型。传递参数时,Python通常采用按引用传递的方式,即函数使用新变量来引用原始值。请看下面的代码:


将 i 和 j 分别设置为 10.9 和 3.7 后的内存状态,以及刚调用 count(x,y) 后的内存状态:x 和 y 分别指向 i 和 j 所指向的值。
当调用 count(i,j) 时,Python 创建了两个新变量 x 和 y,它们分别指向 i 和 j 的值,如上图所示。按照排列顺序进行赋值,x 指向 i,因为 i 是第一个实参。这里并没有复制实参的值,而是给它们指定了新名称,函数使用这些新名称来引用它们。
再看一个典型示例,在某些情况下,参数不会被函数外部所感知。该函数旨在将所有传入变量的返回值固定为 100,但实际运行后,j 的值并未发生任何改变。
>>> def get(i):i = 100
...
>>> j = 12
>>> get(j)
>>> j
12
以上代码的执行步骤可分为以下几步:
1. 将 12 赋值给 j;
2. 调用函数 get(j),将 j 的值赋值给 i,此时 i 和 j 都指向 100;
3. 将 100 赋值给 i;
4. 最后,函数执行结束后,局部变量 i 被删除。可以发现,在函数内部并未直接访问或修改变量 j。
在Python使用中,我们也会使用关键字参数,其主要作用是对输出起到固定的拼接效果,具有两个特点:
1. 清晰地指出了参数值,有助于提高程序的可读性;
2. 关键字参数的顺序无关紧要。
3 模块
在Python中,模块是指一系列对函数和变量的集合使用。其组成元素包括函数和变量。如果使用Python解释器运行代码,在退出后,你会发现所有定义的变量和函数都会消失,这就是Python模块诞生的原因。首先,创建模块需要创建一个 *.py 文件,并在其中包含用于完成任务的函数。例如之前的示例:求输入不同半径的圆的面积。
import math
def round_area(x):
return math.pi * x ** 2
if __name__ == "__main__":
x = int(input())
area = round_area(x)
print("半径为" + str(x) +"cm的圆的面积为:"+ str(area))
模块与常规Python程序之间唯一的差别在于用途不同:模块是一个由函数组成的工具箱,用于编写其他程序。因此,模块通常不包含 main() 函数。此处难以编写复杂的模块函数示例,故举一个Python自带模块 math 模块为例。

>>> math.exp(9)
8103.083927575384
对于自定义模块的编写,还需注意其命名空间——一组独特的变量名和函数名,这在调用模块包时经常用到。以Jupyter为例:第一行是引用整个 math 模块,第二行仅表示使用 math 模块中的 sqrt 函数。

import math 引用了Python标准库的 math.py 模块,math.exp() 是一个包含参数 9 的函数。Python中的模块搜索路径如下:当Python解释器遇到 import 关键字时,会先搜索所有目录列表,如下:
#!/usr/bin/python
#file_name:test.py
def print_func( name):
print ("Hello : ", name)
return
#!/usr/bin/python
# Filename: train.py
# 导入模块
import test
# 现在可以调用模块里包含的函数了
test.print_func("kaka")

到此这篇关于Python中的变量,参数和模块介绍的文章就介绍到这了,更多相关Python变量 参数和模块内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









