函数基础

函数简介

  • 定义:就是具有特定功能的一段代码
  • 优点:
    • 解决代码的重复书写
    • 可以将功能的实现着和使用者分开,提高开发效率
  • 分类:
    • 库函数:print、input、abs等
    • 自定义:用户自己封装的函数

函数使用

  • 定义函数格式

    def 函数名([参数列表]):
    函数体

    []表示可选,参数可以有,也可以没有,也可以是多个。

  • 函数名:

    • 与变量一样,只要遵循标识符的命名规范即可。
  • 函数调用:

    • 函数定以后不会执行,需要调用才会执行
    • 调用格式:函数名([参数])

函数分类(参数与返回值)

  • # 无参无返回值
    def print_hello():
    for i in range(10):
    print('Hello world!') # print_hello()
    # 带参数无返回值
    def print_n_hello(n):
    for i in range(n):
    print('Hello world!') # print_n_hello(5) # 带参有返回值
    def add(m, n):
    c = m + n
    # 使用return返回需要返回的值,不返回默认为None
    return c print(add(3, 5))

分类的标准是按照有无参数,以及有无返回值。

函数参数

  • 形参:形式参数,就是写在函数定义出的参数

  • 实参:实际参数,就是在函数调用时传递的参数

  • 位置参数:也叫必传参数,没有默认值的参数

  • 默认参数:定义时有默认值,调用时可以不传,必须写在最后

  • 关键字参数:在函数调用时指定参数名字,参数的位置就无所谓。

  • 可变长度参数:函数调用时可以传递比定义处更多的参数,多出来的参数会保存在args和kwargs中

    def var_len_args(a, b, name='goudan', *args, **kwargs):
    print(a, b)
    print(name)
    # 是一个元组,保存多传的位置参数
    print(args)
    # 是一个字典,保存多传的关键字参数
    print(kwargs) var_len_args(1, 2, 3, 4, age=10)
  • *的使用:

    def show(a, b):
    print(a, b) lt = [1, 2]
    # 需要从列表根据下表获取元素,然后作为参数传递
    # show(lt[0], lt[1])
    show(*lt) def show2(aa=11, bb=22):
    print(aa, bb) d = {'aa': 123, 'bb': 456}
    # show2(aa=d['aa'], bb=d['bb'])
    # 上下等价
    show2(**d)

函数进阶

  • 函数的定义位置是随意的?

    • 不是,一定是先定义后调用,函数的调用一定要放在定义之后。
  • 函数的名字可以相同吗?
    • 不可以,若出现同名函数,后者会覆盖前者。
  • 函数内容能否再定义函数?
    • 可以,定义在函数内部的函数叫内部函数,它是很多高级功能实现的基础。

变量的作用域

  • 块级作用域

    if True:
    name = 'guanyu' # 能够在块的外部使用,说明没有块级作用域
    print(name)
  • 局部作用域

    • 局部变量:定义在函数内部的变量叫局部变量,只能在函数内部使用。
    def test():
    a = 10 # 不能再函数外部使用,此处会报错
    print(a)
  • 全局作用域

    • 全局变量:定义在函数外部的变量叫全局变量,哪里都可以使用
    num = 10
    
    def show():
    # 声明使用的时外部的同名变量
    global num
    # 只能使用,不能修改,若想修改协议进行全局声明
    num = 20
    print(num) show()
    print(num)
    1. 函数内部可以使用外部变量,但是不能修改
    2. 若修改需要使用global进行全局声明
    3. 当函数内部与外部出现同名变量,默认使用的时内部变量
  • nonlocal使用

    • 说明:内部函数使用外部函数的局部变量,需要使用nonlocal进行声明
    def wai():
    n = 10
    def nei():
    # 声明使用非本地变量,外部函数的局部变量
    nonlocal n
    n = 20
    print(n)
    nei()
    print(n) wai()

递归函数(了解)

  • 定义:函数内部调用函数本身的函数叫递归函数。
  • 组成:
    • 函数内部调用自己
    • 终止条件(停止调用自己的条件)
    • 核心算法(具体功能)
  • 特点:
    • 代码简洁
    • 可读性差(不易理解)
    • 瞬间占用内存较大,没有终止条件立即崩溃
    • 有些领域是禁止使用的(安全领域:汽车电子)
    • 只有在不得不使用的时候才使用(遍历目录)
  • 练习:(可以做个小练习来巩固)
    • 求n的阶乘
    • 斐波那契数列的第n项
      • 前两项都为1,从第三项开始,每一项都等于前两项的和
      • 如:
        1,1,2,3,5,8,13,21,...

