知识点1:函数的定义
在 Python 中,函数是一种封装了一段代码逻辑的模块,可以通过函数名调用并执行。函数的定义使用 def 关键字,后面跟函数名、参数列表和冒号,然后是一个代码块(缩进表示)。函数可以有返回值,也可以没有。
def function_name(parameters):
# 函数体
# 执行的代码逻辑
return value # 可选,返回值
def:用于定义函数的关键字。
function_name:函数的名称,用于后续调用。
parameters:函数的参数列表,可以为空,也可以有多个参数,用逗号分隔。
return:用于返回值的关键字。如果省略 return,函数默认返回 None
案例:
知识点2:用函数编程,设置一个简易计算器,能计算+ - * /
案例
这里定义了一个名为 calculator 的函数,它接受三个参数: a:第一个操作数(数字)。 opt:运算符(字符串),用于指定要执行的运算类型。 b:第二个操作数(数字)。
知识点3:Python 函数参数的传递方式
代码前2行的意图:
定义了一个名为 food 的函数,它接受四个参数:main、other、drink 和 dessert。
函数的逻辑非常简单:将四个参数的值打印出来。
这里涉及到3种函数调用方式:
调用函数(第一种方式)
food("rice", "chicken", "coke", "ice cream")
调用方式:使用位置参数传递。
解释: "rice" 被赋值给第一个参数 main。 "chicken" 被赋值给第二个参数 other。 "coke" 被赋值给第三个参数 drink。 "ice cream" 被赋值给第四个参数 dessert。
输出结果: rice chicken coke ice cream
调用函数(第二种方式)
food(main="zong_zi", drink="haohede", dessert="tiande", other="haochide")
调用方式:使用关键字参数传递。
解释: 通过关键字明确指定每个参数的值,顺序可以任意。 "zong_zi" 被赋值给 main。 "haochide" 被赋值给 other。 "haohede" 被赋值给 drink。 "tiande" 被赋值给 dessert。
输出结果: zong_zi haochide haohede tiande
调用函数(第三种方式)
food("zong_zi", "haohede", dessert="tiande", drink="haochide")
调用方式:混合使用位置参数和关键字参数。
解释: 前两个参数 "zong_zi" 和 "haohede" 是位置参数,分别赋值给 main 和 other。 后两个参数通过关键字指定,"tiande" 赋值给 dessert,"haochide" 赋值给 drink。
输出结果: zong_zi haohede haochide tiande
参数数量不确定的情况
如果函数的参数数量不确定,可以使用 *args(用于接收额外的位置参数)或 **kwargs(用于接收额外的关键字参数)。
知识点4 - 函数调用 - 模拟学生注册的过程
函数名:
student_register,表示学生注册的功能。
参数:
1. name:
学生的姓名,是必填参数。
2. age:
学生的年龄,也是必填参数。
3. gender:
学生的性别,默认值为 "male"。这是一个可选参数,如果不提供值,将自动使用默认值 "male"。
函数逻辑:
将传入的参数值打印出来,格式为 name age gender。
知识点5:
这段代码展示了 Python 中如何使用 *args(位置参数的动态传参)和 **kwargs(关键字参数的动态传参)来接收不确定数量的参数。
小结
*args 的作用:
用于接收不确定数量的位置参数。 所有传入的位置参数会被收集到一个元组中。
示例:food("rice", "chicken", "coke", "ice cream") 的输出是元组 ('rice', 'chicken', 'coke', 'ice cream')。
**kwargs 的作用:
用于接收不确定数量的关键字参数。 所有传入的关键字参数会被收集到一个字典中,键是参数名,值是参数对应的值。
示例:food(dessert="tiande", drink="haochide") 的输出是字典 {'dessert': 'tiande', 'drink': 'haochide'}。
知识点6
这些代码展示了 Python 函数中参数的传递和接收机制,尤其是位置参数(*args)、关键字参数(**kwargs)以及默认参数的使用。
小结
*args:用于接收多余的普通位置参数,这些参数会被收集到一个元组中。
**kwargs:用于接收多余的命名参数,这些参数会被收集到一个字典中。
默认参数:如果显式传递了值,则使用显式值;否则使用默认值。
参数顺序:
在函数定义中,*args 必须在普通位置参数之后,但必须在有默认值的关键字参数之前;**kwargs 必须在所有参数之后。
因此顺序为:位置参数在 > *args > 默认值参数前面 > **kwargs
知识点7
1. 形参(Formal Parameters)
形参是在 函数定义 中声明的参数,用于接收调用函数时传递的值。
特点:
形参是函数定义的一部分,是函数内部的变量。
它们在函数被调用时被赋予具体的值(来自实参)。
形参的作用域仅限于函数内部,函数调用结束后,形参的值会被销毁。
形参可以有默认值,这种情况下称为默认参数。
def greet(name, greeting="Hello"):
print(greeting, name)
name 和 greeting 是形参。
greeting 是一个默认参数,如果没有提供对应的实参,它将使用默认值 "Hello"
2. 实参(Actual Parameters)
实参是在 函数调用 时传递给函数的值,用于为形参赋值。
特点:
实参是函数调用时提供的具体值。
它们可以是常量、变量、表达式或其他函数的返回值。
实参的数量和类型必须与形参匹配(除非使用可变参数或默认参数)。
实参可以是位置参数(按顺序传递)或关键字参数(通过参数名传递)。
3. 形参和实参的区别
特性 | 形参 | 实参 |
---|---|---|
定义位置 | 函数定义中 | 函数调用中 |
作用 | 接收实参的值,用于函数内部 | 为形参提供具体的值 |
作用域 | 仅限于函数内部 | 函数外部的值或变量 |
数量和类型 | 必须与实参匹配(除非使用默认参数或动态参数) | 必须与形参匹配(除非使用默认参数或动态参数) |
默认值 | 可以有默认值 | 不能有默认值 |
传递方式 | 位置参数、关键字参数、动态参数(*args 和 **kwargs ) | 位置参数、关键字参数、动态参数(*args 和 **kwargs ) |