函数对象
一、函数对象的四大工能
1.引用
def helllo():
x='helllo word'
f=func
print(f)
2.当作参数传给一个函数
def foo(m):
m()
foo(func)
3.可以当作函数的返回值
def foo(x):
return x
res = foo(func)
print(res)
res()
4.可以当作容器类型的元素
def lis():
return x
lis_abc=[lis]
二、可变长参数
一、不定长参数*
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
加了星号 ***** 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
二、不定长参数**
还有一种就是参数带两个星号 **基本语法如下:
# 可写函数说明
def printinfo( arg1, **vardict ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vardict)
# 调用printinfo 函数
print(info(1, a=2,b=3))
加了两个星号 ** 的参数会以字典的形式导入。
三、函数的嵌套
就简单说明一下就好,语法与流程语句嵌套类似
def f1():
def f2():
print('from f2')
f2()
f2() # NameError: name 'f2' is not defined
如何调用***
def max2(x, y):
if x > y:
return x
else:
return y
def max4(a, b, c, d):
res1 = max2(a, b)
res2 = max2(res1, c)
res3 = max2(res2, d)
return res3
print(max4(1, 2, 3, 4))
四、函数的作用域
1、全局变量
可以在函数或者整段代码中使用的变量
x = 1
def func():
pass
l = [1, 2]
if 3 > 2:
if 4 > 3:
z = 3
2、局部变量
仅仅在函数内部使用,无法影响全局变量的形式
x=1
def jubu():
x=10
return x
print(jubu)
print(x)
作用域补充
global关键字###不推荐使用
修改全局作用域中的变量。
x = 1
def f1():
x = 2
def f2():
# global x # 修改全局
x = 3
f2()
f1()
print(x)
nonlocal关键字
x = 1
def f1():
x = 2
def f2():
# nonlocal x
x = 3
f2()
print(x)
f1()