python学习第十章

Posted auxiaoliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习第十章相关的知识,希望对你有一定的参考价值。

关于问题的注意事项

nonlocal 的问题

nonlocal的变量范围问题,可以获取上层函数的变量,如果上层函数没有这个变量,那么会到上上层找,但不会到全局找.

示例如下:

def fun():
    a = 1
    def fun2():
        a = 2
        def fun3():
            nonlocal a
            print(a)
        fun3()
    fun2()
fun()

"""
运行结果
不注释a=2时话是2,注释后是1
"""

关于全局作用域和局部作用域的问题

示例:

def fun():
    a = 1
    def fun2():
        a += 1
        print(a)
    fun2()
fun()
"""
这里会报错的,因为如果在局部一但赋值操作,python解释器就会认为是局部变量,局部变量的话,需要先赋值
"""

关于dic增加的j时dic.setdefault("key","value")

这个dic.setdefault("key","value")有增另键值对的功能 ,这里需要注意到的是,这个会有返回.返回的值是value的值.

由于setdefault这个值,当字典中存在这个key时,这次的增加是无效的,但是这个会返回现在字典中这个key的value值.如果不存在key会返回setdefault设置的value值.

示例如下:

dic = {}
dic.setdefault("key","value")
print(dic)

"""
这个是增加字典的键值

"""

 

关于**kwargs 这个值,不能传入**{3:4}这样的值,因为传参相当于变量,变量不能接受纯数字当变量的.

示例:

def func(**kwargs):
    print(kwargs)
    
def(**{"a":2,"b":3},**{3:4})

 

关于函数默认赋值的深坑

def func(a,lst = []):

  lst.append(a)

  return lst

如下问题:

lst1 = func("10")

lst2 = func("20",[])

lst3 = func("30")

最后print(lst1,lst2,lst3)

下面是运行结果

[‘10‘, ‘30‘] [‘20‘] [‘10‘, ‘30‘]

原因是当形参传入可变值时,python解释器会分配一个对像,这个对像是不变的,当多次调这个函数时,指向的是同一个地址.所以函数默认传参应该尽量传入可hash的,也就是不可变类型的.

 

 

上面是补充,补充完毕

本节主要内容: 1. 函数名的运?, 第?类对象 2. 闭包 3. 装饰器初识

 1. 函数名的运?, 第?类对象 

函数名是一个变量,但它是一个特殊的变量加个()是可以执行的变量

函数名有 以下特性:

1)函数名是一个内存地址,

示例:

def fun():
    print(100)
print(fun)

上面的代码是打印函数的内存地址.

2)函数名可以赋值给其他变量

示例:

示例是把函数名赋值给b,然后b执行了这个函数

def fun():
    print(100)

b = fun
b()

 

3)函数名可以当做容器类的元素

函数名可以当做其他容器类的无素,容器类如,列表,字典等

示例:

def fun1():
    print("1")
def fun2():
    print("2")
def fun3():
    print("3")
lst = [fun1,fun2,fun3]
for e in lst:
    print(e)

"""
变量名只是内存地址,循环调用的话,只是显示了内存地址
"""

 

4.函数名可以当做函数的参数

示例:

def fun():
    print("呵呵")
def fun1(fn):
    fn()
fun1(fun)

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

示例:

def fun():
    def inner():
        print("123")   
    return inner
f = fun()
f()
"""
函数的返回
"""

?. 闭包

 




以上是关于python学习第十章的主要内容,如果未能解决你的问题,请参考以下文章

python学习第十章

父与子的编程之旅第十章学习

第十章 图形用户界面入门[DDT书本学习 小甲鱼]

增强学习笔记 第十章 On-Policy控制的近似

『Python』Numpy学习指南第十章_高端科学计算库scipy入门(系列完结)

Python编程:从入门到实践——作业——第十章(文件和异常)