zoukankan      html  css  js  c++  java
  • python学习笔记(三)函数

    一、定义函数

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

    在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

    我们可以自定义一个最简单的函数:

    二、使用函数的好处

        1、提高代码的复用性

        2、让代码更简洁、简化代码

        3、代码可扩展

    三、函数的参数

    1.位置参数

    位置参数,是必填的,调用函数时不传会报错。

    我们写一个简单的函数,实现计算乘法的功能。下图中的a和b就是位置参数。

    a,b叫做形参,也就是形式参数。调用函数calc时,传的7和8叫实参,也就是实际参数 

    我们可以看到传参数时,7传给了a,8传给了b。也就是说传参顺序不能错。那么,当参数很多的时候,很难准确的记住各参数位置,就很容易出现错误,可以用 形参名=实参 的方式传参。

    比如说上面的那个calc函数也可以使用calc(b=1,a=2)这样来调用,这种调用方式叫做关键字传参。

    例,操作数据库的函数。传参没有按顺序,采用了port = '3306'这种方式,很适合多参数的函数。

    2.默认参数

    默认参数就是在定义形参的时候,给函数参数默认赋一个值,这样在调用函数的时候就算没有传值也不会报错。

    所以,默认参数不是必填的,如果给默认参数传值的话,它就会使用你传入的值。如果使用默认值参数的话,必须放在位置参数后面定义。

    例如:写一个函数,实现文件的读写功能。

    这里介绍一下return,return有两个作用:(1)调用完函数后,将结果返回;(2)函数里面遇到return就立即结束。

    另外,如果只写一个return,后面什么也不加,就返回None;如果不写return,也默认返回None。

    小练习:写一个判断密码的函数

    3.不固定参数:

    在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。不固定参数有两种,一种是可变参数,一种是关键字参数。

    可变参数:

    可变参数用*来接收,后面想传多少个参数就传多少个,如果位置参数、默认值参数、可变参数一起使用的的话,可变参数必须在位置参数和默认值参数后面。可变参数也是非必传的。

    输出结果如下:

    4.关键字参数:

    可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:

    输出结果如下:

     

    使用关键字参数的话,调用的时候必须使用关键字传参。关键字参数也是非必传的。

    四、函数的返回值

    • python 函数使用 return 语句返回 "返回值",可以将其赋给其它变量作其它的用处

    • 所有函数都有返回值,如果没有 return 语句,会隐式地调用 return None 作为返回值

    • 如果函数执行了 return 语句,函数会立刻返回,结束调用,return 之后的其它语句都不会被执行了
    • 函数也可以有多个返回值,如果有多个返回值的话,会把返回值都放到一个元组中,返回的是一个元组。
    • 1 def cacl(x,y):
      2     c=x*y
      3     return c,x,y
      4 res=cacl(5,6)
      5 print(res)
      6 
      7 >>>(30,5,6)

    五、全局变量和局部变量

    全局变量与局部变量两者的本质区别就是在于作用域。用通俗的话来理解的话,全局变量是在整个py文件中声明,全局范围内都可以访问;局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了。

    在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改

    运行结果如下:

    六、递归函数

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。建议少用递归,因为递归效率不高,而且最多递归999次。由下面的函数能够很直观的看出递归次数上限

           

    递归调用的特性:

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

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

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

    七、内置函数

     内置函数是指python自带的一些函数,直接拿过来能用的

     小练习:写一个判断是否为小数的函数。

    分析:(1)判断小数点个数;(2)如果是正小数,小数点左边和右边都是纯数字;(3)负小数,左边以‘-’开头,其他部分是数字,右边是数字。

  • 相关阅读:
    百度地图API 绘制矩形多边形等覆盖物
    不可多得的JS优化技巧
    vscode的settings.json配置(个人习惯)
    npm 查看模块全部版本
    .net core 生成 发布的文件里删除多余的语言包指定仅需要的语言
    225. Implement Stack using Queues (栈实现队列)
    232. Implement Queue using Stacks(队列实现栈)
    496. Next Greater Element I (单调栈)
    239. Sliding Window Maximum (滑动窗口最大值, 大根堆or 单调队列)
    30. Substring with Concatenation of All Words (滑动窗口)
  • 原文地址:https://www.cnblogs.com/mululu/p/8876737.html
Copyright © 2011-2022 走看看