函数
1、函数的定义 --- 类似scala
def fun(参数1,参数2....):
函数体内容
defmessage(msg):
print(msg)
def fun1():
pass //相当于占位,构成语法
2、函数可以有多个返回值 (类似scala)
def fun1():
return (22, 'hello', 26) //可以省略括号,加上可以增加代码的可读性
print(fun1()) //函数返回的多个值会自动封装到一个元组中
a, b, c =fun1() //将返回的三元元组元素取出分别赋值给三个变量
print(a, b, c)
3、 一个函数的返回值可以是另一个函数 (类似scala)
defhandleInt():
print('int.......')
defhandleStr():
print('str.......')
defchooseFun(x):
if int == type(x):
return handleInt
elif str == type(x):
return handleStr
else:
return None
chooseFun(22)()
4、可以将一个函数作为一个参数传递给另外一个函数
scala中称作高级函数
def funSum(a,b, f):
print(f(a) + f(b))
def fun1(x,y):
return x * y
funSum(2, 5,fun1)
funSum(2, -9,abs) //使用python内置的函数 ,abs是求绝对值的函数
5、python中函数的参数
python的函数的参数没有类型,python不会对参数的类型进行检查
java中定义的方法如何方法名相同但是参数类型和个数不同--重载
python中不支持函数的重载
python不检查参数的类型,所以不存在不同参数的类型的重载情况
python中如果出现多个同名函数,并且参数的个数不同,则后面的函数会覆盖前面的函数
案例:
def fun1():
print('fun1....')
def fun1(x):
print('fun1...x')
fun1(3)
python中的函数具有灵活多样的参数样式,可以实现函数简单的定义和调用
参数样式种类:(重点!)
位置参数
默认参数
可变长参数
*args
java也有
关键字参数
**kwargs
命名关键字参数
参数组合
deffun(*args, **kwargs ) //参数统配 !!!
6、函数变量的作用域
案例一:
x = 5 //全局变量
def fun():
x = 3 //函数内部变量
print('inner x=',x)
fun() //结果是3,调用变量值时优先取内部变量的值
案例二:
x = 5
def fun():
print('inner x=', x)
fun() //结果 5
案例三:
x = 5
def fun():
x += 2 //在函数局部不可以对全局变量进行操作
print('inner x=', x)
fun()
x = 5
def fun():
global x //先声明x为全局变量
x += 2
print('inner x=', x)
fun()
7、函数的嵌套和装饰器
函数的嵌套(同scala)
在函数中定义另一个函数
def fun1():
def fun2():
pass
return fun2