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中的单引号双引号以及三引号
转载
单双三引号的用法