Python-函数的参数

一、参数规则

1.函数参数的使用

  • 在函数名的小括号填写参数
  • 多个参数使用,分隔

2.上家伙

#!/usr/bin/python
# -*- coding:utf-8 -*-
"""
@Time: 2021-09-20 13:02
@Target: 定义函数求和
@Author: dingkw
"""

# 定义函数
def sum_num(num1,num2):
    count  = num1 + num2
    print(f"求和结果为:{count}")

# 用户在控制台输入数字
num_1 = int(input("请输入数字1:"))
num_2 = int(input("请输入数字2:"))

# 调用函数:传入参数num1和num2
sum_num(num_1,num_2)

3.参数的作用

增加函数的复用性,可以针对不同数据同一套处理逻辑

二、形参和实参

1.形参种类

形式参数:即形参定义函数时,小括号里面的参数

  • 默认值形参
  • 位置形参
  • 关键字形参
  • 个数可变的位置形参
  • 个数可变的关键字形参

2.实参种类

实际参数:即实参调用函数时,小括号里面的参数

  • 默认值实参
  • 位置实参
  • 关键字实参
  • 可变的位置实参
  • 可变的关键字实参

三、参数实例

形参和实参

# 形参为name
def say_hello(name):
	print(f"{name}说你好")
# 实参为"dingkw"
say_hello("dingkw")

位置参数

# a,b,c为位置形参
def fun1(a, b, c):
    print(a, b, c)
# 1,2,3为位置实参
fun1(1,2,3)

关键字参数

# b,c为关键字形参
def fun2(a, b=2, c=3):
    print(a, b, c)
# 1为位置实参
fun2(1)
# 1为关键字实参
fun2(a=1)
# 1,6,8为关键字实参
fun2(a=1, b=6, c=8)·

混搭_位置参数与关键字参数

# 函数fun_fix即存在位置形参,也存在关键字形参
# 顺序必须:位置形参>关键字形参
def fun_fix_1(a, b=2, c=3):
    print(a, b, c)
fun_fix_1(1)

强制位置参数

# 在位置参数后,加入/
def fun7(a, b, /):
    print(a,b)
# 必须传入"位置实参",否则报错
fun7(1,2)

强制关键字参数

# 在位置参数前,加入*
def fun3(*, a, b, c):
    print(a, b, c)
# 必须传入"关键字实参",否则报错
fun3(a=1, b=2, c=3)

默认参数

# b,c为默认参数
def fun4(a, b=2, c=3):
    print(a, b, c)
# b,c存在默认参数,只需要输入a参数值
fun4(1)
# b,c存在默认参数,可改变默认值
fun4(1,6,8)

个数可变的位置参数

# 在参数前加入*
# 顺序必须:位置形参>个数可变的位置形参
def fun5(a, *other):
    print(a, other)
# 调用函数,输出为 1 (2,)
# 说明传入到*other参数里的值为元组
fun5(1,2)
# 调用函数,输出为 1 (2, 3)
fun5(1,2,3)

个数可变的关键字参数

def fun6(a, **names):
    print(a,names['student'])
    print(a,names['teacher'])
# 会报错,缺少teacher
fun6(1, student="dingkw")
# 正常执行
# 1 dingkw
# 1 mi
fun6(1, student="dingkw", teacher="mi")
# 正常执行,gada忽略
# 1 dingkw
# 1 mi
fun6(1, student="dingkw", teacher="mi", gada='123')

四、解包

解包_列表

def fun8(msg, name1, name2, name3):
    print(msg, name1, name2, name3)
# 定义一个列表
names = ["小明", "小红", "小黑"]
# 一般操作
fun8("信息", names[0], names[1], names[2])
# 解包操作
# 在列表前,加入*
fun8("信息", *names)

解包_元组

def fun9(msg, name1, name2, name3):
    print(msg, name1, name2, name3)
# 定义一个元组
names = ("小明", "小红", "小黑")
# 一般操作
fun9("信息", names[0], names[1], names[2])
# 解包操作
# 在元组前,加入*
fun9("信息", *names)

解包_字典

def fun10(msg, name1, name2, name3):
    print(msg, name1, name2, name3)
# 定义一个字典
names = {"name1":"小明", "name2":"小红", "name3":"小黑"}
# 一般操作
fun10("字典信息", names["name1"], names["name2"], names["name3"])
# 解包操作
fun10("字典信息",**names)


posted @ 2021-09-20 13:11  难删亦删  阅读(288)  评论(0)    收藏  举报