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)
相关文章
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
141 1
|
1月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
209 1
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
125 0
|
2月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
257 101
|
2月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
199 99
|
2月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
181 98
|
2月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
算法 Python 容器
Python编程 - 不调用相关choose库函数,“众数“挑选器、随机挑选器 的源码编程实现
Python编程 - 不调用相关choose库函数,“众数“挑选器、随机挑选器 的源码编程实现
234 0
|
算法 Python
Python编程的函数—内置函数
Python编程的函数—内置函数
152 0
|
算法 Python
Python编程实验四:函数的使用
Python编程实验四:函数的使用
253 0