11函数入门

函数入门

函数的作用

  • 函数就是将一段具有独立功能的代码块整合到一个整体并命名在需要的位置调用这个名称即可完成对应的需求。
  • 作用:封装代码,实现代码重用,减少内存空间,方便代码的管理和维护

函数的使用

  • 定义函数

    def 函数名称(参数):
        代码1
        代码2
        ......
        return 返回值
    
  • 在定义函数时,如果暂时还没想法可以用pass进行跳过

  • 使用函数:函数名称(参数)

ps:1)根据不同的需求参数可有可无;2)函数必须先定义再调用

函数的参数

  • 形参:是指出现在函数定义中的名称,定义了一个函数能接受何种类型的实参。
  • 实参:则是在调用函数时实际传入的值。

参数的分类

(1)根据实参进行分类

  • 位置参数 (未命名参数)
def func(a,b,c):
    print(a)
    print(b)
    print(c)
      
func(11,22,33)
#运行结果
11
22
33
上述案列中的函数的三个形参是按位置接收传入的实参,我们把这样的传参的形式叫做位置参数,
  • 关键字参数 (命名参数)
def func(a,b,c):
    print(a)
    print(b)
    print(c)
      
func(11,c=99,b=33)
#运行结果
11
33
99
调用函数函数的时候,实参通过参数名指定传给某个形参,这样的传参形式,我们把它叫做关键字参数
注意:传参的时候先写位置参数,再写关键字参数

(2)根据形参进行分类

  • 必备参数
# 在调用函数的时候必须要传的参数
def add(a,b):
    c = a + b
    print(c)
     
add(11,22)
# 上面函数中的a,b就是必备参数,在调用的函数的时候必须要传,不然就会报错
  • 默认参数
# 调用函数的时候可以传可以不传,不传就用默认值
def func(a,b,c=99):
    print(a)
    print(b)
    print(c)
func(11,22,33)
print('-----------')
func(55,66)
# 注意:带有默认值的参数一定要位于参数列表的最后面。
  • 不定长参数 *args
    • *args:接收多传入的位置参数,以元祖的形式保存
def func(*args):
  print(args)
 
func(33,44,55,66,77)
func(*(33,44,55,66,77))
 
#运行结果
(33,44,55,66,77)
(33,44,55,66,77)

*args,args接收的是一个元祖;
调用的时候可以直接传入:func(33,44,55,66,77),
也可以可以先组装list或tuple,再通过*拆包传入:func(*(33,44,55,66,77));
  • 不定长参数**kwargs
    • **kwargs:接收多传入的关键字参数,以字典的形式保存
def func(**kwargs):
    print(kwargs)
