python学习笔记

闭包性


什么是闭包性

根据不同的配置信息得到不同的结果,即引用了自由变量的函数
下面我们来看两个函数
1.

def make_adder(addend):
    def adder(augend):
        return augend + addend
    return adder

p = make_adder(23)
q = make_adder(44)

print p(100)
print q(100)
123
144

2.

def make_adder(addend):
    def adder(augend):
        return -augend 
    return adder

p = make_adder(23)
q = make_adder(44)

print p(100)
print q(100)
#结果是
-100
-100

这明明不就是一个函数么?仔细看,其实不一样,对于最里面的函数一个return addend+augend另一个return -augend
很明显我们得到一个结论,p被赋予的值将传入内部函数作为引用来使用


匿名函数


匿名函数的使用

传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便

>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]

关键字 lambda ,冒号前面的x表示参数
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数

匿名函数作为返回值

def build(x, y):
    return lambda: x * x + y * y

偏函数

用法

1.int()函数可以把字符串转化为整数,当传入字符串时,int ()函数默认按十进制转换:
>>>int('12345')
12345
但int函数还提供额外的base参数,默认值为10.如果传入base参数,就可以做N进制的转换>>>int('12345',base=8)
5349
八进制转换为十进制,编写转换二进制的函数

def int2(x,base=2):
    return int(x,base)

这样可以直接转化二进制;
2.functools.partial就是用来创建一个偏函数的,不需要我们自己定义int2(),可以直接使用创建一个新的函数int2:

import functools
int2=functools.partial(int ,base=2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值