17370845950

Python函数怎么定义和调用_参数与返回值详解【指导】
Python函数用def定义,调用时写函数名加括号;核心是参数传递与返回值获取:支持位置参数、默认参数、args、*kwargs;返回值可多值解包,函数内修改可变对象会影响原对象。

Python函数用def关键字定义,调用时直接写函数名加括号。核心在于理解参数怎么传、返回值怎么取,不写清楚这两点,函数就容易用错或效果不对。

怎么定义一个函数

基本语法是:def 函数名(参数列表):,然后缩进写函数体,可选return语句返回结果。

  • 函数名要见名知意,比如calculate_totalfunc1好懂
  • 参数列表可以为空,比如def say_hello():;也可以有多个,用逗号隔开
  • 函数体里不写return,默认返回None

参数的几种常见写法

Python支持灵活的参数机制,实际开发中主要遇到这四类:

  • 位置参数:调用时按顺序传,必须提供,比如def add(a, b): return a + badd(3, 5)
  • 默认参数:定义时给参数赋初值,调用时可省略,如def greet(name, msg="你好"):greet("小明") 输出“小明,你好”
  • *args:接收任意多个位置参数,内部是元组,适合不确定参数个数的场景,比如def sum_all(*nums): return sum(nums)
  • **kwargs:接收任意多个关键字参数,内部是字典,常用于配置类函数,如def config(**options): print(options)config(host="localhost", port=8080)

返回值不是只能返一个

Python函数天然支持“多返回值”,其实是返回了一个元组,只是语法上省略了括号。

  • return x, y, z,调用后可以直接解包:a, b, c = my_func()
  • 如果只想要其中某一个,可以用下划线占位,比如_, b, _ = my_func()
  • 函数中途遇到return就立刻结束,后面代码不执行,这点和print不同

调用函数要注意什么

调用本身很简单,但几个细节容易出错:

  • 函数必须先定义再调用,否则报NameError
  • 传参个数和类型要匹配,比如定义了两个位置参数,却只传一个,会报错
  • 修改可变对象(如列表、字典)作为参数时,函数内改动会影响原对象,这是引用传递的表现
  • 想避免意外修改,可以传副本,比如my_list.copy()my_dict.copy()