Python学习——返回值、变量作用域、函数嵌套,闭包

def hello():
    print('abcd')

temp=hello()
abcd

temp
print(temp)    #虽然hello()没有标明返回值,但是会默认返回一个None对象
None

type(temp)
<class 'NoneType'>

def back():
    return [2,'aaa',456]    #通过列表返回多个不同类型的值

back()
[2,'aaa',456]


def back():
    return 2,'aaa',456    #不加括号会返回一个元组

back()
(2,'aaa',456)

变量作用域

局部变量:函数内部

全局变量:所有函数外部

函数内部可以访问和修改全局变量的值,修改时会新建一个和全局变量名字一样的局部变量,但是不会改变函数外部全局变量的值。所以尽量不要在函数中修改全局变量的值,如果一定要修改:使用global或nonlocal关键字。

count=8

def test():
    global count    #如果一定要修改,在函数内部使用global关键字重新定义这个全局变量
    count = 10
    print(5)


test()
5

print(count)
10

内嵌函数

func2是在func1里面被定义和调用的,直接调用func2会出错。

def func1():
    print('aaa')    
    def func2():        #注意这里的缩进
        print('bbb')
    func2()


func1()
aaa
bbb

闭包closure

两个条件:内部函数;引用了外部函数的变量

def funX(x):
    def funY(y):    #funY就是一个闭包
        return x*y
    return funY


i=funX(8)    #这里的i是一个函数类型的值

i(5)    #如果给i一个参数就会得到8*5=40
40

funX(8)(5)    #也可以直接调用funX依次给两个参数
40

funY(5)    #但依旧不可以直接调用funY


注:本文章是根据小甲鱼的学习视频所写的笔记,侵删。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值