Python函数参数传参的种类,不同类型参数的区别及应用场景例举

Python函数参数传参的种类

Python中函数参数定义及调用函数时传参大体可分必备参数、关键字参数、默认可省略参数、不定长元组参数、不定长关键字参数等,下面通过函数定义及调用上的不同情况深入解析这些中参数的不同及应用场景。

为了更好的理解不同参数的具体意义,所以下面演示代码中,使用的参数数量较多。具体是一个调用MySQL数据库配置参数的函数所需要的参数,我们用这个来演示不同类型的特点及适用方法,了解每种类型的应用场景及优缺点。

必备参数__仅赋值传参

必备参数,就是在调用函数的时候,定义的参数要全部都有赋值,否则执行的时候代码会报错。

#!/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')

执行后控制台输出:

在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
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

函数定义还是与上例一样,只是调用函数的时候,参数传递使用了键值对,键名就是参数定义时的变量名,这样就可以不用理会顺序,只要记住键名(参数变量名)就可以了。

但是这毕竟是必备参数,所有的参数都要传递,否则会报错,例如将调用修改成&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,函数参数递使用的是"引用递"的机制。这意味着当我们将一个变量作为参数递给函数时,实际上是将该变量的引用递给了函数,而不是变量的值本身。这样,函数内部对参数进行的修改会影响到原始变量的值。 具体而言,当我们调用函数时,函数会创建一个新的局部变量来引用递进来的参数。这个局部变量与原始变量指向相同的内存地址,也就是说它们引用的是同一个对象。因此,如果在函数内部修改了这个局部变量的值,那么原始变量的值也会发生相应的改变。 需要注意的是,对于不可变类型参数(如数字、字符串和元组),函数内部对参数的修改不会影响到原始变量的值,因为不可变类型的对象是不能被修改的,修改实际上是创建了一个新的对象。但是对于可变类型参数(如列表和字典),函数内部对参数的修改会直接影响到原始变量的值。 总之,Python函数参数递采用的是引用递的机制,这意味着函数内部对参数的修改可能会影响到原始变量的值,这个特点在使用函数时需要特别注意。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【Python核心】参数递原理](https://blog.csdn.net/lluozh2015/article/details/118958046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Python 函数函数定义、调用、](https://blog.csdn.net/SeeTheWorld518/article/details/48089235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值