Python函数参数传参的种类
Python中函数参数定义及调用函数时传参大体可分必备参数、关键字参数、默认可省略参数、不定长元组参数、不定长关键字参数等,下面通过函数定义及调用上的不同情况深入解析这些中参数的不同及应用场景。
为了更好的理解不同参数的具体意义,所以下面演示代码中,使用的参数数量较多。具体是一个调用MySQL数据库配置参数的函数所需要的参数,我们用这个来演示不同类型的特点及适用方法,了解每种类型的应用场景及优缺点。
必备参数__仅赋值传参
必备参数,就是在调用函数的时候,定义的参数要全部都有赋值,否则执行的时候代码会报错。
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 演示获得数据库配置参数,使用必备参数
def demo_get_conf1(user, pw, host, port, db, charset):
"打印得到的数据库配置"
print('host: ', host)
print('port: ', port)
print('user: ', user)
print('pw: ', pw)
print('db: ', db)
print('charset: ', charset)
demo_get_conf1('root', '1234', '127.0.0.1', '3306', 'tests', 'utf8')
上述代码中,调用demo_get_conf1函数的时候,定义的所有参数都必须传递,并且要按照规定的顺序传递,否则函数体内得到的也是错误的。以上代码控制台输出:
host: 127.0.0.1
port: 3306
user: root
pw: 1234
db: tests
charset: utf8
这也是我们希望得到的正确结果。
下面我们把上述代码最后一行调用的前两个参数(“root"和"1234”)对调一下:
demo_get_conf1('1234', 'root', '127.0.0.1', '3306', 'tests', 'utf8')
执行后控制台输出:
host: 127.0.0.1
port: 3306
user: 1234
pw: root
db: tests
charset: utf8
很显然,得到的 user 变成了 1234,pw 变成了 root,也就是说是完全按照位置来对应函数定义时的参数变量,所以传参的时候,顺序不能错,参数比较多的时候,就不容易记住顺序了。那么Python还给大家一种传递方式,同样是上面的函数,可以不用按顺序传参,请看下节“必备参数__键值对传参”。
必备参数__键值对传参(关键字参数)
同样是必备参数,但是在代用函数传参的时候,可以直接使用键值对的方式,看下面演示代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 演示获得数据库配置参数,使用必备参数
def demo_get_conf1(user, pw, host, port, db, charset):
"打印得到的数据库配置"
print('host: ', host)
print('port: ', port)
print('user: ', user)
print('pw: ', pw)
print('db: ', db)
print('charset: ', charset)
demo_get_conf1(
charset='utf8',
pw='1234',
user='root',
host='127.0.0.1',
port='3306',
db='tests')
控制台输出:
host: 127.0.0.1
port: 3306
user: root
pw: 1234
db: tests
charset: utf8
函数定义还是与上例一样,只是调用函数的时候,参数传递使用了键值对,键名就是参数定义时的变量名,这样就可以不用理会顺序,只要记住键名(参数变量名)就可以了。
但是这毕竟是必备参数,所有的参数都要传递,否则会报错,例如将调用修改成:
d