加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Python 默认参数介绍

发布时间:2023-06-27 10:28:07 所属栏目:教程 来源:
导读:在通常情况下,定义函数时,函数的参数个数是预先确定的。例如,编写计算两个数相加的函数 add(a, b),代码如下:

def add(a, b):return a + bsum = add(, )
在第 1 行,定义了函数 add,函数有两个参数,第 1 个
在通常情况下,定义函数时,函数的参数个数是预先确定的。例如,编写计算两个数相加的函数 add(a, b),代码如下:

def add(a, b):return a + bsum = add(, )
在第 1 行,定义了函数 add,函数有两个参数,第 1 个参数是 a,第 2 个参数是  b

在第 2 行,计算参数 a 和 参数 b 的累加和,通过 return 语句将计算结果返回给调用者

在第 4 行,通过 add(1, 2) 调用函数 add

将整数 1 传递给第 1 个参数 a

将整数 2 传递给第 2 个参数 b

传入的两个整数按照位置顺序依次赋给函数的参数 a 和 b,参数 a 和参数 b 被称为位置参数。

在 Python 中,调用函数时,根据函数定义的参数位置来传递参数,要求传递的参数与函数定义的参数两者一一对应,如果 “传递的参数个数” 不等于 “函数定义的参数个数”,运行时会报错,例如:

def add(a, b):return a + bsum = add(, , )
在第 1 行,定义了函数 add,函数有 2 个参数

在第 4 行,通过 add(1, 2, 3) 调用函数 add,传递了 3 个参数

因为 “传递的参数个数” 不等于 “函数定义的参数个数”,运行时报错如下:

C:\> python add.py
Traceback (most recent call last):
  File error.py, line 4, in <module>sum = add(1, 2, 3)TypeError: add() takes 2 positional arguments but 3 were given
在第 5 行,运行时提示:函数 add 有 2 个位置参数,但是调用时传递了 3 个位置参数。

1. 位置参数实例
1.1 函数没有任何位置参数
def hello_world():print('hello')print('world')hello_world()
程序运行输出如下:

hello
world
1.2 函数有 1 个位置参数
def hello_world(n):for i in range(n):print('hello world')hello_world()
程序运行输出如下:

hello world
hello world
hello world
1.3 函数有 2 个位置参数
def hello_world(n, string):for i in range(n):print(string)hello_world(n, 'HELLO WORLD')
程序运行输出如下:

HELLO WORLD
HELLO WORLD
HELLO WORLD
2. 默认参数
2.1 概述
调用函数时,“传递的参数” 需要与 “函数定义的参数” 一一对应,例如:

def add_student(name, age, city):print(name)print(age)print(city)add_student('tom', , 'nanjing')
在第 1 行,定义函数 add_student,函数定义了 3 个参数

在第 5 行,调用函数 add_student,传递了 3 个参数

程序正常运行,输出结果如下:

tom
10
nanjing
如果 “传递的参数个数” 少于 “函数定义的参数个数”,程序会报错,例如:

def add_student(name, age, city):print(name)print(age)print(city)add_student('jerry', )
在第 1 行,定义函数 add_student,函数定义了 3 个参数

在第 5 行,调用函数 add_student,传递了 2 个参数

程序运行时,报错如下:

Traceback (most recent call last):
  File add_student.py, line 5, in <module>
    add_student('jerry', 12)
TypeError: enroll() missing 1 required positional argument: 'city'
在定义函数时,可以为参数提供一个缺省值,如果传递参数时,可以忽略部分参数,举例如下:

def add_student(name, age, city = 'nanjing'):print(name)print(age)print(city)add_student('jerry', )
在第 1 行,定义函数 add_student,函数定义了 3 个参数

参数 name 和参数 age 是位置参数

参数 city 是缺省参数,该参数的缺省值是 'nanjing’

在第 5 行,调用函数 add_student,传递了 2 个参数

参数 name 被设定为 ‘jerry’

参数 age 被设定为 12

调用函数时没有传递参数给 city,因此参数 city 被设定为缺省值 ‘nanjing’

程序正常运行,输出结果如下:

tom
10
nanjing

2.2 简化函数调用
现在需要多次调用 add_student 对一批学生进行处理,可以使用如下代码:

def add_student(name, age, city):print(name)print(age)print(city)add_student('tom', , 'nanjing') add_student('jerry', , 'nanjing') add_student('mike', , 'nanjing') add_student('john', , 'nanjing') add_student('jobs', , 'beijing')
在第 6 行到第 10 行,新增 5 个学生 tom、jerry、mike、john、jobs

大部分学生来自于相同的城市,极个别学生来自于外地城市

使用默认参数,可以简化函数的调用,尤其是在函数需要被频繁调用的情况下。因为大部分学生来自于 nanjing,可以为参数 city 设定一个默认值 nanjing,如下所示:

def add_student(name, age, city=nanjing):print(name)print(age)print(city)add_student('tom', ) add_student('jerry', ) add_student('mike', ) add_student('john', ) add_student('jobs', , 'beijing')
在第 6 行到第 10 行,新增 4 个学生 tom、jerry、mike、john,这 4 个学生来自于相同的城市 ‘nanjing’,调用函数 add_student 时不需要的传递参数 ‘nanjing’

在第 10 行,新增 1 个学生 jobs,该学生来自于 beijing,调用函数 add_student 时需要的传递参数 ‘beijing’

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章