python基础13

名称空间的作用域

名称空间

作用域:

  变量能够作用的范围

  1.内置名称空间

    在程序的任何阶段都可以使用(全局有效)

  2.全局的名称空间

    在程序的任何阶段任何位置都可以使用(全局有效)

  3.局部的名称空间

    在函数内部有效(局部有效)

    ####局部变量一般都在函数的内部使用,外部一般不使用

    ####在全局的变量我们称之为全局变量,全局变量在任何位置任何阶段都可以使用

global 和 nonlocals关键字的使用

global

在函数的内部不能直接修改外部的变量

  1.在函数的内部修改外部的不可变的数据类型需要使用global关键字声明

  2.在函数的内部修改可变的数据类型不需要global关键字声明

nonlocals

nonlocals的使用:

  1.在函数内部修改外部的不可变的数据类型使用nonlocals关键字声明

  2.在函数内部修改外部的可变数据类型不需要使用关键nonlocals关键字声明

函数对象

  函数对象就是函数名

函数名的四种使用方法

1.函数名可以当变量名来使用

  函数名就是函数的内存地址

1 def index():
2     print(‘inde’)
3 
4 a=index
5 a()#相当于index()

2.函数名可以当成函数的实参

 def index():
     print('from index')

 def func(name):
     print('from func')
     
func(index)#name=index
name()#等于index()

3.函数名也可以当成函数的返回值

复制代码
1 def index():
2     print(‘123’)
3 
4 def  outer():
5     print(‘345’)
6     return index
7 
8 outer()#相当于outer()=index
9 outer()()=index()
复制代码

4.函数可以当成容器类型元素

1 def index()
2     print(‘1314’)
3 
4 l=[1,2,index]
5 l[2]#相当于index
6 l[2]()#等于index()

5. 练习

复制代码
 1 def register():
 2     print('register')
 3 
 4 
 5 def login():
 6     print('login')
 7 
 8 
 9 def transfer():
10     print('login')
11 
12 
13 def withdraw():
14     print('login')
15 
16 
17 def shopping():
18     print('login')
19 def shopping1():
20     print('login')
21 
22 func_dict = {
23     '1': register,
24     '2': login,
25     '3': transfer,
26     '4': withdraw,
27     '5': shopping,
28     '6': shopping1
29 }
30 while True:
31     print("""
32         1. 注册功能
33         2. 登录功能
34         3. 转账功能
35         4. 提现功能
36         5. 购物功能
37     """)
38     choice = input('请输入你的选择:').strip()
39     if choice in func_dict:
40         # func_name = func_dict.get(choice)
41         # func_name()
42         func_dict.get(choice)()
复制代码

函数的嵌套调用

  函数之间相互调用,函数里面调用函数

常用场景:

1.定义一个函数,功能是比较两个数的大小

1 def index(a,b):
2     if a>b:
3         return a
4    return b
5 res=index(1,10)
6 print('res')

2.定义一个函数,比较4个数的大小

复制代码
 1 def my_max(a, b):
 2     if a > b:
 3         return a
 4     return b
 5 
 6 def index_max(a,b,c,d)
 7     res=index(a,b)
 8     res1=index(res,c)
 9     res2=index(res1,d)
10     print(res2)
复制代码

函数的嵌套定义(了解)

复制代码
 1 # 给外部的用户暴露出来一个接口,告诉他都有什么功能
 2 def all_func(type):
 3     def login():
 4         print('login')
 5 
 6     def transfer():
 7         print('login')
 8 
 9     def withdraw():
10         print('login')
11 
12     def shopping():
13         print('login')
14 
15     def shopping1():
16         print('login')
17 
18     if type == 1:
19         login()
20     elif type == 2:
21         transfer()
22     elif type == 3:
23         withdraw()
24     elif type == 4:
25         shopping()
复制代码

闭包函数

1.什么是闭包函数

闭:闭就是函数内部定义函数,至少两层函数

包:内部的函数使用外部函数名称空间中的名字

  #####同时满足两个条件才能成为闭包函数

2.闭包函数有什么用

  #####闭包函数其实是给函数传参的第二种方法

  方式一:

    def index(name):

      print(name)

index(‘kevin’)

  比较两个数的大小---------->使用闭包函数该一下

复制代码
 1 def outer(a, b):
 2     # a = 1
 3     # b = 10
 4 
 5     def my_max():
 6         if a > b:
 7             return a
 8         return b
 9 
10     return my_max
11 
12 
13 res=outer(2, 20)  # my_max的内存地址,res----->my_max
14 print(res())  # my_max()
15 print(res())  # my_max()
16 print(res())  # my_max()
17 res1 = outer(3, 30)
18 print(res1())
19 print(res1())
20 print(res1())
21 '''一次传值,多次调用'''
复制代码

装饰器

  #####饰器这个知识点它不是一个新的知识点,它是我们之前学的:名称空间、闭包函数、函数嵌套调用等知识点汇总而来的知识点.

什么是装饰器

器:就是工具

装饰:给被装饰的对象添加额外功能

装饰器核心思想:

  就是在不改变被装饰对象的内部的代码和原有的调用方式的基础上再添加额外功能

复制代码
 1 # 背景知识
 2 def index():
 3     print("from index")
 4 index()
 5 # 现在让你统计index函数执行完毕之后的执行时间
 6 
 7 # 时间模块
 8 import time  # 内置模块,可以直接拿来使用
 9 
10 def index():
11     time.sleep(3)
12     print('from index')
13 
14 
15 # 1. 在函数执行之前打印一个时间点
16 start_time = time.time()
17 index()
18 
19 # 2. 在函数执行完毕之后在打印一个时间点
20 end_time = time.time()
21 
22 # 3. 两者的差就是函数的执行时间
23 print("index函数一共执行了:%s秒" % (end_time - start_time))
复制代码

 

posted @   Py玩家  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示