Python Day 3 函数

1、基本语法及特性

基本语法

def test():#定义函数名
    print("x")
test()#调用函数

带参数

def test(x,y):
    print(x+y)
test(1,2)

返回值
返回值=0:返回None
返回值=1:返回object
返回值>1:返回tuple

?为什么要有返回值:因为需要整个函数执行的结果

def test1(x,y):
    print(x+y)
    return 1
print(test1(1,2))#返回1

def test2(x,y):
    print(x+y)
print(test2(1,2))#返回None

2、参数与局部变量

形参:
变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参
可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

默认参数
默认参数非必选

关键参数
正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数。
关键参数必须放在位置参数后。

def test(x,y=2):
    print(x,y)
test(y=1,x=2)#与形参顺序无关
test(1,2)#与形参一一对应
test(3,y=2)

参数组
元组

def test1(x,*args):
    print(x,args)
test1(1,2,3,4,5,6)

字典:将关键字参数转换

def test2(**kwargs):
    print(kwargs)
    print(kwargs["name"])
test2(name='alex',age=8)

全局与局部变量

局部变两:作用于是定义该变量的子程序
全局变量:在整个代码的顶层定义的变量,都叫全局变量
全局变量可在函数中直接声明,但建议不要这样做。
只有字符串,整型不能在函数内改全局变量。
重名时:在定义局部变量的子程序内,局部变量起作用;在其他地方变量起作用。

def change_name(name):
    print("before",name)
    name="alex li"
    print("after",name)
name="alex"
change_name(name)
print(name)
school="123"
def change_name(name):
    global school #声明全局变量
    school="mage linux"
    print("before",name,school)
    name="alex li"
    print("after",name)
name="alex"
change_name(name)
print(name)
print(school)

递归

最大递归数999次
必须要有一个明确的结束条件
递归效率不高
结果会溢出:

def calc(n):
    print(n)
    return calc(n/2)
calc(10)
def calc(n):
    print(n)
    if int(n/2) > 0:
        return calc(int(n/2))
    print("->",n)
calc(10)

高阶函数

定义:变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数

def add(x,y,f):
    return f(x)+f(y)
res=add(3,-6,abs)
print(res)
posted @ 2017-07-13 12:01  AbyssCE  阅读(94)  评论(0编辑  收藏  举报