day11:return关键字&全局局部变量&函数名的使用&函数的嵌套&nonlocal关键字&localsglobals

day11:return关键字&全局局部变量&函数名的使用&函数的嵌套&nonlocal关键字&localsglobals,第1张

概述关键字:return 自定义函数的返回值,return可以把值返回到函数的调用处 1.return+六大标准数据类型,还有类和对象,函数 如果不定义return,默认返回的是None 2.在执行ret

关键字:return

自定义函数的返回值,return可以把值返回到函数的调用处
        1.return+六大标准数据类型,还有类和对象,函数
        如果不定义return,默认返回的是None
        2.在执行return之后,立刻终止函数,后面的代码不执行

# 1.return的返回类型def func():     return 1     return 3.14     return "abc"     return []     return ()     return {"a":1}    passres=func() 如果不定义return,默认返回的是Noneprint(res)
 2.在执行完return 之后,立刻终止函数,后面的代码不执行print(1)    print(2return 3  立刻终止函数,后面的print(4)和print(5)不执行    print(4print(5)res =print(res)for i in range(3):        if i==2:            return 1        (i)res = func()print(res)  0 1 1
 3.模拟简单的计算器 + - * / func(sign,num1,num2):    if sign=="+":        res= num1+num2    elif sign==-:        res =num1-*:        res = num1*/:        if num2 ==0:            return 除数不能为0,老弟        res = num1/else这个本计算器真算不了"    return resres = func(",3,5)res = func(,0)res = func(&print(res)

全局变量和局部变量

局部变量:在函数内部定义的变量(局部命名空间)
全局变量:在函数外部定义的或者使用global在函数内部定义(全局命名空间)
作用域:作用的范围

局部变量作用域:在函数的内部
全局变量作用域:横跨整个文件

生命周期:
内置变量>全局变量>局部变量

1.局部变量

 1.局部变量 定义局部变量    a=5     获取局部变量    (a)     修改局部变量    a=10    (a)func()print(a)  error 不能在全局调用局部变量

2.全局变量

 2.全局变量# 定义全局变量b=10 获取全局变量(b) 修改全局变量b=20 可以在函数内部获取全局变量    (b)func()

3.使用global在函数内部创建全局变量

 3.使用global在函数内部创建全局变量global c    c=200func()print(c)

4.使用global在函数内部修改全局变量

 4.使用global在函数内部修改全局变量d=300 d    d=400print(d)

5.总结:

可以使用global关键字在函数内部定义一个全局变量
也可以使用global关键字在函数内部修改一个全局变量

 

函数名的使用

1.函数名是一个特殊的变量,可以把函数当做变量对它赋值

print(我是func函数return 1 1.函数名是个特殊的变量,可以当做变量赋值a=你好"(a)a= a() 函数可以像变量一样销毁del aa()

2.函数名可以作为容器类型数据的参数

 2.函数名可以作为容器类型数据的元素 func1():    我是func1函数) func2():    我是func2函数 func3():    我是func3函数)lst=[func1,func2,func3]in lst:    (i)    i()  func1() func2() func3()

3.函数名可以作为函数的参数

 3.函数名可以作为函数的参数) func4(f):    f()  我是func3函数func4(func3)

4.函数名可以作为函数的返回值

 4.函数名可以作为函数的返回值 func(f):     fres = func(func2)  f---> func2 -----> res=func2()res()

5.__doc__ 或者help查看文档

  __doc__ 或者help查看文档 func(a):    """    功能:xxxx    参数:a    返回值:1    """    xxxxreturn 1help(func)res = func.__doc__(res)输出结果:  功能:xxxx          参数:a          返回值:1            

 函数的嵌套

1.一个简单的例子

 outer():     inner():        我是inner函数)    inner()outer()inner()  调用外部函数时,内部函数不可以再函数外部调用!

1.内部函数可以直接在函数外部调用吗?不行
2.调用外部函数后,内部函数可以在函数外部调用吗?不行
3.内部函数可以在函数内部调用吗? 可以
4.内部函数在函数内部调用时,是否有先后顺序?有!必须先定义再调用

2.函数嵌套案例

 外层是outer,内层是inner,最里层是smaller,调用smaller里面的所有代码 smaller():            我是smaller函数nonlocal关键字

nonlocal 遵循LEGB就近找变量原则
        1.找当前空间上一层的局部变量进行修改
        2.如果找不到,会继续向上寻找
        3.最后什么也没有,直接报错

1.找当前空间上一层的局部变量进行修改

 1.找当前空间上一层的局部变量进行修改 outer():    a=100     inner():        nonlocal a        a=200         200    inner()     200outer()

2.如果找不到,会继续向上寻找

 2.如果找不到,会继续向上寻找 smaller():            nonlocal a            a=400             400        smaller()         400outer()

3.注意点:nonlocal只能修改局部变量

 3.注意点:nonlocal只能修改局部变量a=100 smaller():            nonlocal a  nonlocal只能修改局部变量,而本程序中第一行的a是全局变量,nonlocal无法修改            a=400            (a)        smaller()        (a)    inner()    (a) outer()

4.不使用nonlocal修改局部变量--->只能适用于列表

 4.不使用nonlocal修改局部变量 func():    lst=[1,2,4]     inner():        lst[-1]=10    inner()    (lst)func()

globals和locals

1.locals 获取当前作用域中所有变量

locals 如果在全局,调用locals之后,获取的是打印之前的所有变量,返回字典,全局空间作用域
locals 如果在局部,1)">调用之前的所有变量,局部空间作用域

 locals 在全局:获取打印之前的所有变量 func():    ff = 123a = 1b = 2res = locals()c = 3 是一个大字典,里面有很多键值对,a:1 b:2 c:3均可以打印出来(截止到打印之前)d = 4  d:4 不会被打印
 locals 在全局a1 = 10 func():    a = 1    b = 2    res = locals()    c = 3     a:1 b:2 会被打印出来 截止到调用local()之前的都会被打印出来    d = 4a2 = 20func()a3 = 30

2.globals 只获取全局空间中所有变量

globals 如果在全局,调用globals之后,1)">打印之前的所有变量,全局空间作用域
globals 如果在局部,1)">调用之前的所有变量,全局空间作用域

 global 在全局res = globals()  a:1 b:2 c:3 截止到打印之前c = 3(res)d = 4
 global 在局部a1 = 10 globals()    c = 3    (res)    d = 4func()   globals() a1:10 a2:20 截止到调用处a3 = 30

3.globals 动态批量创建全局变量

 1.用字符串定义全局变量dic = globals()  必须是global定义的字典,普通字典无效print(dic)  返回的是系统的字典 在全局的字典当中,通过添加键值对,自动创建全局变量 对应的键时变量名,对应的值是变量指向的值dic[name"] = 致和print(name)  致和
 2.批量定义全局变量 func():    dic = globals()     通过在全局系统字典当中,添加键值对,批量创建变量    in range(1,6 "a%d" % (1) => "a1"  "a%d" % (2) => "a2"          dic[a%d" % (i)] = i   1~5         func()

 

总结

以上是内存溢出为你收集整理的day11:return关键字&全局/局部变量&函数名的使用&函数的嵌套&nonlocal关键字&locals/globals全部内容,希望文章能够帮你解决day11:return关键字&全局/局部变量&函数名的使用&函数的嵌套&nonlocal关键字&locals/globals所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1190141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存