Python函数参数(必选、默认、可变、关键字)

Python函数参数(必选、默认、可变、关键字),第1张

概述Python函数参数(必选、默认、可变关键字) 【参考】:https://blog.csdn.net/pql925/article/details/80999086 1.必选参数必选参数,即使用普通变量标识符标识形参,没有默认赋值或*星号。defpower2(x):returnx*xdefpower3(x):returnx*x*xdefpower(x,n): Python函数参数(必选、默认、可变、关键字)

 

【参考】:https://blog.csdn.net/pql925/article/details/80999086

 

1. 必选参数

必选参数,即使用普通变量标识符标识形参,没有默认赋值或*星号。

def power2(x):    return x*xdef power3(x):    return x*x*xdef power(x,n):    return x**npower2(5)## 25power3(5)## 125power(5,2)## 25power(5)Traceback (most recent call last):  file "<stdin>", line 1, in <module>TypeError: power() missing 1 required positional argument: 'n'

每个必选参数,在函数调用时,都必须要指定实参对象,如果未指定或少于必选形参个数,则会报错。

必选参数,必须放在其他类型的参数之前,即形参列表的最前面。

 

2. 参数传递

调用函数时,可以按位置依照形参顺序依次传递实参,也可以使用形参赋值的格式,将实参与形参绑定。

参数传递的本质是,实参元组到形参元组的赋值。

位置传递,按照形参顺序依次传递实参

形参绑定,通过赋值语句将实参传递给对应的形参

混合传递,位置实参必须与形参位置对应,形参赋值可以打乱顺序,但不能影响位置实参与形参的对应关系

power(5,2)## 25power(2,5)## 32power(n=5,x=2)## 32>>> power(n=5,2)  file "<stdin>", line 1    power(n=5,2)               ^SyntaxError: positional argument follows keyword argument>>> power(5,x=2)Traceback (most recent call last):  file "<stdin>", line 1, in <module>TypeError: power() got multiple values for argument 'x'

 

3. 默认参数

默认参数,必须放在必须参数之后。在调用函数时,可以给默认参数传递形参,也可以不传递,还可以

def power(x,n=2):    return x**npower(5)## 25def enroll(name, gender, age = 18, city = 'Beijing'):    s = "name: %-10s , gender = %-6s , age : %d , city = %s" %(name,gender,age,city)    print(s)enroll("li", "Male", 30)## name: li         , gender = Male   , age : 30 , city = Beijingenroll("li", "Male", 30, 'Tianjin')## name: li         , gender = Male   , age : 30 , city = Tianjinenroll("li", "Male", city = 'Tianjin')## name: li         , gender = Male   , age : 18 , city = Tianjin

可以通过形参赋值形式,不按顺序提供参数。

 

4. 可变参数

在形参变量前面加上*单星号,表示此形参可接收的实参个数可变,形参赋值为元组类型。

def sumall(*nums):    print("nums = ",nums)    print("Type = ",type(nums))    return sum(nums)>>> sumall(1,2,3,4)nums =  (1, 2, 3, 4)Type =  <class 'tuple'>10>>> ln = [1,2,3,4]  # ln =(1,2,3,4)>>> sumall(*ln)nums =  (1, 2, 3, 4)Type =  <class 'tuple'>10def sumall_base(base, *nums):    print("base = ",base)    print("nums = ",nums)    print("Type = ",type(nums))    return base + sum(nums)>>> sumall_base(100,1,2,3,4)base =  100nums =  (1, 2, 3, 4)Type =  <class 'tuple'>110>>> ln = [1,2,3,4]  # ln =(1,2,3,4)>>> sumall_base(100,*ln)base =  100nums =  (1, 2, 3, 4)Type =  <class 'tuple'>110

实参和形参都是元组类型,通过实参到形参的元组赋值完成参数传递。*星号在形参和实参中的作用:

形参(*num),将接收到的实参元组赋值给形参

实参(*ln),将实参变量引用的列表或元组,转为实参元组,将元组对象直接传递给形参。

 

5. 关键字参数

当形参变量的名称和个数不确认时,可以使用关键字参数,将传递来的形参和实参,转换为一个字典,赋值给关键字形参。

在形参变量前面加上**双星号,可以定义一个关键字参数。

也可以使用一个字典实参,给函数传递参数,给字典实参前加上**双星号,可以直接将字典对象传递给形参。

def student(ID,name,**attr):    print("ID : ",ID)    print("name : ",name)    for k in List(attr):        print("%s : %s" %(str(k),str(attr[k])))>>> student(1,'li',age=16)ID :  1name :  liage : 16>>> d = {"age":16}>>> student(1,'li',**d)ID :  1name :  liage : 16
总结

以上是内存溢出为你收集整理的Python函数参数(必选、默认、可变、关键字)全部内容,希望文章能够帮你解决Python函数参数(必选、默认、可变、关键字)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1184972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存