Python中的函数

创建和使用

        创建函数的语法如下:

def 函数名(参数):
    代码块(函数体)

函数的参数

形参:在定义函数的时候传递的参数

实参:在调用函数时传递的参数

无参:没有任何参数

位置参数

        实参的位置和形参一一对应,不能多也不能少

关键字参数

        用形参的名字作为关键字来指定具体传递的值,则在函数调用时,前后顺序将不受影响

def fun(a,b,c):
    print(a,b,c)

fun(b=10,a=20,c=5)

输出结果:20 10 5

位置参数和关键字参数混用

        当位置参数和关键字参数混用时,位置参数在前。也就是说函数调用时,既有位置参数也有关键字参数,则位置参数一定在关键字参数之前,否则函数调用是报错的

def fun(a,b,c):
    print(a,b,c)

fun(10,20,c=30)

可变参数

        示例一,形参中使用一个星号,代表此参数本质上是封装成了元组

def fun(*a):
    print(a)

fun(10,20,30)

#输出   (10, 20, 30)

        示例二,形参中使用两个星号,代表此参数本质上是封装成了字典。需要注意的是,在函数调用的时候,要使用关键字参数的传递方式

def fun(**a):
    print(a)

fun(a=10,b=30,c=18)

#输出  {'a': 10, 'b': 30, 'c': 18}

可变参数和位置参数混用

        可变参数和位置参数混用的时候,可变参数优先,且在调用的时候,应该用关键字指明最后一个参数是位置参数。可变参数优先是定义优先和调用优先

def fun(*a,b):
    print(a,b)

fun(10,20,b=11)

def fun2(b,*a):
    print(b,a)

fun(10,20,b=30)

函数的文档

def fun(*a,b):
    """
    fun是个函数
    :param b:可变参数
    :param a: 位置参数
    :return:
    """
    print(a,b)

fun(12,13,b=10)

# 获取函数的文档内容
print(fun.__doc__)

# 进行函数文档的查看
help(fun)

输出结果如下:

 

函数的返回值

关键字:return

        返回值谁调用就返回给谁

1. 任何函数都有返回值

2. 如果不写return ,也会默认加一个return None

3. 如果写return ,不写返回值 也会默认加一个None

4. 可以返回任何数据类型

5. return后面的代码不在执行,代表着函数的结束

函数的变量的作用域

局部变量

        定义在函数内部的变量

        先赋值在使用

        从定义开始到包含他的代码结束

        在外部无法访问

全局变量

        1. 定义在源文件的开头

        2. 作用范围:整个文件

        3. 局部变量和全局变量发生命名冲突时,以局部变量优先

global

        声明全局变量

def fun():
    global b
    b = 100
    print(b)

fun()
#局部变量b被global声明后在函数外部也能使用
print(b)

nonlocal

        声明的是局部变量

def fun():
    b = 100
    def fun2():
        nonlocal b  #声明之后b在函数内变成了300
        b = 300
        print(b)
    fun2()
    print(b)  #如果在fun2中没有声明,则这里输出的是100,在fun2中声明了之后,这里输出的就是300

fun()



#输出结果如下
300
300

内嵌函数

        定义在函数内部的函数叫做内嵌函数,或者叫做内部函数,内嵌函数的作用范围:从定义开始到包含它的代码快结束。在内嵌函数中不能直接进行a+=1,a=a+1这样的操作,如果要进行这样的操作,如上面示例,解决方案是nonlocal和global

闭包

        闭包是函数式编程的重要语法结构。

        如果内部函数调用了外部函数的局部变量,并外部函数返回内嵌函数的函数对象,例如:

def fun():
    a = 100
    def fun2():
        print(a)
        return "Hello"
    return fun2()

print(fun())

#输出
100
Hello

        这就形成了闭包,闭包的作用式可以传递更少的形参,可以传递更多的实参——更加安全,间接性的访问内部函数,例如:

def fun(b):
    a = 100
    print(b)

    def fun2():
        print(a)
        return "Hello"

    return fun2()

print(fun(200))

#输出
200
100
Hello

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PowerDesigner画模型工具下载安装及基本操作

进行大型项目代码开发之前,一般会进行模型设计,画概念模型(CDM)、逻辑模型(LDM)、物理模型(PDM)。下面说一下PowerDesigner画模型工具下载安装及基本操作 一、下载与安装&#xff1…

如何解决苹果应用商城审核拒绝的Guideline 2.3.1 - Performance问题

当您的应用程序在苹果应用商城审核过程中被拒绝时,苹果会向您发送一封邮件,其中提供了关于拒绝原因的详细信息。本文将深入探讨如何正确处理Guideline 2.3.1 - Performance问题,并提供解决方案和优化建议,以确保您的应用程序能够通…

LeetCode刷题--- 括号生成

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述递归递归、搜…

韩语中的一次多用-柯桥基础韩语学习

1.动词,写 일기를 쓰다 写日记 2.动词,戴(帽子,眼镜,口罩) 안경을 쓰다 戴眼镜 3.动词,使用(材料,道具,手段) 세제를 쓰다 使用洗剂 4.动词&am…

【openwrt学习笔记】IPV6 ND协议学习和socket编程

