函数(二)- 参数

函数的参数

# 需求定义一个函数,给定一个数字,遍历从1到该数字之间的所有数字
num = int(input("请输入一个整数:"))
def func(n):
    """打印1,n之间的所有数字"""
    for i in range(1,n+1):
        print(i)
        
func(num)


# 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
def func2(num1,num2):
    """打印num1到num2之间的数字"""
    for i in range(num1,num2+1):
        print(i)
    
 
func2(10,100)

1.位置参数

实参传递的顺序按照形参定义的顺序进行传递的传参方式

# 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
def func2(num1,num2):
    """打印num1到num2之间的数字"""
    for i in range(num1,num2+1):
        print(i)

# 位置参数传递
func2(10,100)

2.关键字参数(函数调用时)

忽略了原本的位置关系,明确指出形参和实参的对应关系:

格式:函数名(形参=实参)

# 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
def func2(num1,num2):
    """打印num1到num2之间的数字"""
    for i in range(num1,num2+1):
        print(i)
    
# 关键字参数
func2(num1=10,num2=100)
func2(num2=100,num1=10)

3.默认参数(定义函数体现)

在定义函数时,可以对某些形参设定默认值,有默认值的参数,在调用时可以不传入,如果不传入就使用默认值。优先使用传入的值。

使用场景:某个参数变化比较小,就可以指定一个默认值。

学过包含默认值的方法:列表中的pop(index),字符串中的stirp()

# 用户输入个人信息,函数打印个人信息:没有默认值
def print_info(name,age,gender):
    """打印信息"""
    print(f"我叫{name},我今年{age}岁,我的性别是{gender}。")
    
print_info('zs', 20, "男")
print_info('ls', 21, "男")
print_info('ww', 22, "男")
print_info('ml', 19, "男")


# 用户输入个人信息,函数打印个人信息:使用默认值
def print_info(name,age,gender="男"):
    """打印信息"""
    print(f"我叫{name},我今年{age}岁,我的性别是{gender}。")

# 不传入包含默认值的参数
print_info('zs', 20,)
print_info('ls', 21,)
print_info('ww', 22,)
print_info('ml', 19,)

4.可变参数(*args,**kwargs)

1 在定义函数时,函数参数很多

2 在定义函数时,不确定函数的数量

  • 元组类型可变参数(*args):只能通过位置参数传递
    def print_info2(*args):
        """介绍个人信息"""
        print(args)
        for i in args:
            print(i)
        
    # 不善言辞
    print_info2()
    
    # 正常
    print_info2('zs',20,180)
    print_info2(name='zs', age=20, height = 180)  # 错误,不能使用关键字方式传递
    
    # 善谈
    print_info2('ls',20,175,70,"郑州","吃")
    
    # 定义元组
    t = (1,4,5,6,7,8,8,9,9,0,0)
    print_info2(t)  # 传入一个元素:把元组当做一个整体
    print_info2(*t)  # 传入多个元素:将元组打散
    
  • 字典类型可变参数(**kwargs)

    只能通过关键字参数方式传递

    def print_info3(**kwargs):
        """介绍个人信息"""
        print(kwargs)
        
    print_info3('zs',20,180)  # 错误
    print_info3(name='zs', age=20, height = 180)  # 正确
    

定义万能参数

def func(a, b, c=20, *args, **kwargs):
    print(a,b,c)  # 1 2 34
    print(args)   # (4,)
    print(kwargs) # {name:zs,age:20}

func(1, 2, 34, 4, name='zs', age=20)


def func2(a, b, *args,c=20, **kwargs):
    print(a,b,c)  # 1 2 20
    print(args)   # (34,4)
    print(kwargs) # {name:zs,age:20}

func2(1, 2, 34, 4, name='zs', age=20)

总结:

  • 在定义函数时:位置参数-- 默认参数和*args---**kwargs
  • 在调用函数时:位置参数---关键字参数
posted @ 2020-12-02 19:49  小杜打醋尢买布  阅读(161)  评论(0编辑  收藏  举报