一:函数对像

#函数是第一类对象的含义是函数可以被当作数据处理

1,可以被引用:

2,可以当作参数传给另一个函数。

3,可以当作函数的返回值。

4、可以当作容器类型的元素。

例子:def pay():

print(‘支付。。。。’)

def withdraw():
                            print('取款。。。')
                      def transfer():
                             print('转账。。。')
                      def check_balance():
                             print('查看余额。。。')
                      def shopping():
                             print('购物。。。')
                      func_dic={
                                        '1':pay,
                                        '2':withdraw,
                                        '3':transfer,
                                        '4':check_balance,
                                        '6':shopping
                                       }#这里面将函数的功能放在了字典的容器类型里面,可以方便后面的调用。
                      while True:
                            msg="""
                                      1 支付
                                      2 取款
                                      3 转账
                                      4 查看余额
                                      5 退出
                                      6 购物
                                      """
                            print(msg)
                            choice=input('>>: ').strip()
                            if choice == '5':break
                            if choice not in func_dic:
                            print('输入的指令不存在傻叉')
                                 continue

func_dic[choice]()#调用非常的方便,不用写一堆的if判断。

二;函数的嵌套:

#函数的嵌套定义 
def f1():
    def f2():
        print('from f2')
    f2()

f1()

# from math import pi
# def circle(radius,action='area'): #radius=10#计算圆的周长和面积
#     def area():
#         return pi * (radius ** 2)
#     def perimeter():
#         return 2 * pi * radius
#     if action == 'area':
#         return area()
#     elif action == 'perimeter':
#         return perimeter()
# print(circle(10))

# print(circle(10,action='perimeter'))

#函数的嵌套调用

# def max2(x,y):
#     if x > y:
#         return x
#     else:
#         return y
# def max4(a,b,c,d):
#     res1=max2(a,b)
#     res2=max2(res1,c)
#     res3=max2(res2,d)
#     return res3

# print(max4(1,2,3,4))

三:名称空间和作用域(重点*****)

1、名称空间namespaces
    存放名字与值绑定关系的地方
2、名称空间分为三大类
    内置名称空间:
        作用:存放python解释器自带的名字
        生命周期:
            在解释器启动时生效,在解释器关闭时失效
    全局名称空间:
        作用:除了内置的与局部的名字外,其余都是全局名字
        生命周期:

在文件执行时生效,在文件执行完毕时失效

例如:x,func,y,l,z都是
            x=1
            def func():
                a=1
            y=2
            l=[1,2]
           if 3 > 2:
                if
                    if
                        if

z=3

局部名称空间:
        作用:用于存放函数调用期间函数体产生的名字
        生命周期:
            在文件执行过程
            如果调用了某个函数才会临时生效,在函数执行完毕后失效
    三种名称空间的加载顺序是:
        内置-》全局-》局部
    名称空间就是用来存放名字与值的绑定关系的,所以但凡要查找名字
    一定是从三者之一找到,查找顺序:
        从当前所在的位置倒着查找,如果当前所在的位置是局部名称空间,
        则查找顺序是:
            局部-》全局-》内置
3、作用域:
    域指的是区域、范围,作用域即作用的范围
    全局作用范围,全局作用域(内置名称空间与全局名称空间)
        全局有效,全局存活
    局部作用范围,局部作用域(局部名称空间)
        局部有效,临时存活

# 作用域关系是在函数定义阶段就固定死了,但凡调用函数都需要跑到定义阶段去找作用域关系

#在函数的调用阶段是是先跑到函数的定义阶段去找函数的值

# x=1
# def f1():
#     print(x)
# # f1()
# x=1000000000000000000000000000000000000000000000000000000000000000
# def f2():
#     # print(f1)
#     x=11111111111111111111111111111
#     f1()

# f2()

# 在局部如果想要修改全局的可变类型,不需要借助任何声明,可以直接修改

# 在局部如果想要修改全局的不可变类型,需要借助global声明,声明为全局的变量就可以直接修改了

# x=[]
# def f1():
#     x.append(1)#直接修改全局的可变类型
# f1()
# f1()

# print(x)

# x=1
# def f1():
#     def f2():
#         x=22222222
#         def f3():
#             global x    #用global修改全局变量
#             x=11111111111111111
#         f3()
#     f2()
# f1()
# print(x)

#如果要修改局部变量则用  nonlocal申明

# x=1
# def f1():
#     # x=33333
#     def f2():
#         # x=22222222
#         def f3():
#             nonlocal x      #用nonlocal修改局部变量
#             x=20000000000
#         f3()
#         print(x)
#     f2()
#
# f1()
# print(x)

