Python Day3

 

 

 

本节内容

1. 函数基本语法及特性

2. 参数与局部变量

3. 返回值

4.递归

5.匿名函数

6.函数式编程介绍

7.高阶函数

8.内置函数

 

一、函数基本语法及特性

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。学过Java的同学,可以把他看作是一个方法。

特性:

  1. 减少重复代码
  2. 使程序变的可扩展
  3. 使程序变得易维护
语法

 def  functionname():

       函数体




函数的使用:

functionname()

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author:Dragon war
# datetime:2018/8/28 16:14
# software: PyCharm


#函数 计算一个加法 返回一个值
def add():
    return 10+20;

#调用函数
sum=add();

print(sum)


#带参数的函数

def div(a,b):

    return  a/b;


divs=div(10,2);

print(divs)
View Code

 

 

二、参数以及局部变量

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

默认参数:在我们使用函数时,如果指定参数值,那么就是我们指定的参数值,如果不指定就是默认的参数值。

 

正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。

 

非固定参数:参数的个数不固定时使用。*args

#非固定参数
def registers(id,name,*args):# *args 会把多传入的参数变成一个元组形式

    print(id,name,args)

    pass

registers(10,'小王',20,'陕西');
registers(10,'小王');# *args没有传参,就是个空元组
View Code

**kwargs

#非固定参数
def registers(id,name,*args,**kwargs):# *args 会把多传入的参数变成一个元组形式   **kwargs会把多传入的参数变成一个字典 dict

    print(id,name,args,kwargs)

    pass

registers(10,'小王',20,'陕西');
registers(10,'小王');# *args没有传参,就是个空元组 **kwargs没传参数就是个空字典
registers(10,'小王',20,'陕西',sex='',score=90);
#10 小王 (20, '陕西') {}
#10 小王 () {}
#10 小王 (20, '陕西') {'sex': '男', 'score': 90}
View Code

局部变量:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author:Dragon war
# datetime:2018/8/28 16:51
# software: PyCharm



name="Drango War";

def showName(name):
    print("update before:",name)

    name="悟空";
    print("update after:", name)
    pass


showName(name);

print("在函数外边name的值:",name)
# 运行结果
# update before: Drango War
# update after: 悟空
# 在函数外边name的值: Drango War
View Code

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
 
三、返回值

要想获取函数的执行结果,就可以用return语句把结果返回

注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果, 也可以理解为 return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None 

四、递归

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

# 递归

def sum(n):

    print(n)
    n=n+1;
    if(n==20):#递归的退出条件
        return n;
    return sum(n);#调用自身

f=sum(10);
print(f)
View Code

递归特性:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

 

五、匿名函数

匿名函数就是不需要显式的指定函数  :lambad

# 使用函数
def div(a):
    print(a/10);

    pass

div(20)

# 使用匿名函数

c=lambda n:n/10;
print(c(20))
View Code

 

六、函数式编程

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。

Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

函数式编程:是一种编程范式。是如何编写程序的方法。

核心:主要思想是把运算过程尽量写成一系列嵌套的函数调用。

 

七、高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x,y,f):
    return f(x) + f(y)
 
 
res = add(3,-6,abs)
print(res)

 

八、内置函数:

就是python内置了一系列的常用函数,以便于我们使用

https://www.cnblogs.com/xiao1/p/5856890.html

 

 

 

 

  

 

posted @ 2018-08-28 17:26  龙之殇--疯狂者  阅读(159)  评论(0编辑  收藏  举报