func(e=33,h=44,f=55,d=66,c=77)
func(**{'e':33,'h':44,'d':66,'c':77})
#运行结果
{'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}
{'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}

**kwargs,kw接收的是一个字典;
关键字参数既可以直接传入:func(11,22,e=33,h=44,f=55,d=66,c=77),
也可以先组装dict,再通过**拆包传入:func(**{'e':33,'h':44,'d':66,'c':77})。

注意点:使用*args和**kwargs是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

函数的返回值

  • 每个函数都有以一个默认的返回值,return None,若需要返回其他值,将None修改为需要返回的值
  • return只能在函数里面使用,使用后将数据返回出去,并直接结束函数,且return不能打印数据,只能返回数据
  • 函数可以返回多个值,即return后可以跟多个参数,但函数本身返回只有一个值,其值为元组(压缩和解包)
  • 函数内可出现多个return,但只会起作用一个。若执行了return,意为这函数执行完退出了。

函数的帮助文档

  • 查看帮助文档:可以使用 help(函数名称)来查看函数的帮助文档

  • 编写帮助文档:在函数体中,输入三个双引号,回车,会自动弹出帮助文档的撰写。(若没有弹出,需要在pycharm进行设置,在File | Settings | Tools | Python Integrated Tools | Docstring format 这里改成你想要的格式,然后再回去看看三个引号。没有函数注释的情况下是plain。改成reStucturedText。

    # 自定义求和函数
    def my_sum(list_data):
        """
        对传入列表中的数据进行求和
        :param list_data: 列表
        :return: 列表数据的和
        """
        s = 0
        for i in list_data:
            s += i
    
        return s
    
    
    l1 = [1, 2, 3]
    print(my_sum(l1))   # 6
    
    # 查看帮助文档
    print(help(my_sum))
    """
    Help on function my_sum in module __main__:
    
    my_sum(list_data)
        对传入列表中的数据进行求和
        :param list_data: 列表
        :return: 列表数据的和
    
    None
    """
    

函数的嵌套调用

函数的嵌套:在函数里面还有函数。分为外函数和内函数。
嵌套函数是为函数内部服务的,比如减少代码的重复,想要调用函数,要使用函数名,内函数也一样。如果不用函数名调用内函数,内函数就永远不会执行。

# 怎么在函数外部调用内函数呢?首先,不能直接调用内函数 ,需要先执行外函数的代码块。
def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
func2() 
# 没有执行外函数内部的代码块,python找不到内函数,所以报name ‘func2’ is not defined,
# 函数func2()没有定义
# 有几种方式可以实现对内函数的调用。
1.在外函数内部调用内函数,即用函数名调用
def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    func2() #函数名调用内函数
func1() 
2.可以用return调用内函数
def func1():
    print("这是外部函数")
    def func2():
        print("这是内部函数")
    return func2
func1()() # 执行func1()会返回func2,然后再func2()
# m = func1()
# m()


# 在一个函数里面调用别的函数
def print1():
    print("这是第一个函数")
def print2():
    print("这是定义的第二个函数")
    print1() # 在print2()中调用print1()
print2()

原文链接:https://www.cnblogs.com/daguo118/p/17314358.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:11函数入门 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • 利用python实现flappy bird 游戏(完整代码)

    完整攻略: 确保安装Python和Pygame 在Python官网下载并安装Python,在命令行输入以下命令安装Pygame: pip install pygame 下载Flappy Bird游戏基础素材 在Github上下载游戏素材文件,包括背景图、鸟和管道等。 编写代码 初始化Pygame和游戏参数: import pygame import rand…

    python 2023年5月19日
    00
  • 详解Python 序列化数据为XML

    Python 提供了许多内置的模块来帮助我们序列化数据。在 Python 中,我们可以用xml包中的三个模块来解析和解码XML文件。这三个模块是xml.etree.ElementTree、xml.dom和xml.sax。 一、使用xml.etree.ElementTree 这是使用Python标准库中的xml.etree.ElementTree模块序列化数据…

    python-answer 2023年3月25日
    00
  • python调用c++ ctype list传数组或者返回数组的方法

    以下是“Python调用C++ ctypes传数组或者返回数组的方法”的完整攻略。 1. 传递数组 在Python中,可以使用ctypes库调用C++函数,并递数组作为参数。以下是一个简单例。 示例1:传递整型数组 设我们有一个名为my_array的整型数组,我们想要将其传递给C++。我们可以使用以下代码来实现。 import ctypes # 加载动态链接…

    python 2023年5月13日
    00
  • Python 备份程序代码实现

    Python 备份程序代码实现是一个非常常见的需求。例如,在为自己的电脑或服务器备份数据时,通过编写 Python 代码可以快速实现这一功能。以下是我们提供的 Python 备份程序的攻略: 确定备份源和目标 在开始编写 Python 备份程序之前,我们需要明确备份的源和目标。源包含需要备份的文件或文件夹路径,目标则是存储备份文件的文件夹路径。这一步可以通过…

    python 2023年5月30日
    00
  • Pandas数据分析之pandas数据透视表和交叉表

    Pandas数据分析之pandas数据透视表和交叉表 Pandas 是一个具有高效数据操作和数据分析能力的 Python 库。本文将介绍 Pandas 中的数据透视表和交叉表,以及如何在实际项目中使用它们。 什么是数据透视表? 数据透视表是一种在 Excel 中极为常见的数据分析技术,它可以将原始数据以任意维度进行聚合,并展示在一个新的表格中。在 Panda…

    python 2023年5月13日
    00
  • ChatGPT 帮我自动编写 Python 爬虫脚本的详细过程

    下面是详细讲解“ChatGPT 帮我自动编写 Python 爬虫脚本的详细过程”的完整攻略。 1. 背景介绍 聊天机器人是利用机器学习和自然语言处理技术搭建的人工智能应用程序,可用于模拟人类对话。ChatGPT是一个基于自然语言处理技术的聊天机器人,能够生成各种类型的对话内容。 Python爬虫是指使用Python编写的网络数据采集工具,通过爬虫程序可以获取…

    python 2023年5月19日
    00
  • 判断python字典中key是否存在的两种方法

    判断 Python 字典中 key 是否存在的两种方法 Python 字典是一种无序的数据类型,它存储的数据是键值对 key-value 的形式,其中 key 和 value 之间用冒号 : 分隔,各个键值对之间用逗号 , 分隔。当我们操作字典时,有时候需要判断某一个 key 是否存在,下面介绍两种判断 key 存在的方法。 使用 in 关键字 可以使用 i…

    python 2023年5月13日
    00
  • Python进行Restful API开发实例详解

    Restful API是一种常用的Web API设计风格,它可以帮助我们构建简单、可扩展、易于维护的API。本文将介绍如何使用Python进行Restful API开发,并提供两个示例。 1. Flask框架搭建 Flask是一个轻量级的Web框架,它可以帮助我们快速构建Restful API。以下是一个示例,演示如何使用Flask搭建Restful API…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部