函数

 一、函数的定义

 函数就是执行特定任何用来完成特定功能的一段代码。

  复用代码

  隐藏实现细节

  提高可维护性

  提高可读性便于调试

格式:

  def   函数名(【输入参数】):

       函数体

     【return XXX】

def calc(a, b):  #a,b 为形参
    c = a + b
    return c


result = calc(10, 20)
print(result)

      代码实现过程:代码运行从第一行开始(即def处时),发现为函数,跳转到函数定义处(即result),将参数10,20 传递到函数中,开始执行c = a+b,将执行结果赋值给result,打印输出。

形参  实参 与C语言同样

位置实参:根据形参对应的位置进行实参传递

关键字实参:根据形参名称进行实参传递  calc(b=20,a=10,等号左边的名称称为关键字)  

二、函数参数传递的内存分析

形式参数和实际参数的名称可以不同

def fun(arg1,arg2):
    print('arg1',arg1)
    print('arg2',arg2)
    arg1=100
    arg2.append(10)
    print('arg1',arg1)
    print('arg2',arg2)
    
n1 = 11
n2 = [22,33,44]
fun(n1,n2)    #将位置传参,arg1,arg2,是函数定义处的形参,n1,n2是函数调用处的实参。

  在函数调用过程中,进行参数的传递,如果是不可变对象,在函数体的修改不会影响实参的值,arg1的修改为100,不会影响n1的值

如果是可变对象,在函数体的修改会影响到实参的值,arg2的修改,append(10)会影响到n2 的值

#判断奇偶数
def
fun(num): odd=[]#存奇数 even =[] #存偶数 for i in num: if i%2: odd.append(i) else: even.append(i) return odd,even #函数调用 lst=[10,29,32,43,53] print(fun(lst))
结果:

([29, 43, 53], [10, 32])

 

函数的返回值

  (1)如果函数没有返回值,则return可以省略不写

  (2)如果函数的返回值是一个,则直接返回类型

  (3)如果函数的返回值是多个,返回的结果为元组

def fun1():
    print('nice!')
fun1()

def fun2():
    return 'hello','world'
print(fun2())

def fun3():
    return 'hello'
res = fun3()
print(res)

  函数在定义时,是否需要返回值,视情况而定。

三、函数的参数定义

  函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参。

  个数可变的位置参数:结果是元组

  个数可变的关键字形参:结果是字典

可变的参数只能有一个

四、变量的作用域

  程序代码能够访问该变量的区域

局部变量:在函数内定义并使用的变量,只在函数内部有效

全局变量:函数体外定义的变量,可作用于函数内外

局部变量使用global声明,这个变量实际上就变成了全局变量

五、递归函数

在函数的函数体内调用了它自己本身,就称为递归函数(没错,就是俄罗斯套娃)

优缺点

  (1)缺点:占用内存多,效率低下

  (2)优点:思路和代码简单

#递归求和
def
fun(n): if n==1: return 1 else: return n*fun(n-1) print(fun(6))
#斐波那契数列
def fun(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fun(n-1)+fun(n-2)
print(fun(6))

 

posted @ 2021-02-19 10:45  城东有个混子  阅读(161)  评论(0)    收藏  举报