zoukankan      html  css  js  c++  java
  • Day3

    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 

  • 相关阅读:
    Chapter 1. 庞加莱群、单粒子态和时间空间反演
    QI Chapter 1
    Introduction to QFT
    在visual studio 2017中配置Qt
    BUAA软工第0次作业
    附加作业(个人)
    个人作业3——个人总结(Alpha阶段)
    单元测试
    英语学习app案例分析
    小学生四则运算改进版之
  • 原文地址:https://www.cnblogs.com/pynetwork/p/8973914.html
Copyright © 2011-2022 走看看