函数对象,嵌套,空间与作用域相关推荐

  1. Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)...

    Python Day 10  函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal) 名称空间(命名空间): 当程序运行时,代码从上至下一次读取,遇到变量与值, ...

  2. python 函数可以作为容器对象的元素_python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义...

    复习 1. 字符串的比较: 2. 函数的参数:形参与实参 3. 实参的分类:位置实参与关键字实参 4. 形参分类: 1.无值位置形参 2.有值位置形参 3.可变长位置形参 4.有无值关键字形参 5.可 ...

  3. 函数对象 函数嵌套 名称空间与作用域

    函数对象: 函数是第一类对象,即函数可以当做数据传递 1 可以被引用 2 可以当做参数传递 3 返回值可以是函数  (函数名 不带() 就是函数名的内存地址,带括号就是执行函数) 4 可以当做容器类型 ...

  4. python中嵌套函数的应用实例-实例详解python函数的对象、函数嵌套、名称空间和作用域...

    函数的对象 python中一切皆对象 函数对象的四大功能 引用 def f1(): print("from f1") f1() #调用函数 print(f1) print(&quo ...

  5. python 3.28 第三章 函数嵌套/名称空间//内置名称空间/全局名称空间/局部名称空间/作用域/函数对象/闭包函数。...

    1 函数嵌套: 函数内可以调用了其他的函数. # def max2(x,y):# if x > y:# return x# else:# return y## def max3(x,y,z):# ...

  6. 10-Python入门学习-函数的对象与嵌套、名称空间与作用域、闭包函数

    一.函数的对象 函数是第一类对象,指的是函数名指向的值(函数)可以被当作数据去使用 def func():# func=函数的内地址print('from func')print(func)age=1 ...

  7. 函数对象,名称空间与作用域,闭包,装饰器

    函数是第一类对象即可以被当做数据取使用 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 1.可以被引用 先看变量可以怎么玩 age=18 x=age 把 ...

  8. Python基础第六天——函数的使用、函数的参数、函数的返回值、函数的嵌套、命名空间、作用域、函数对象...

    一.拾遗 1.通常情况下无参函数只是进行操作,所以不需要返回值:有参数函数则需要返回值. 2.练习: 判断用户输入一串字符,如果这串字符的长度小于5则重新输入,如果大于5则退出循环. while Tr ...

  9. python之函数名称空间,作用域,嵌套函数

    目录 嵌套函数 定义 名称空间的三大类(只存变量名) 名称空间加载顺序 变量名的查找顺序为 作用域 嵌套函数 定义 函数内部定义的函数,无法在函数外部使用内部定义的函数. def f1():def f ...

最新文章

  1. kl散度学习笔记python实现
  2. 编译器优化陷阱之典型代码
  3. Lucene查询(搜索)语法示例
  4. 计算机专业教学工作小结,计算机专业教学的工作总结
  5. SNF快速开发平台2019-APP移动端实际应用效果
  6. php清空html_PHP清除html格式的代码
  7. MySQL redo lock 死锁问题排查 解决过程
  8. zookeeper 虚拟机搭建好后 外部链接不上_Ubuntu Server搭建Hyperledger Fabric 2.1学习环境...
  9. Python中的mkdir -p功能[重复]
  10. 安全地更改grub2屏幕分辨率
  11. eclipse mysql tomcat,java+eclipse+tomcat+mysql+jdbc
  12. 【今年年会,你中奖了吗?】在线抽奖活动中如何实现中奖概率的自适应调整...
  13. 小小故事--大大道理
  14. 和平精英2023年五月和平小店返场皮肤有哪些
  15. JZOJ 幽幽子与森林
  16. 自己制作ssl证书:自己签发免费ssl证书,为nginx生成自签名ssl证书
  17. 私有和公开IP地址的区别是什么?
  18. 逻辑回归分类器(linear_model.LogisticRegression)
  19. 关于 Kubernetes 中通过 Kustomize 定制 Yaml资源文件的一些笔记
  20. java基于springboot二手物品交易网站

热门文章

  1. 财务管理001-权责发生制(应收应付制)与收付实现制的区别
  2. sap学习笔记(一)-----萨普的imformation design tool 是肾魔?
  3. 用计算机计算棋盘上麦粒,C棋盘上的麦粒 ——用电子表格自动计算 教学设计...
  4. 2021年下半年系统集成项目管理工程师综合知识真题及答案解析
  5. 辩证唯物论和唯物辩证法区别
  6. Dialog的Dismiss方法使用注意事项
  7. 【评测】TaqMan️探针和IDT PrimeTime️ 双淬灭探针的对比
  8. python-列表处理log日志、字典处理log日志学习总结
  9. python基于win32实现梦幻西游手游后台鼠标键盘
  10. FL Studio杂项设置页讲解(下)