日常编程时一些易混淆的概念(持续更新)

1.方法与函数的区别

方法一般指与特定实例绑定的函数,通过对象调用方法时,对象本身将被作为第一个参数自动传递过去,而普通函数并不具备这个特点。

2.python中的解包与闭包

闭包(closure)是函数式编程的重要的语法结构,也是一种组织代码的结构,提高了代码的可重复使用性。在以下例子中,函数line与环境变量a,b构成闭包。修饰器的本质也是闭包。

def line_conf(a, b):
    def line(x):
        return a*x + b

    return line


line1 = line_conf(1, 1)
line2 = line_conf(4, 5)
print(line1(5), line2(5))

利用闭包,创建了泛函。line函数定义一种广泛意义的函数。这个函数的一些方面已经确定(必须是直线),但另一些方面(比如a和b参数待定)。随后,根据line_conf传递来的参数,通过闭包的形式,将最终函数确定下来。 

“闭包”的作用——保存函数的状态信息,使函数的局部变量信息依然可以保存下来。

闭包的两种方式:直接调用和返回一个函数名称

(1)直接调用

def Maker(name):
    def func1(weight,height,age):
        weight+=1
        height+=1
        age+=1
        print(name,weight,height,age)
    func1(100,200,300) 
Maker('feifei') 

输出结果为 feifei 101 201 301

(2)返回一个函数名称

def Maker(name):
    def func1(weight,height,age):
        weight+=1
        height+=1
        age+=1
        print(name,weight,height,age)
    return func1 
maker=Maker('feifei') 
maker(100,200,300)

序列解包,例如a,b,c=‘ABC’

关键参数主要指调用函数时的参数传递方式,与函数定义无关,通过关键参数可以按参数名字传递值。

def demo(a,b,c=5):
    print(a,b,c)
demo(c=8,a=9,b=0)

 可变长度参数的两种形式:*parameter和**parameter

(1)*parameter

def demo(*p):
    print(p)
demo(1,2,3)

输出为(1,2,3)

(2)**parameter

def demo(**p):
    for item in p.items():
        print(item)
demo(x=1,y=2,z=3)

输出为 ('z', 3)  ('x', 1)   ('y', 2)

传递参数时的序列解包

def demo(a,b,c):
    print(a+b+c)
seq=[1,2,3]
demo(*seq)

3.python迭代器与生成器

具体参看:

           Python3迭代器与生成器

4.python中的单引号双引号以及三引号

转载

单双三引号的用法

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值