目录 一、参考链接二、学习目标三、代码解析3.1 仅解析NA报文保存设备mac和ipv6地址信息3.1.1 open_ns_socket3.1.2 recv_ns_pack 3.2 解析NA和NS报文中DAD报文保存设备mac和ipv6地址信息3.2.1 open_ns_na_socket3.2.2 recv_ns_na_pack 四、代码优化4.1 BPF参考学习资料4.2 代码…

软件工程--设计工程--学习笔记(软件设计原则、软件质量属性设计、架构风格......)

软件设计在软件工程中处于技术核心,其目的是把需求分析模型转变为设计模型,以知道软件的实现,本章讲解软件设计的基本原则和基本实践 本文参考教材:沈备军老师的《软件工程原理》 软件设计概述 软件设计分为两个阶段&#xff0…

SpringBoot之IOCDI的详细解析

3.3.2 IOC详解 通过IOC和DI的入门程序呢,我们已经基本了解了IOC和DI的基础操作。接下来呢,我们学习下IOC控制反转和DI依赖注入的细节。 3.3.2.1 bean的声明 前面我们提到IOC控制反转,就是将对象的控制权交给Spring的IOC容器,由…

计算机网络实验速成

目录 网络实验速成 自动连接类型: 指示灯状态说明: 显示接口: 放置注释信息: 配置计算机: 同理,配置服务器: 配置路由器: router0 配置: router1 配置&…

2024年建立电子商务知识库的终极指南

Insider Intelligence报告称,2020年全球电子商务购物市场规模达到了近4万亿美元,并且没有放缓增长的迹象。 随着亚马逊通过一流的产品、快速的配送、无忧的退款等优势主导数字领域,电子商务行业的竞争变得越来越激烈。随着每年有越来越多的公…

第五节TypeScript 运算符

一、描述 运算符用于执行程序代码运算。 二、运算符主要包括: 算术运算符逻辑运算符关系运算符按位运算符赋值运算符三元/条件运算符字符串运算符类型运算符 1、算术运算符 y5,对下面算术运算符进行解释: 运算符 描述 例子 x 运算结果…

自己制作指定格式的bmp文件

1、CAD绘制形状,设置区域方便接下里操作 2、导出为pdf(导出的png或者Jpg极度不清晰) 打印->自己设置->框选范围 3、截图截取制作的bmp范围,保存为bmp或png 我这里是通过snagit保存为png的(也可以直接保存为bm…

基于华为atlas的烟火检测实战

1、下载官方yolov5的v6.1版本 git clone https://github.com/ultralytics/yolov5.git git checkout v6.1 2、烟火数据集准备: tree -d Images/train/目录下图片 Labels/train/目录下标签 3、数据格式转化: 数据集采用labelimg标注,xml文件…

jmeter如何参数化?Jmeter参数化设置的5种方法

jmeter如何参数化?我们使用jmeter在进行测试的时候,测试数据是一项重要的准备工作,每次迭代的数据当不一样的时候,需要进行参数化,从参数化的文件中来读取测试数据。那么,你知道jmeter如何进行参数化吗&…

PHP-PhpSpreadsheet导出带图片方法

需求描述 导出表格&#xff0c;项目名称对应项目详情页面二维码。 实现方法 1&#xff0c;先将各个项目生成的二维码存放到了一个指定目录里面&#xff1b; 2&#xff0c;导出数据到excel表格 <?phpuse PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpread…

图像分割与修复

图像分割的方法 &#xff08;1&#xff09;传统的图像分割方法 &#xff08;2&#xff09;基于深度学习的图像分割方法 传统的图像分割方法 &#xff08;1&#xff09;分水岭法 &#xff08;2&#xff09;GrabCut法 &#xff08;3&#xff09;MeanShift法 &#xff08;4…

基于SpringBoot的校园电商物流云平台 JAVA简易版

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

[Unity错误解决]There are 2 audio listeners in the scene.

There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene. 从组件中找出包含 Audio Listener 的&#xff0c;只激活一个&#xff0c;其他的关掉

POI2012 PRE-Prefixuffix

P3546 [POI2012] PRE-Prefixuffix 题目大意 对于两个字符串 S 1 , S 2 S_1,S_2 S1​,S2​&#xff0c;如果将 S 1 S_1 S1​的一个后缀移动到开头后这个字符串变成了 S 2 S_2 S2​&#xff0c;则称 S 1 , S 2 S_1,S_2 S1​,S2​循环同构。 给定一个长度为 n n n的字符串 S S …

Android Studio打包有哪些优势

大家好&#xff0c;现在移动应用程序的快速发展&#xff0c;开发者需要一个强大又可靠的开发环境来创建和打包高质量的 Android 应用程序。Android Studio 是一款由 Google 官方开发的 Android 应用程序开发环境&#xff0c;提供了许多的优势和便利&#xff0c;那究竟都有哪些优…

【Eachrts】水滴图

引入依赖 npm安装echarts、echarts-liquidfill插件 "echarts": "^5.4.2", "echarts-liquidfill": "^3.1.0",引入插件 import * as echarts from echarts; import echarts-liquidfill;示例 <template><div class"Liqu…