首页 > 编程语言 >【Python】函数详细介绍

【Python】函数详细介绍

时间:2024-05-26 15:29:40浏览次数:30  
标签:return 函数 Python 参数 详细 print 全局变量 name


文章目录


函数定义和调用

函数是组织好的、可重复使用的代码块,用来执行特定的任务。Python使用关键字def来定义函数。

def function_name(parameters):
    """docstring"""
    statement(s)
  • function_name:函数的名称,用于标识函数。
  • parameters:函数可以接受的参数,用逗号分隔。
  • docstring:函数的文档字符串,用于描述函数的功能。
  • statement(s):函数的代码块。

函数被调用时,实际的参数(arguments)会传递给函数。


参数类型

Python支持多种参数类型,使得函数调用非常灵活。

  • 位置参数:最基本的参数类型,调用时的实际参数将按顺序映射到函数定义的形式参数上。

    def sub(a, b):
        return a - b
    
    result = sub(5, 3)  # 正确的调用,5 和 3 是按位置传递的
    print(result)  # 输出 2
    
  • 关键字参数:允许函数调用者指定传递给参数的值,无需考虑其在函数定义中的位置。

    def introduce(name, age):
        return f"My name is {name} and I am {age} years old."
    
    result = introduce(age=30, name="Alice")  # 参数的顺序可以任意
    print(result)  # 输出 "My name is Alice and I am 30 years old."
    
  • 默认参数:在函数定义时为参数指定默认值,如果调用时没有传递参数,则使用默认值。

    def register(name, country="USA"):
        return f"{name} is from {country}."
    
    print(register("John"))  # 没有传递country,使用默认值 "USA"
    print(register("Ming", "China"))  # 传递了country,使用 "China"
    
  • 可变长度参数*args:在参数前加上*,允许你将不确定数量的参数传递给函数。这些参数被包装进一个元组。

    def calculate_sum(*numbers):
        return sum(numbers)
    
    result = calculate_sum(1, 2, 3, 4, 5)  # 传递任意数量的参数
    print(result)  # 输出 15
    
  • 可变长度参数**kwargs:在参数前加上**,允许你将不定量的关键字参数传递给函数。这些参数被包装进一个字典。

    def configure(**options):
        configuration = []
        for key, value in options.items():
            configuration.append(f"{key} = {value}")
        return "\n".join(configuration)
    
    print(configure(database="MySQL", port=3306, host="localhost"))
    # database = MySQL
    # port = 3306
    # host = localhost
    

返回值

函数通过return语句返回值,可以返回Python中的任何数据类型,也可以返回多个值。

  • 没有返回值:如果没有return语句,或者return语句后没有返回值,则函数默认返回None

  • 返回一个值:这个值可以是Python中的任何数据类型(如整数、浮点数、字符串、列表、元组、字典、对象等)。

    def get_data():
        data = {'id': 1, 'name': "John", 'visits': [2012, 2014, 2018]}
        return data
    
    result = get_data()
    print(result)
    # {'id': 1, 'name': 'John', 'visits': [2012, 2014, 2018]}
    
  • 返回多个值:通过返回一个元组来实现,元组中包含了所有要返回的值。接收多个返回值时,可以使用多个变量对应接收这些值,或者使用一个变量接收这个元组。

    def get_user_info():
        name = "Alice"
        age = 30
        country = "USA"
        return name, age, country  # 返回一个元组
    
    user_name, user_age, user_country = get_user_info()  # 多变量接收返回值
    print(user_name, user_age, user_country)
    # Alice 30 USA
    
  • 返回值中带有函数本身:递归函数,这类函数中会有特定的终止条件。


变量的作用域

在Python中,变量的作用域决定了变量可以在哪些部分的代码中被访问或修改。理解变量的作用域对于编写清晰、高效、易于维护的代码至关重要。作用域的概念不仅影响数据访问的可行性,还涉及到内存管理和程序的调试。接下来,我将深入探讨局部变量和全局变量的概念,以及它们在Python编程中的应用。

  • 局部变量

    局部变量是在函数或任何代码块内部定义的变量。它们只在定义它们的代码块中有效。这种作用域限制意味着局部变量只能在其所属的函数内部被访问和修改,函数外部则无法访问。

    def local_example():
        local_var = 10  # 局部变量定义
        print(local_var)  # 在函数内部访问局部变量
    
    local_example()
    # print(local_var)  # 尝试在函数外部访问局部变量会引发错误
    

    局部变量的优点:

    内存效率:局部变量只在函数调用期间存在,在函数调用结束后,这些变量所占用的内存就会被释放。这有助于优化内存使用。

    避免命名冲突:局部变量的使用减少了变量命名冲突的可能性,因为它们只在局部环境中有效。

  • 全局变量

    全局变量是在函数外部定义的变量,可以在整个程序范围内的任何位置访问。如果需要在函数内部修改全局变量的值,必须使用global关键字声明。

    global_var = "I am global"  # 全局变量定义
    
    def modify_global():
        global global_var  # 声明要修改全局变量
        global_var = "Modified globally"
    
    print(global_var)  # 在修改前访问全局变量
    modify_global()
    print(global_var)  # 在修改后访问全局变量
    
    # I am global
    # Modified globally
    

    全局变量的优缺点:

    数据共享:全局变量可以被程序中的多个函数共享,这对于存储整个程序生命周期中需要访问的数据非常有用。

    安全风险:正因为全局变量可以在多个函数之间共享,所以这可能导致数据被意外更改或造成难以跟踪的错误。

    调试困难:全局变量的修改可能会在程序的任何地方发生,这使得调试程序变得更加复杂。