常用函数

  • 内置函数(无需导入)

    print:打印,输出
    input:输入
    abs:求绝对值
    type:获取变量的类型
    chr:将ASCII数值转换为字符
    ord:将字符转换为对应的ASCII
    id:获取变量地址
    len:统计元素个数
    range:产生连续整数的可迭代对象
    enumerate:枚举可迭代对象 强制类型转换:
    int
    float
    str
    list
    tuple
    set
    dict max:求多个参数的最大值,或可迭代对象中的最大元素
    min:最小值
    sum:求和,可迭代对象元素求和
    pow:求幂,pow(2, 3)等价于2 ** 3
    round:四舍五入,可以指定保留位数 hex:16进制
    oct:8进制
    bin:2进制
  • 模块函数(需要导入)

    time:
    sleep:休眠指定的秒数,可以是小数
    math:
    e:自然对数
    pi:圆周率
    ceil:向上取整
    floor:向下取整
    sqrt:开方(请平方根)
    degrees:弧度转换为度
    radians:度转换为弧度
    sys:
    argv:运行程序时所有的命令行参数列表,第一个是程序文件名
    练习:完成一个计算器,支持加、减、乘、除运算
     

Python基础—06-函数基础的更多相关文章

  1. Python学习笔记-函数基础

    函数基础 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 为什么使用函数:减少重复代码.使程序变的可扩展使程序变得易维护 1.定义一个函数 #定 ...

  2. python学习总结 --函数基础

    函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...

  3. Python学习day9 函数Ⅰ(基础)

    函数Ⅰ(基础) 三目运算 基本结构 v =  前面  if 条件 else 后面    #条件为真v=前面,条件为假v=后面.​#等同于if 条件: v = '前面'else:    v = '后面' ...

  4. Python 入门基础10 --函数基础3 函数对象、名称空间、装饰器

    今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 ...

  5. Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型

    今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...

  6. Day9 Python基础之函数基础(七)

    参考链接:https://www.cnblogs.com/yuanchenqi/articles/5828233.html 1.函数的定义 定义: 函数是指将一组语句的集合通过一个函数名封装起来,要想 ...

  7. python学习日记(函数基础)

    修改文件(原理)--回顾 #修改文件(原理) with open('name','r',encoding='utf-8') as f,\ open('password','w+',encoding=' ...

  8. Python 入门基础12 --函数基础5 匿名函数、内置函数

    今日内容: 1.三元表达式 2.列表.元组生成式 | 字典生成式 3.递归 4.匿名函数 5.内置函数 一.三元表达式 三元运算符:就是 if...else... 语法糖 前提:if 和 else # ...

  9. python学习之函数基础

    第一个python函数: >>> def func_1(): ... print 'hello python' ... >>> func_1() hello pyt ...

  10. python学习之【第八篇】:Python中的函数基础

    1.前言 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.函数的定义 定义函数时需要遵守以下规则: 函数代码块以 def 关键词开头 ...

随机推荐

  1. 6、Modal

    1.首先Modal是一个内容窗格.通常用来做一个选择或编辑. 先来看一下 tabs.html 做了什么. /* --- tabs.html ----*/ <ion-navbar *navbar ...

  2. Android界面编程--使用活动条(ActionBar)--通过ActionBar菜单改变TextView的字体和颜色

    android:orientation="vertical"(AndroidStudio不提示,这个要记住了) 昨天好不容易把ActionBar从溢出菜单overflow中弄出来了 ...

  3. 正则表达式过滤联系方式,微信手机号QQ等

    有些输入不允许用户输入联系方式.可以使用以下正则表达式来判断是否输入敏感信息 var reg = new RegExp("(微信|QQ|qq|weixin|1[0-9]{10}|[a-zA- ...

  4. 2017 年 9 月 27 日 js(1.两个select 内容互换 2.单选按钮 同意可点击下一步 3. 全选框)

    1.两个select 内容互换 <!DOCTYPE html><html>    <head>        <meta charset="UTF- ...

  5. python的传递实参

    你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字.数字或更复杂的对象(如字典).将列表传递给函数后,函数就能直接访问其内容 1.在函数中修改列表 将列表传递给函数后,函数就可对其进行修改. ...

  6. 重构指南 - 移除重复内容(Remove Duplication)

    在项目中或多或少的都存在着重复的或者功能相似的代码,如果要对代码做改动,就要修改多个地方,所以我们需要将多处重复的代码提取到一个公共的地方供统一调用,以减少代码量,提高代码可维护性. 重构前代码 pu ...

  7. 常见的media断点

    landscape mode是指宽度比高度宽的模式,也就是俗称的宽屏模式: portrait mode是指高度比宽度高的模式,也就是俗称的竖屏模式: /*#region SmartPhones */ ...

  8. GridView——标题行自适应单元格列宽与选中单元格变色

    首先看效果图: 主要实现—— 1.前台GridView代码: <asp:GridView Height="100%" Width="98%" ID=&qu ...

  9. sql developer中英文切换

    今天使用oracle sql developer时做调优建议时找到的建议显示为?的乱码,本人sql developer为中文版,修改为英文版后问题解决. 查看帮助菜单中的属性选项卡,user.lang ...

  10. Android开发最佳学习路线图(转)

    Android开发总体路线图:  基础学习——JavaSE:        很多朋友一上手就开始学习Android,似乎太着急了一些. Android应用程序开发是以Java语言为基础的,所以没有扎实 ...