怎么理解Python动态参数、命名空间、函数嵌套、global和nonlocal

本篇内容主要讲解“怎么理解Python动态参数、命名空间、函数嵌套、global和nonlocal”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Python动态参数、命名空间、函数嵌套、global和nonlocal”吧!

创新互联服务项目包括虞城网站建设、虞城网站制作、虞城网页制作以及虞城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,虞城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到虞城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

函数的动态参数

1.1 *args 位置参数动态传参

def chi(*food):

print("我要吃", food)

chi("大米饭", "小米饭")

结果:我要吃 ('大米饭', '小米饭') # 多个参数传递进去. 收到的内容是元组tuple

1.2 **kwargs 关键字参数动态传参

def func(**kwargs):

print(kwargs)

func(a=1, b=2, c=3)

func(a=1, b=2)

结果:

{'a': 1, 'b': 2, 'c': 3}

{'a': 1, 'b': 2}

顺序:位置参数, *args, 默认值, **kwarg

def func(*args, **kwargs):

pass

形参的位置*,**: 聚合

实参的位置*,**: 打散

def fun(*args):

print(args)

lst = [1, 4, 7]

fun(lst[0], lst[1], lst[2])

fun(*lst) # 可以使用*把一个列表按顺2. 命名空间

在python解释器开始执行之后, 就会在内存中开辟一个空间, 每当遇到一个变量的时候, 就把变量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内存, 表示这个函数存在了, 至于函数内部的变量和逻辑, 解释器是不关心的. 也就是说一开始的时候函数只是加载进来, 仅此而已, 只有当函数被调用和访问的时候, 解释器才会根据函数内部声明的变量来进行开辟变量的内部空间. 随着函数执行完毕, 这些函数内部变量占用的空间也会随着函数执行完毕而被清空.

2.1 内置名称空间 – 存放python解释器为我们提供的名字, list, tuple, str, int 等这些都是内置命名空间

2.2 全局名称空间 – 我们直接在py文件中, 函数外声明的变量都属于全局命名空间

2.3 局部名称空间 – 在函数中声明的变量会放在局部命名空间

加载顺序:内置命名空间 >>> 全局命名空间 >>> 局部命名空间(函数被执行的时候)

取值顺序: 局部命名空间 >>> 全局命名空间 >>> 内置命名空间

作用域:

作用域: 作用域就是作用范围, 按照生效范围来看分为 全局作用域和局部作用域

全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循从上到下逐行执行).

局部作用域: 在函数内部可以使用.

1. 全局作用域: 内置+全局

2. 局部作用域: 局部(函数被调用)

3. globals() 查看全局中的内容

4. locals() 查看当前作用域中的内容序打散

a = 10

def func():

a = 40

b = 20

def abc():

print("哈哈")

print(a, b) # 这里使用的是局部作用域

print(globals()) # 打印全局作用域中的内容

print(locals()) # 打印局部作用域中的内容

func()

函数嵌套

函数可以互相的嵌套

def fun1():

print(111)

def fun2():

print(222)

fun1()

fun2()

print(111)

# 函数的嵌套

def fun2():

print(222)

def fun3():

print(666)

print(444)

fun3()

print(888)

print(33)

fun2()

print(555)

global和nonlocal关键

global: 在局部访问全局中的内容

a = 100

def func():

global a # 加了个global表示不再局部创建这个变量了. 而是直接使用全局的a

a = 28

print(a)

func()

print(a)

nonlocal: 在局部寻找外层函数中离他最近的那个变量

a = 10

def func1():

a = 20

def func2():

nonlocal a

a = 30

print(a)

func2()

print(a)

func1()

# 结果:

# 加了nonlocal

# 30

# 30

# 不加nonlocal

# 30

# 20

到此,相信大家对“怎么理解Python动态参数、命名空间、函数嵌套、global和nonlocal”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站标题:怎么理解Python动态参数、命名空间、函数嵌套、global和nonlocal
网页链接:http://ybzwz.com/article/joshio.html