函数:
1.无论何时调用函数,都必须提供函数所有的位置参数
2.每个默认参数都会紧跟着一个默认值的赋值语句,如果在函数调用时没有给出值,那么这个赋值就会实现
关键字默认参数(字典):
在我们有不确定数目的或者额外集合的关键字的情况中,参数被放入一个字典中,字典中键为参数名,值为相应参数值;为了区分 关键字参数和非关键字非正式参数,使用了双星号**;
非关键字可变长参数(元组):
可变长的参数元组必须在位置和默认参数之后,使用了单星号*,星号操作符后面的形参是一个元组传递给函数,元组保存了所有传递给函数的‘’额外“参数,如果没有给出额外的参数,这个元组即为空。
!!!关键字和非关键字可变长参数都有可能用在一个函数中,只要关键字字典是最后一个参数并且非关键字元组先于它之前出现即可。
函数式编程:
允许用lambda关键字来建立匿名函数,匿名是因为不需要以标准的方式来声明,一个完整的lambda语句代表了一个表达式,这个表达式的定义体必须和声明放在同一行。
例子: a=lambda x,y=2:x+y
a(3)=5,a(3,5)=8
偏函数应用:
将任意数量的参数的函数转化为另一个带剩余参数的函数对象,通过functools模块能够很好被用户调用。由于不用每次调用相应的函数都要输入大量的函数,似的代码变得更加的紧凑和易读。
1. from operator import add,mul
from functools import partial
add1=partial(add,1)
mul100=partial(mul,100)
===============add1(1)=2,mul100(10)=110
2.
__author__ = 'supernew'
#!/usr/bin/env python
from functools import partial
import Tkinter
root=Tkinter.Tk()
MyButton=partial(Tkinter.Button,root,fg='white',bg='blue')
b1=MyButton(text="Button1")
b2=MyButton(text="Button2")
qb=MyButton(text="QUIT",bg="red",command=root.quit)
b1.pack()
b2.pack()
qb.pack(fill=Tkinter.X,expand=True)
root.title('PFAS')
root.mainloop()
#!/usr/bin/env python
from functools import partial
import Tkinter
root=Tkinter.Tk()
MyButton=partial(Tkinter.Button,root,fg='white',bg='blue')
b1=MyButton(text="Button1")
b2=MyButton(text="Button2")
qb=MyButton(text="QUIT",bg="red",command=root.quit)
b1.pack()
b2.pack()
qb.pack(fill=Tkinter.X,expand=True)
root.title('PFAS')
root.mainloop()