Python基础—06-函数基础

函数基础

函数简介

  • 定义:就是具有特定功能的一段代码
  • 优点:
    • 解决代码的重复书写
    • 可以将功能的实现着和使用者分开,提高开发效率
  • 分类:
    • 库函数: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返回需要返回的值,不返回默认为Nonereturn 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 = 10def show():# 声明使用的时外部的同名变量global num# 只能使用,不能修改,若想修改协议进行全局声明num = 20print(num)show()
    print(num)

     

    1. 函数内部可以使用外部变量,但是不能修改
    2. 若修改需要使用global进行全局声明
    3. 当函数内部与外部出现同名变量,默认使用的时内部变量
  • nonlocal使用

    • 说明:内部函数使用外部函数的局部变量,需要使用nonlocal进行声明
    def wai():n = 10def nei():# 声明使用非本地变量,外部函数的局部变量
            nonlocal nn = 20print(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
    dictmax:求多个参数的最大值,或可迭代对象中的最大元素
    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:运行程序时所有的命令行参数列表,第一个是程序文件名练习:完成一个计算器,支持加、减、乘、除运算

     

     

转载于:https://www.cnblogs.com/swjblog/p/9671007.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python encode gbk_[转]Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法

使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: gbk codec cant encode character \xa0 in position ... 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无…

iisnode默认不支持PUT和DELETE的解决

因为iisnode的自动重启服务器方便,一直用的它来作为开发中的node服务器,今天一个delete命令过去,得到一个405(?好像是)错误,让我很郁闷。用原生的node试一下,是完美支持的,本来打算用Node算了的…

域名配置备忘录

几个国内yum镜像: http://mirrors.163.com/ //网易镜像 http://mirrors.aliyun.com/ //阿里镜像 http://centos.ustc.edu.cn/ //中科镜像 http://mirrors.sohu.com/ //搜狐镜像 yum 配置文件路径 . /etc/yum.repos.d/ 命令 yum clean all yum makecache

iOS延迟执行

传送门 转载于:https://www.cnblogs.com/GoodmorningMr/p/9673140.html

安卓APP_ Fragment(4)—— Fragment + ViewPager2 模拟微信首页 (1)两者联动实现翻页

摘自:安卓APP_ Fragment(4)—— Fragment ViewPager2 模拟微信首页 (1)两者联动实现翻页 作者:丶PURSUING 发布时间: 2021-04-20 17:46:59 网址:https://blog.csdn.net/weixin_4474…

python列表相关函数_python中列表(list)相关的函数

1.列表相关的内置函数all(iterable):这个函数返回一个布尔值。如果iterable的所有元素都为真(或iterable自身为空)则返回True,否则返回False。例:all[2,3,0]将返回Falseany(iterable):这个函数返回一个布尔值。如果iterable的任一元素为真则返回True&…

linux添加window启动

系统:centos 文件:/boot/grub2/grub.cfg 追加内容: menuentry “Windows 7” { insmod part_msdos insmod ntfs set root’(hd0,msdos1)’ chainloader 1 }

KVM学习笔记

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor: 它由 Quramnet 开发,该公司于 2008年被 Red Hat 收购。它支持 …

Linux网络编程(Socket)

目录网络编程(Socket)概述引入网络编程通识扫盲socket套接字套接字描述符字节序socket编程步骤Linux提供的API简析创建套接字即连接协议[socket](服、客)绑定IP和端口[bind](服)地址转换api字节序转换api监…

调DHT22

传感器一共有4个脚,支持iic和单总线 拿到官方文档感觉唤醒时许很简单,mcu先拉低800us;然后释放总线等待(20-200us)传感器响应分析响应信号是传感器先拉低80us然后拉高80us,之后开始发送数据。 看起来简单但我调试了几小时传感器都没有响应&…

selenium的三种等待时间

//隐式等待(20秒以内没哥一段时间就会去找元素,如果没找大也不会报错,过了20s才会报错)//driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);//显示等待WebDriverWait wait new WebDriverWait(driver,10);wait.until(ExpectedCondition…

嵌入式开发概述(树莓派介绍)

目录嵌入式定义嵌入式芯片选型ARM架构ARM树莓派嵌入式定义 国内普遍认同的嵌入式系统的定义是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功耗、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 嵌入式系统是软件和…

ubuntu 16gcc g++版本降级

打算在ubuntu16上编译linux3.4.66内核,但是遇到 In file included from include/linux/compiler.h:48:0, from include/linux/stddef.h:4, from include/linux/posix_types.h:4, from include/linux/types.h:17, from include/linux/page-flags.h:8, from kern…

android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...

文章转载自:iT之家原文链接:https://www.ithome.com/0/479/483.htm(IT之家3月25日消息) 谷歌今天宣布了一系列面向游戏开发者的新工具:Google Play Asset Delivery、Android性能调节器,Android GPU检查器和Cloud Firestore等&…

Generator 函数的异步应用

异步编程对 JavaScript 语言太重要。Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可。本章主要介绍 Generator 函数如何完成异步操作。 传统方法 ES6 诞生以前,异步编程的方法,大概…

cURL库

一、cURL库可以做什么 1.cURL是一个文件传输工具,支持很多协议 二、cURL库的用法 1.初始化 $urlcurl_init() 2.设置选项 curl_setopt($url,CURLOPT_URL,"http://www.baidu.com") curl_setopt($url,string option,mixed value) 3.执行cURL会话 …

树莓派刷机

目录准备刷机重刷准备 SD卡(一般16G以上,这里我用的8G) 读卡器 Win32DiskImager(将镜像烧到SD卡的软件),在这里下载:https://download.csdn.net/download/zhuguanlin121/18329615?spm1001.201…

linux3.4.2移植总结(s3c2440)

环境:Linux version 3.5.0-23-generic (builddkomainu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) ubuntu12 目标板:JZ2440 待移植内核:3.4.2 交叉编译器:arm-linux-gcc-4.3.2 1. make s3c2410_defconfig //使…

判断图有无环_浅谈什么是图拓扑排序

1 引言 在工程实践中,一个工程项目往往由若干个子项目组成。这些子项目间往往有两种关系:  (1) 先后关系,即必须在某个项完成后才能开始实施另一个子项目。  (2) 子项目间无关系,即两个子项目可以同时进行,互不影响。例如:在工厂里产品的…

排列与组合的Java递归实现 (参考)

我们在笔试面试过程中经常会遇到关于排列与组合的问题,其实这些可以通过递归简单的实现,看下面两个例子: (1)关于字符串排列的问题 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc&…