11 - 函数

2017-07-22  本文已影响11人  flowerflower

1 . 函数的概念

如果在开发程序时,某块代码需要多次调用或者复用性高,为了提高编写的效率以及代码的重用,把具有独立功能的代码块组织为一个小模块,这就是函数

2 . 函数的定义和调用

//使用def定义函数
    def 函数名():
        代码

demo:

def print_triangle():
    print("*")
    print("*"*2)
    print("*"*3)
    print("*"*4)
函数名()

demo:

//定义完函数后,函数是不会自动执行的,需要手动调用
print_triangle()

3 . 函数的类型

3.1 无参数,无返回值

使用场景:打印提示类似的功能

def test():
    print("====")
test()  #调用之后便会打印====
3.2 无参数,有返回值的函数

使用场景:保存数据

def getsum():
    return  100
temp = getsum()
print("当前数值为:%d"%(temp)) #当前数值为:100

3.3有参数,无返回值

使用场景:以需求为主

//定义带有参数的函数
def test(a,b): 
     print("%d"%(a + b))
#调用带有参数的函数(调用时,需要在小括号中,传递数据)
test(11,123) #134
gif显示.gif
3.4 有参数,有返回值

使用场景:像数据处理并需要结果的应用

** 就是程序中函数完成一件事情后,最后给调用者的结果**
demo1:

#定义函数
def sum(a,b):
    return  a + b
#调用函数,顺便保存函数的返回值,再打印
print("sum = %d"%(sum(11,11))) #sum = 22

demo2:求和以及求平均值

def sumNum(num):
    result = 0
    i = 1
    while i<= num:
        result = result + i
        i+=1
    return result

r = sumNum(100)
print("1-50的和为:%d"%(r)) #1-50的和为:5050

def sum3Num(a,b,c):
    return a +b + c
def aveeage3Num(a,b,c):
    sumResult = sum3Num(a,b,c)
    result = sumResult /3
    return  result
r = aveeage3Num(11,12,13)
print("三个数的平均值:%d"%(r)) #三个数的平均值:12

函数的嵌套使用(打印5行-----)

def print_line():
    print("-"*5)
def print_5_line():
    print("-" * 5)
    print("-" * 5)
    print("-" * 5)
    print("-" * 5)
    print("-" * 5)
print_5_line()


def print_line():
    print("-"*5)
def print_5_line():
     i= 0
     while i < 5:
       print_line()
       i += 1
print_5_line()

** 小总结 **


4. 局部变量与全局变量

4.1 局部变量
4.2 全局变量

demo

aa = 10
def test1():
    print(aa)
def test2():
    print(aa)
test1() 
test2()
运行结果:
10
10

** 修改全局变量**

aa = 10
def test1():
    aa = 100
    print('test1修改前:aa = %d'%(aa))
    global  aa
    aa = 111
    print('test1修改后:aa = %d' % (aa))

def test2():

    print('test2:aa = %d' % (aa))
test1()
test2()

打印结果:

Snip20170617_2.png

5. 递归函数

5.1 什么是递归函数

如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。

def sumNumber(num):
    i = 1
    result = 1
    while i<= num:
        result *=i
        i+=1
    return result

result = sumNumber(4)
print(result)

阶乘的规律

1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!

方式二(使用递归方式):

def sumNumber1(num):
    if num >1:
        result = num * sumNumber1(num -1)
    else:
        result = 1
    return  result
result1 = sumNumber1(4)
print(result1) #24


6. 匿名函数

6.1 什么是匿名函数
6.2语法
    lambda [arg1 [,arg2,.....argn]]:expression
6.3 demo
#函数作为参数传递
def fun(a,b,c):
    print("a= %d"%a)
    print("a= %d" %b)
    print("result = %d"%c(a,b))
f = fun(5,2,lambda x,y:x+y)
#作为内置函数的参数
student = [
    {"name":"zhangsan", "age":18},
    {"name":"lisi", "age":19},
    {"name":"wangwu", "age":17}
            ]
# 按name排序:
student.sort(key = lambda x:x['name'])

print(student)

# 按age排序:
student.sort(key = lambda x:x['age'])
print(student)

打印结果:


Snip20170617_5.png

7. 函数使用注意事项

7.1 自定义函数

 def 函数名():
        语句
    def 函数名():
        语句
        return 需要返回的数值

注意:

一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据。
在开发中往往根据需求来设计函数需不需要返回值。
函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成。

   def 函数名(形参列表):
        语句

注意:
在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收
参数列表中变量的个数根据实际传递的数据的多少来确定

    def 函数名(形参列表):
        语句
        return 需要返回的数值

7.2 调用函数

函数名(实参)

7.3 作用域

上一篇下一篇

猜你喜欢

热点阅读