【参考】: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函数参数(必选、默认、可变、关键字)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)