函数传参
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数传参相关的知识,希望对你有一定的参考价值。
python函数参数传递的方式:- 位置传参
- 序列传参
- 关键字传参
- 字典关键字传参
位置传参: position argument
实际调用传递参数(实参)的对应关系与形式参数(形参)的对应关系是按位置依次对应的
示意:
def myfun(a, b, c):
pass
^ ^ ^
| | |
myfun( 1, 2, 3)
myfun(100, 200, 300)
示例见:argument_give.py
序列传参
序列传参是指在函数调用过程中,用*将序列拆解后按位置进行传递的传参方式
示例:
def myfun1(a, b, c):
pass
s1 = [10, 20, 30]
关键字传参 keyword argument
关键字传参是指传参时,按着形参的名称给形参赋值
实参和形参按名称进行匹配
示例见: keyword_argument.py
字典关键字传参:
是指实参为字典,将字典用 拆解后进行关键字传参
示例:
def myfun1(a, b, c):
pass
d1 = {"c":33, "b":22, "a":11}
myfun1(d1)
说明:
- 字典的键名和形参名必须一致
- 字典的键名必须为字符串,且键名附合标识符规则
- 字典的键名要在形参中存在
函数的综合传参
函数的传参方式在能确定形参能唯一匹配到相应实参的情况,可以任意组合
说明:
位置传参和序列传参要先于关键字传参和字典关键字传参
示例:
def myfun1(a, b, c):
pass
myfun1(100, (200,300))
myfun1([100, 200], 300)
myfun1([100], [200, 300])
myfun1(100, c=3, b=2)
myfun1(*[100], {‘c‘:3, ‘b‘:2})
myfun1({‘c‘:3, ‘b‘:2}, a=100)
其它组合同学们自己尝试
错误传参:
myfun1(c=3, b=2,100)
可变类型作为函数的实参
当一个可变类型作为函数的实参数传入时,此对象可以在函数内将其改变.通常用来函数返回多个类型的数据
示例:
见 variable_argument.py
练习:
写一个函数read_numbers, 在函数内部用 input读取一些整数
把所有的偶数放入到列表even中
把所有的奇数放入到列表odd中
函数原型 如下:
def read_numbers(o, e):
...
odd=[]
even=[]
read_numbers(odd, even)
print("第一次读取后", odd, even)
read_numbers(odd, even)
print("第二次读取后", odd, even)
函数的缺省参数
语法
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, ...):
语句
示例见 :
default_args.py
说明:
缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数
如:
def test_fn(a, b=10, c): # 此函数是错的
pass
练习:
写一个类似于range() 的函数myrange,此函数返回生成整数的列表.
myrange函数可以用1个,2个或3个参数来调用
def myrange(.....):
.... # 此处不能用range函数
for x in myrange(10):
print(x)
for x in myrange(5, 10):
print(x)
for x in myrange(5, 10, 2):
print(x)
函数的文档字符串:
函数内,第一行没有赋值给任何变量的是文档字符串
此文档字符串可以用 >>> help(函数名) 查看
示例:
def myfun(a, b, c=0):
"""myfun函数用于测试文档字符串
此函数有三个参数a,b,c
狗年快乐!
"""
pass
函数的属性
name属性
用来记录函数名
说明:
以双下划线"__"开头, 以下划线结尾的的标识符通常代表python的特殊变量(属性)
示例:
def abc():
pass
fn = abc
print("fn绑定的函数名是", fn.name)
print("abc绑定的函数名是", abc.name)
doc属性:
doc属性用于记录文档字符串:
示例:
def cba():
"我是cba函数的文档字符串!!!"
pass
>> help(cba)
>> print("cba.doc")
>> cba.doc
以上是关于函数传参的主要内容,如果未能解决你的问题,请参考以下文章