Python之函数的参数

一:函数的参数分为两大类:

1、形参:

# 在定义函数时,括号内定义的变量名,称之为形式参数,简称形参=》变量名
def func(x,y):
    x=1
    y=2
print(x)
print(y)

2、实参:

# 在调用函数时,括号内传入的值,称之为实际参数,简称实参=》变量值
func(1,2)

二:在python中参数的种类:

1、位置参数:

(1)位置形参:

#	在函数定义阶段按照从左到右的顺序依次定义形参(变量名),称之为位置形参

#  特点:必须被传值

def func(x,y):
    print(x,y)

func(1,2)
func(1) # 少一个不行
func(1,2,3) # 多一个也不行

(2)位置实参:

# 在函数调用阶段按照从左到右的顺序依次定义实参(传入的变量值),称之为位置实参
# 特点:按照位置传值,一一对应
func(1,2,3,4,5,6)

2、关键字实参:

# 在函数调用阶段按照key=value的形式为指定的形参名传值,该形式称之为关键字实参
# 特点:在传值时可以完全打乱顺序,但是仍然能够指名道姓地为指定的形参传值
def func(name, age, ):
    print(name, age, )


func("egon",18)
func(18,"egon")

func(age=18,name="egon")

# 注意:可以混用位置实参与关键字实参,但是
# 1 位置实参必须放在关键字实参的前面
# 2 不能为同一个形参重复赋值
def func(name, age, salary):
    print(name)
    print(age)
    print(salary)


func('egon',salary=3.1,age=18)
func('egon',salary=3.1,18) # 错误
func('egon', 18, salary=3.1)  # 错误

func('egon',18,age=19,salary=3.3)

3、默认形参:

# 在函数定义阶段就已经为某个形参赋值,该形参称之为有默认值的形参,简称默认形参
# 特点: 定义阶段就已经被赋值意味着在函数调用阶段可以不用为其赋值
def func(x,y=2):
    print(x,y)

func(1)
func(1,33333)

# 注意:
# 1 默认形参应该放在位置形参的后面
def func(y=2,x): # 错误
    pass

# 2 默认形参的值通常应该是不可变类型

def func(name,hobby,hobbies=[]):
    hobbies.append(hobby)
    print("%s 的爱好是:%s" %(name,hobbies))

func("egon",'play')
func('lili','music')
func("jack",'read')


def func(name,hobby,hobbies=None):
    if hobbies is None:
        hobbies=[]
    hobbies.append(hobby)
    print("%s 的爱好是:%s" %(name,hobbies))

func("egon",'play')
func('lili','music')
func("jack",'read')

# 3 默认形参的值只在函数定义阶段被赋值一次,函数定义之后的改变对默认形参没有影响
m=333
def func(x,y=m): # y=333
    print(x,y)

m=44444
func(1)

def register(name,age,gender='male'):
    print(name)
    print(age)
    print(gender)

register('egon',18,)
register('jack',20,)
register('tom',21,)
register('郑秀文',18,'female')

4、命名关键字形参(**)

def func(x, y=222, *args, n=777,m, **kwargs):  # m,n必须按照关键字实参的格式为其赋值
    print(x)  # 1
    print(y)  # 2
    print(args)  # (3,4,5)
    print("m===>", m)
    print("n===>", n)
    print(kwargs)


func(1,2,3,4,5,6666666)
func(1,2,3,4,5,m=6666666)
func(1, 2, 3, 4, 5, n=88888,m=6666666, a=11, b=22, c=33)

猜你喜欢

转载自blog.csdn.net/weixin_48283789/article/details/107470539
今日推荐