尽管全局变量提供了便利,但一般建议尽量避免使用全局变量,除非真正必要。过度依赖全局变量可能会使代码难以维护和扩展。相反,推荐使用函数参数和返回值来进行函数间的数据传递,这样可以保持代码的模块化和独立性。


匿名函数(Lambda函数)

通过lambda关键字创建匿名函数,这种函数用一行表达式定义,主要用于需要函数对象的地方。

square = lambda x: x ** 2
print(square(5))  # 输出 25

递归函数

函数可以返回自身来解决问题(函数本身调用自己),这称为递归函数。

# 计算斐波那契数
def factorial(x):
    if x == 1:
        return 1
    else:
        return x * factorial(x - 1)

if __name__ == '__main__':
    x = factorial(10)
    print(f"The factorial number is {x}")
    
    # The factorial number is 3628800

标签:return,函数,Python,参数,详细,print,全局变量,name
From: https://blog.csdn.net/hdz_wiz_csdn/article/details/139091570

相关文章

  • 牛客热题:包含min函数的栈
    ......
  • Bayanay:一款基于Python开发的无线网络安全研究工具
    关于BayanayBayanay是一款基于纯Python开发的无线网络安全研究工具,在该工具的帮助下,无论你身处何地,都可以轻松地对周围地区的无线网络安全状况进行研究与分析。该工具可以通过使用HTML5的地理位置定位功能并结合Scapy获取到的SSID信息来对目标无线网络进行渗透测试与安全研......
  • Python限制输入的数范围
    在Python中,我们可以使用多种方法来限制用户输入的数值范围。1.使用while循环和try-except语句的方法以下是一个使用while循环和try-except语句的示例,该示例将要求用户输入一个在指定范围内的整数。假设我们要限制用户输入的数在1到100之间(包括1和100):defget_valid_input(min_v......
  • 聚合函数查询语法,利用人工智能生成DDL,DML语句会省时省力
    #聚合函数查询语法#查询员工最大年龄selectmax(age)fromstudent;#查询名字叫做张三的人数selectuserName,count(userName)fromstudentwhereuserName='张三';#基本语法selectmax/min/count/avg/sum(字段名)from表名where字段名=''; ......
  • strcat函数及其模拟实现(C语言)
    1.前言C语言中的库函数有很多,有关于处理字符串的函数有很多。在本文中,我将为大家介绍处理字符串较为常用的一个函数——strcat函数希望读者们能够好好看,大家一起进步!......
  • Python中Web开发-FastAPI框架
            大家好,在当今Web开发领域,高性能、易用性和可扩展性是开发者们追求的目标。Python作为一种流行的编程语言,在Web开发领域也有着强大的影响力。而在众多的PythonWeb框架中,FastAPI凭借其快速、现代和易用的特性,成为了开发者们的首选之一。本文将深入探讨FastAPI......
  • 设计模式 1 (Python版)
    设计模式解释:概念《设计模式:可复用面向对象软件的基础》面向对象的特性:封装,继承,多态接口:若干方法的集合限制实现接口的类必须按照接口给定的调用方式实现这些方法对高层模块隐藏了类的内部实现#接口实现的两种方法:#1.写一个父类,其他类必须继承这个方法,若子类不实现这......
  • 数据结构(python版)
    数据结构与算法python队列queue详见python3自定义比较器python比较器Pythonheapq自定义比较器#自定义比较器#1.对list等有key参数的##二维数组等的比较排序list1.sort(key=lambdax:x[1])##list中放置其他数据类型importfunctools#cmp的返回值为负数,第一个数......
  • 【python】python 全国5A级景区数据采集与pyecharts可视化(源码+数据+论文)【独一无二】
    ......
  • 蓝桥杯备赛——DP【python】
    一、小明的背包1试题链接:https://www.lanqiao.cn/problems/1174/learning/问题描述输入实例52016253851533输出示例37问题分析这里我们要创建一个DP表,DP(i,j)表示处理到第i个物品时消耗j体积。这样我们在输入数据时可以直接进行操作。对于每一个dp[i][j]我......