3、特点:函数的参数列表中定义x个位置参数,函数调用时就必须传入x个参数,参数数量必须保持一致
4、举例说明↓
定义一个temp函数,它包含3个位置参数,调用temp函数时,必须传入3个参数
def temp(first,second,third):
print(first)
print(second)
print(third)
调用temp函数的代码
temp("hi","ni","hao")
temp(first="hi",second="ni",third="hao")
my_str = ("hi","ni","hao")
temp(*my_str)
5、位置参数的使用率:Python代码中最常使用的参数就是位置参数了
接下来学习一下默认参数
1、中文别称,同样指的都是默认参数
a、可选参数
b、默认值参数
2、英文名:Default Argument Values或者optional arguments
3、个人理解:将默认参数称为具有默认值的位置参数更为准确,原因请往下继续学习
4、特点:调用函数时可省略参数
5、举例说明:定义一个temp函数,此函数定义了2个默认参数
def temp(first="hi",second="man"):
print(first)
print(second)
调用包含默认参数的temp函数
temp() #省略传入所有参数,函数内会使用默认参数的默认值
temp("我是你哥") #为第一个默认参数传入值,另一个默认参数继续使用默认值
temp("hello","world") #为两个默认参数都传入值
temp(first="喜欢你") #指定一个默认参数使用传入值
调用含有默认参数的函数时,传入的参数,会按照从左到右的顺序被默认参数匹配,这就是我认为默认参数的名字称为具有默认值的位置参数的原因!!!
6、重要警告:默认值只能会执行一次(来自官方)
默认值只执行一次。这条规则在默认值为可变对象(列表、字典以及大多数类的实例)时非常重要。
比如,下面的函数会存储在后续调用中传递给它的参数:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
这将打印出
[1, 2]
[1, 2, 3]
如果你不想要在后续调用之间共享默认值,你可以这样写这个函数:
def f(a, L=None):
if L is not None:
L = []
L.append(a)
return L
官方建议默认参数尽量使用不可变对象!!
1、中文别称,以下都表示可变参数
a、任意参数
b、未知参数
def temp(*args,**kwargs):
print(args)
print(kwargs)
2、可变参数经常使用的变量名
*参数:最常见的变量名是args,看到该变量名,一眼就知道变量args指向一个tuple对象
**参数:最常见的变量名是kwargs,看到该变量名,一眼就知道变量kwargs指向一个dict对象
3、*args在函数定义中出现时的特点
自动收集所有未匹配的位置参数到一个tuple对象中,变量名args指向了此tuple对象
4、**kwargs在函数定义出现时的特点
自动收集所有未匹配的关键字参数到一个dict对象中,变量名kwargs指向了此dict对象
---->可变参数的详细解读请看这篇--->点我
关键字参数
1、函数调用时,指定参数名称,称为关键字参数(别和默认参数混淆,这里是函数调用)
def temp(a,b,c):
print(a)
print(b)
print(c)
temp(1,3,c=99)
temp(a=1,b=2,c=3)
temp(1,b=2,c=100)
2、顺序要求:函数调用时,关键字参数必须在普通参数的后面
temp(100,b=200,c=300)
temp(a=100,32,100) #错误语法,关键字参数不能在普通参数的前面
3、使用字典解包方式传入关键字参数
hi = {"a":100,"b":99,"c":1000}
temp(**hi)
#等同于#
temp(a=100,b=99,c=1000)
4、函数调用时,当剩余的参数全部为关键字参数时,可随意定义顺序
当全部为关键字参数时,调用函数时的参数顺序可随意书写,因为你指定了参数名,但是参数的数量不能少于函数定义时要求的位置参数的数量
temp(c=100,b=38,a=10)
命名关键字参数
1、英文名:Keyword-only parameter
2、特点:必须使用关键字方式传递参数
def only_kw(a,*,b,c)
print(a)
print(b)
print(c)
only_kw(100,b=1000,c=99) #b和c必须使用参数名传递参数
命名位置参数
def only_position(a,b,/)
print(a)
print(b)
函数调用时,必须使用位置参数方式传递参数……,不能再使用关键字参数调用该函数
思考:函数调用时的实际参数有哪些?
函数调用时,只会包括两种实际参数(元组解包对应于普通参数、字典解包对应于关键字参数)
1、普通参数
2、关键字参数
1、希望这篇文章能为所有Python爱好者带来帮助
2、同时我也会不断的巩固自己的知识,一起奋斗吧
转自https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888 记录学习用
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name...
关键字参数:
使用关键字参数会指定参数值赋给哪个形参,调用时所传参数的位置可以任意
*位置参数:可接受任意数量的位置参数;只能作为最后一个位置参数出现,其后参数均为关键字参数
**关键字参数:可接受任意数量的关键字参数;只能作为最后一个参数出现
这几天看Python参数,对于位置参数,关键字参数和命名关键字参数有点蒙,就写了个这个,希望有所帮助吧。
首先介绍一下Python中的dict和truple(后面有用到):
dict的组成方式{'name':'AC','age':24},其中name和age被称为key,在Python交互式运行窗口运行name就会出现AC,可以通过name找到AC(类似字典的查询方式,知道页码,找到对应单词)
文章目录一、位置参数二、关键字参数三、 位置参数和关键字参数混用四、给形参指定默认值
一、位置参数
函数调用时,根据函数定义的参数(形参)的 位置 来传递参数。第1个实参赋值给第1个形参,第1个实参赋值给第2个形参 。。。
def mul(a,b,c):
print(a*b*c)
def welcome(username):
print('欢迎',username,'光临...
Python位置参数和关键字参数
位置参数(positional argument):不带“变量名=”的值,赋给相应位置的局部变量
关键字参数(keyword argument):前面可以加上“变量名=”的值,赋给同名的局部变量
仅位置参数(positional-only):在/之前定义的参数,使用时不能带变量名
仅关键字参数(keyword-only):在*后面定义的参数(或在*args后面定义)。使用时必须带变量名。
位置或关键字参数(positional_or_keyword):在/后面和*前面定义的