Python之函数(四)函数的嵌套和global、nonlocal

函数的嵌套
函数的嵌套

def func()
print(1)
def f1():
print(2)
return f1()
func()
结果为:1 2
不管在什么位置,只要是函数+()就是在调用此函数
函数调用执行后,函数体中开辟的空间就自动销毁了
def func():
a=1
def foo():
b=2
print(b)
print(a)
def f1():
print(b)
return f1()
return foo()
print(func())
结果为:2 1 2 None
print(func()) 输出func()的返回值
如果 函数里没有此变量 就找上面那一层(即父子层)

函数的相互引用

def func():
a=1
foo():
print(a)
def foo():
b=2
print(b)
func()
结果为:2 1

def a():
a1=1
c()
print(c)
def b():
b1=2
print(b1)
def c():
c1=3
print(a)
def run():
a()
print(run())
结果为:
<function a at 0x0000024CE8801E18>
<function c at 0x0000024CE89DA950>
None

def func():
a=1
def b():
print(a)
def foo():
b=1
def z():
print(func)
print(b)
ret=z()
func()
return ret
def run()
foo()
print(run())
结果为:
<function func at 0x00000242CF281E18>
1
None

def func(a):
foo(a)
def foo(e):
b(e)
def b(c):
print(c)
return 10
print(func(5))
结果为:
5
None
4.5 global 及 nonlocal
global(声明修改全局变量的值)

a=10
def func():
global a # 声明修改全局变量的值
a += 1
print(a)
func()
print(a)
结果为: 11 11

a = 10
def f1():
a = 10
def f2():
a = 15
def f3():
global a
a += 1
print(a) # 11
print(a) # 15
f3()
print(a) # 10
f2()
f1()
结果为:10 15 11

a=10
def func():
def f1():
a=15
def foo():
nonlocal a
a+=1
print(a)
foo()
print(a)
f1()
func()
print(a)
结果为:16 16 10

总结:

global:修改全局空间的变量对应的值

nonlobal:在外层的函数中,修改局部空间的变量值,完全不涉及全局变量

nonlobal只修改离它最近的一层,最近的一层没有变量继续向上找,直到找到最外层函数

原文地址:https://www.cnblogs.com/yhx003/p/11438548.html

时间: 2024-12-10 09:44:06

Python之函数(四)函数的嵌套和global、nonlocal的相关文章

python学习笔记(四):函数

一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method. 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 二.使用函数的好处: 1.简化代码2.提高代码的复用性3.代码可扩展 三.p

python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)

一.函数的动态传参 1.*args位置参数动态传参 def chi(*food): print(food) chi("烧烤","火锅","虾吃虾涮","烤鱼") 多个位置参数传递进去,收到的内容是元组tuple,动态参数的位置必须要在位置参数后面 2**kwargs 关键字参数动态传参 def chi(**food): print(food) chi(zhangqing="吃点好的",lianda=&quo

python基础(3):函数对象、函数嵌套、名称空间与作用域、装饰器

函数对象 函数嵌套 名称空间与作用域 闭包函数 装饰器 练习 一 函数对象 #1 可以被引用 def max(x, y): return x if x > y else y func = max print(func(1, 2)) #2 可以当作参数传递 def max(x, y): return x if x > y else y def max_1(x, func): return func(x, 1) print(max_1(2, max)) #3 返回值可以是函数 #4 可以当作容器类

python(四)函数

一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 while True:     if cpu利用率 > 90%:         #发送邮件提醒         连接邮箱服务器         发送邮件         关闭连接     if 硬盘使用空

Python(四)-函数总结

版权声明: 本文作者为-陈鑫 本文的所有内容均来陈鑫总结,未经本人许可,禁止私自转发及使用. QQ: 499741233 E-mail: [email protected] 第1章 Python函数 面向对象 面向过程 1.可读性差 2.重用性差 函数式编程 第2章 自定义函数 看一个函数的例子:db文件内容为chenxin|123 def login(username,password): ''' 用于用户登陆 :param username: 用户输入用户名 :param password:

python之旅:函数对象、函数嵌套、名称空间与作用域、装饰器

一.函数对象 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 # 利用该特性,优雅的取代多分支的if 二.函数嵌套 三.名称空间与作用域 四丶装饰器 原文地址:https://www.cnblogs.com/moyand/p/8667266.html

python局部变量、高级函数、匿名函数、嵌套函数、装饰器

1.局部变量 在函数内部,可以用Global,显式的声明为全局变量.这种方式永远不要这么用. Ctrl+?多行注释i 2.高级函数 把函数名当做参数,传给函数 def add(a,b,f): return f(a)+f(b) res = add(3,-6,abs) abs是内置函数 def bar(): print("in the bar") def test1(func): 首先看第一个例子:def bar(): print("in the bar") def t

Python系列:四、Python函数--技术流ken

Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串—用于

PYTHON学习0026:函数---嵌套函数和作用域----2019-6-19

1.函数定义后,只要没调用,其内部代码永远不会执行.2.函数内部可以再定义函数3.嵌套函数里有变量时,先在本级函数作用域找函数值,没有则逐级往上找.(本级--父级--爷爷级--....-全局),找到了则就不继续再往上找了. 作用域:一.在PYTHON中,一个函数就是一个作用域,函数定义完成后,作用域已经生成,以后不管在哪里调用,作用域不变. 原文地址:https://blog.51cto.com/13543767/2411285

python学习之路(四) ---函数

一.函数的作用 当我们在写一个复杂的程序的时候,可以能会在很多地方上用到相同的功能,写起来代码量非常大,通过函数可以解决大量的代码冗余,我们只需要将各个功能封装到一个函数内,需要的时候就调用这个函数就可以,这样写起来的代码可读性也得到很大的提升,而且当我们后续需要增添新功能的时候也非常的方便,维护起来更加的方便. 二.内置函数和自定义函数   内置函数 python中为我们提供的许多的内置函数,可以到https://www.runoob.com/python/python-built-in-fu