python中作用域与函数嵌套

简介: python中作用域与函数嵌套

一、作用域



作用域:可以被影响的范围。

全局变量:在最外层声明的变量。

局部变量:在某些代码块声明的变量。


全局变量举例

xxx=100 #最外层的变量,全局变量


def P():

   print(xxx)


P()


说明:外面一层的变量,能够被代码块内部一层的变量调用。


局部变量的注意事项


1.在函数体内部声明的变量,不能再函数体外部去调用,会直接报错。

2.在函数体内部同名的局部变量,即使重新赋值了,也不会影响函数体外部的那个同名全局变量。如果真的想要改变外部同名的全局变量,那么我们必须要在函数体内部使用global关键字声明变量。

3.在函数体内部,如果先调用外部的全局变量后,是不能再次修改的,因为在函数体内部写了同名的变量后,会使得编译器无法识别局部变量还是全局变量,使得程序异常。


二、函数的嵌套



在python中是运行函数嵌套定义使用的。注意:函数体内部定义的函数也必须要手工调用才能使得有函数中的效果,否则默认是不被调用执行的。

举例:

#函数的嵌套

eee=10

def P3():

   eee=20

   print("P3中eee=",eee)

   def P4():

       fff=5

       print("P4中的结果=",fff+eee)

   P4()

P3()


函数嵌套的作用范围

在函数体内部定义的函数需要在函数体内部调用,默认不能在全局的作用范围的最顶层调用这个函数的。


函数的复杂嵌套调用

#函数的嵌套

eee=10

def P3():

   eee=20

   print("P3中eee=",eee)

   def P4():

       fff=5

       print("P4中的结果=",fff)

   return P4


P3()()

注意:如果使用双括号,在调用内存函数的时候,外层函数将会被自动调用。


函数的指针赋值调用

#函数的嵌套

eee=10

def P3():

   eee=20

   print("P3中eee=",eee)

   def P4():

       fff=5

       print("P4中的结果=",fff)

   return P4 #这里返回的是指针类型的变量


K1=P3()

K1()

结论:在调用内存函数的时候,外层函数也将会被自动调用。


三、解决问题的思路



1.带有红色下划线的报错,它是一种语法报错

2.异常报错,先调试,实在不行,可以将报错去直接搜索引擎直接搜索报错

3.搜索问题的知识点。


四、总结强调



1.作用域。全局变量区别于局部变量。

2.函数的嵌套。注意点,在内部定义的函数被调用时候会自动调用其父级函数。函数也有作用范围。

3.解决问题的思路。

4.一定要主动多测试代码。


本节源代码(已被#注释):

# xxx=100 #最外层的变量,全局变量
#
# def P():
#     ddd=300  #在函数体内部,是局部变量
#     # global xxx
#     xxx=200  #这个是与全部变量同名的局部变量
#     # print(xxx)
#
# P()
# print(xxx)
# yyy=200
#
# def P2():
#     print(yyy)
#     # yyy=100
#函数的嵌套
# eee=10
# def P3():
#     eee=20
#     print("P3中eee=",eee)
#     def P4():
#         fff=5
#         print("P4中的结果=",fff+eee)
#     return P4 #这里返回的是指针类型的变量
#
# K1=P3
# K1()()
#
# ttt=10
# while(True):
#     ttt=20
#     break
# print(ttt)
相关文章
|
7天前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
16 0
|
2天前
|
Python
python解包字典到函数参数
【7月更文挑战第5天】
6 2
|
11天前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
11天前
|
Java Python
Python进阶之旅:深入理解变量作用域、垃圾回收、拷贝机制与异常处理
Python进阶之旅:深入理解变量作用域、垃圾回收、拷贝机制与异常处理
|
11天前
|
Python
Python中解包到嵌套变量
【6月更文挑战第19天】
5 2
|
4天前
|
Python
|
4天前
|
API Python
Python学习日记(二:函数和逻辑操作)
Python中的函数和逻辑操作至关重要。函数包括可变和不可变参数。
|
9天前
|
机器学习/深度学习 人工智能 程序员
探索Python宝库:从基础到技能的干货知识(数据类型与变量+ 条件与循环+函数与模块+文件+异常+OOP)
探索Python宝库:从基础到技能的干货知识(数据类型与变量+ 条件与循环+函数与模块+文件+异常+OOP)
7 0
|
11天前
|
Python
经验大分享:python类函数,实例函数,静态函数
经验大分享:python类函数,实例函数,静态函数
12 0
|
11天前
|
Python