Python函数的作用域与全局变量

需积分: 35 2 下载量 128 浏览量 更新于2024-08-17 收藏 106KB PPT 举报
"Python函数的定义、命名规则、作用域、参数、返回值和全局与局部变量的使用" 在Python编程中,函数是一种重要的组织代码的方式,它可以实现特定功能并重复使用,提高代码的效率和可读性。函数的定义通常采用`def`关键字,后跟函数名和参数列表,如`def function_name(arg1, arg2):`。如果函数没有返回值,Python会默认返回`None`。 函数名的命名遵循一定的规则:以字母或下划线开头,可包含字母、数字和下划线,且区分大小写,不能使用保留字。Python有名称空间的概念,不同的对象存在于不同的作用域中。全局作用域通常指在模块级别定义的变量,而函数内部定义的变量属于局部作用域,仅在函数内部有效。 在查找变量时,Python遵循LGB(Local, Global, Built-in)规则。首先在局部作用域查找,找不到则到全局作用域查找,再找不到会尝试查找内置作用域。如果要在局部作用域中修改全局变量,需要使用`global`关键字声明。例如: ```python global a a = 2 def test(b): global a # 声明a为全局变量 a = b * a # 修改全局变量a return a test(10) print(a) # 输出结果为20 ``` 在上述例子中,`global a`使得在`test`函数内部对`a`的赋值操作影响到了全局变量`a`。 不使用`global`关键字时,函数内部的变量只在函数内部有效,不会影响全局变量。例如: ```python name = "Jims" def set(): name = "ringkee" # 这里创建了一个局部变量name set() print(name) # 输出 "Jims",因为这里访问的是全局变量name # 使用global后的例子 name = "Jims" def set1(): global name name = "ringkee" # 修改全局变量name set1() print(name) # 输出 "ringkee",因为全局变量name已被修改 ``` 在函数的参数传递中,Python采用“传对象引用”而非“传值”。这意味着,如果参数是可变对象(如列表、字典),函数内部对参数的修改会影响到原始对象;如果是不可变对象(如整数、字符串),则会在函数内部创建新的对象。 函数还可以有返回值,通过`return`语句指定。如果省略`return`,函数将默认返回`None`。例如: ```python def add(x, y): return x + y result = add(3, 5) print(result) # 输出8 ``` 此外,Python提供了许多内置函数,如`len()`、`type()`、`print()`等,可以直接使用,无需自己定义。 练习题目可以帮助巩固这些概念,例如编写一个函数,计算两个数的和,并考虑函数无返回值和有返回值的不同情况。理解并熟练应用这些知识,将有助于编写出更加高效、易维护的Python程序。