码迷,mamicode.com
首页 > 编程语言 > 详细

Day3 - Python基础3 函数、递归、内置函数

时间:2018-05-01 00:37:13      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:www   follow   doc   map   highlight   理解   分配   try   running   

Day3 - Python基础3 函数、递归、内置函数

1. 函数基本语法及特性

   定义:将一组语句的集合通过一个名字(函数名)封装起来,当执行该函数时,只需调用该函数名即可

 特性

   1.避免重复代码

   2.增强程序可扩展性

   3.代码容易维护

2. 参数与局部变量

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

 实参变量可以是常量、变量、表达式、函数等,无论实参是何种类型的量,当函数调用时,传给形参时都必须是确定的值。因此应预先使用赋值、输入等方法,使形参获得确定值

 局部变量:函数内定义的变量,只在函数运行时起作用,运行结束后自动释放

 默认参数:

def stuffs(name,age,country=CN):
    print("姓名:%s"%name)
    print("年龄:%d" % age)
    print("国家:%s" % country)
stuffs(sam,18)

 非固定参数:

#*args会把多传的参数变成一个元组
>>> def stuffs(name,age,*args):
...     print(name,age,args)
...
>>> stuffs(sam,18,football,Movie,Python)
sam 18 (football, Movie, Python)
>>>

#**kwargs会把多传的参数变成一个字典
>>> def stuffs(name,age,*args,**kwargs):
...     print(name,age,args,kwargs)
...
>>> stuffs(sam,18,CN,python,sex=man,hobby=running)
sam 18 (CN, python) {hobby: running, sex: man}
>>>

 关键参数:

  关键参数必须在位置参数之后 

>>> def stuffs(name,age,country=CN):
...     print("姓名:%s"%name)
...     print("年龄:%d" % age)
...     print("国家:%s" % country)
...
>>>
>>> stuffs(country=USA,sam,18)   #关键参数在位参前面,导致报错
  File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
>>> stuffs(sam,18,country=USA)   #关键参数的位参之后正常
姓名:sam
年龄:18
国家:USA
>>>

 全局和局部变量:

  在子程序定义的变量叫局部变量,在程序一开始就定义的变量叫全局变量

  局部变量作用域是定义该变量的子程序,全局变量作用域是整个程序

  当二者同名时,在定义局部变量的子程序中局部变量起作用,其它地方全局变量起作用

3. 返回值

  要想获取执行结果,就可以用return把结果返回

  • 函数执行过程中,只要遇到return语句时就会停止执行并返回结果,可以理解为return就是函数的结束
  • 函数如未设置return,则默认返回值为None

   嵌套函数

  函数内再套用函数

name = sam
def change_name():
    name = sam2

    def change_name2():
        name = sam3
        print("第3层打印",name)

    change_name2()  #调用内层函数
    print(第2层打印,name)

change_name()
print(第1层打印,name)

4.递归

 如果一个函数在内部调用自身本身,这就叫递归函数  

 特性:

   1.要有明确的结束条件

   2.每当进入深一层次的递归时,问题规模相对上次都要有所减少

   3.递归效率不高,递归层次过多可能导致栈溢出

5.匿名函数

 不需要显示的指定函数 ,和其它函数搭配使用

 >>> calc = lambda n:n**n

>>> print(calc(10))

10000000000 

#和其它函数配合使用
>>> res = map(lambda n:n**3,[1,2,3,4]) >>> res <map object at 0x0000000000DEDCF8> >>> for i in res: ... print(i) ... 1 8 27 64

6.函数式编程介绍

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

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

一、定义

简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。主要思想是把运算过程尽量写成一系列嵌套的函数调用。

7.高阶函数

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

1 >>> def add(x,y,f):
2 ...     return f(x) + f(y)
3 ...
4 >>> res = add(3,-6,abs)
5 >>> print(res)
6 9

8.内置函数

  技术分享图片

内置参数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii 

Day3 - Python基础3 函数、递归、内置函数

标签:www   follow   doc   map   highlight   理解   分配   try   running   

原文地址:https://www.cnblogs.com/pynetwork/p/8973914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!