标签:可变长参数 可读性 可变 最大 分享 key body 基本 形参与实参
形参与实参:
def foo(x,y): #形式参数
return x+y
foo(1,2) #实际参数
1.位置参数:按照从左到右的顺序依次定义的参数
def foo(x,y):
print(x)
print(y)
#安位置定义的形参,必须被传值,多一个不行
foo(1,2)
#安位置定义的实参,与形参一一对应,多一个少一个都不行
2.关键字参数:实参在定义时,按照key=value形式定义
def foo(x,y):
print(x)
print(y)
foo(y=10,x=1)#关键字参数可以不用像位置实参一样与形参一一对应,指名道姓的传值
注意的问题一:位置实参必须在关键字实参的前面
注意的问题二:实参的形式既可以用位置实参又可以用关键字形参,但是一个形参不能重复传值
3.默认参数:在定义函数阶段,就已经为形参赋值,定义阶段有值,调用阶段不用传值
def func(x,y=10):
print(x)
print(y)
func(1)
默认参数(形参)需要注意的问题一:必须放在位置形参后面
默认参数需要注意的问题二:默认参数通常要定义成不可变类型
默认参数需要注意的问题三:默认参数只在定义阶段被赋值一次
形参的应用:值经常变化的需要定义成位置形参,大多数情况下都一样需要定义成默认参数
4.可变长参数:可变长指的是实参的个数不固定
按位置定义的可变长度的实参:*
def func(x,y,*args): #x=1,y=2,args=(3,4,5)
print(x,y)
print(args)
# func(1,2,3,4,5)
func(1,2,3,4,5)
按关键字定义的可变长度的实参:**
def func(x,y,**kwargs): #x=1,y=2,kwargs={‘a‘:1,‘b‘:3,‘z‘=3}
print(x,y)
print(kwargs)
func(1,y=2,z=3,a=1,b=3)
def func(*args,**kwargs): #可以接收任何类型参数
print(args)
print(kwargs)
func(1,y=2,z=3,a=1,b=3)
5.命名关键字参数:定义在*后的形参,这类形参,必须被传值,而且要求实参必须是以关键字的形式来传值
def register(name,age,*,group,**kwargs):
print(name)
print(age)
print(group)
print(kwargs)
register(name=‘sam‘,age=18,z=10)
顺序:位置,默认,*,命名关键字,**
六、函数对象
函数是第一类对象: 指的是函数可以被当做数据传递
def func():
print(‘from func‘)
可被引用
f=func
可以当做函数的参数
def func():
print(‘from func‘)
def foo(x):
print(x)
x()
foo(func)
可以当做函数的返回值
def foo():
print(‘from foo‘)
def bar():
return foo
f=bar()
print(f)
print(foo)
x=0
def f1():
x=1
def f2():
# x=2
print(x)
return f2
f=f1()
# print(f)
f()
可以当做容器类型的元素
def select():
print(‘select function‘)
func_dic={
‘select‘:select,
}
# print(func_dic[‘select‘])
func_dic[‘select‘]()
七、函数嵌套
函数的嵌套调用
def max2(x,y):
if x > y:
return x
else:
return y
def max4(a,b,c,d):
res1=max2(a,b) #23
res2=max2(res1,c) #23
res3=max2(res2,d) #31
return res3
print(max4(11,23,-7,31))
#函数的嵌套定义
def f1():
def f2():
def f3():
print(‘from f3‘)
print(‘from f2‘)
f3()
print(‘from f1‘)
f2()
f1()
返回值:可以返回任意类型
没有return:None
return value: value
return val1,val2,val3 :(val1,val2,val3)
return的效果:只能返回一次值,终止函数的执行
1.闭包函数:1 内部函数 2 包含对外部作用域而非全局作用域的引用
2.闭包函数的特点:
1.自带作用域
2.延迟计算
3.定义闭包函数的基本形式
def 外部函数名():
内部函数需要的变量
def 内部函数():
引用外部变量
return 内部函数
4.print(b.__closure__)查看闭包函数
print(b.__closure__[0].cell_contents)查看闭包函数上一级的值
标签:可变长参数 可读性 可变 最大 分享 key body 基本 形参与实参
原文地址:http://www.cnblogs.com/gpd-Amos/p/7788943.html