每日python,第十六篇,函数的运用

228 阅读4分钟

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

 这里是清安,函数上偏不知道各位是否有学会呢,本章是函数下章,也是属于比较重要的一篇,所以,各位,仔细学洛。V:qing_an_an

向函数传递列表

def get_list(names):
    for name in names:
        # 定义这个变量是为了打印名字的时候首字母可以大写
        l_name = f"你好,{name}"
        print(l_name.title())
# 这里定义一个列表
user_name = ['tom','tim','bob']
# 调用函数,使用列表的值
get_list(user_name)

        话不多说,我们首先上了一个例子,这个例子中l_name这里,小伙伴有疑问就自己动手试试,不要这个变量看看能不能首字母大写哦,也可以试试其他的方法首字母大写哦。

在函数中修改列表

def full_animals(animals,make_animals):
    # 循环动物列表
    while animals:
        # 使用列表方法方法,一个个移除
        new = animals.pop()
        print(f"被运走的动物有:{new}")
        # 将移除的重新添加到新的动物列表中
        make_animals.append(new)
    # 循环遍历添加进去的动物
# def make_full_animals(make_animals):
    for every_animals in make_animals:
        print(f"被添加进来的动物有:{every_animals}")

animals = ['cat','dog','bird','snake']
make_animals = []
full_animals(animals,make_animals)
# make_full_animals(make_animals)

        这个示例就涉及到我们之前学习的列表的,这个例题还是很不错的哦 ,小伙伴们看看能理解吗。

        这里我们也可以添加一个函数,添加在for循环前面哦,不过小北这里觉得可能有点多余,所以我就注释掉了。这里小伙伴们可能看着有点犯迷糊,看我将它分解为不是函数体制的,小伙伴一对比就明白了。

animals = ['cat', 'dog', 'bird', 'snake']
make_animals = []
# 循环这个动物列表
while animals:
    # 使用列表方法方法,一个个移除
    new = animals.pop()
    print(f"被运走的动物有:{new}")
    # 将移除的重新添加到新的动物列表中
    make_animals.append(new)
for every_animals in make_animals:
    print(f"被添加进来的动物有:{every_animals}")

传递任意数量的实参

    首先我们需要明白的一点是什么样的格式才能进行任意数量的实参传递呢,看例子吧:

def new_name(*name):
    print(name)
new_name('张三','李四','王五')

    我们定义了一个带有*号的形参,这个形参的意思就是会让python创建一个名为name的空元组,如何通过调用函数将实参写入空元组中。

小伙伴也可以换一种输出方式:用for循环一个个输出出来

def new_name(*name):
    for names in name:
        print(names)
new_name('张三','李四','王五')

        这个就不解释了,小伙伴应该秒懂,不懂得看我for循环介绍哦。实参我们是可以组合起来用的哦。

位置实参与任意数量实参

def new_name(year,*name):
    for names in name:
        print(f"我的名字叫{names},今年{year}岁了")
new_name(12,'张三','李四','王五')

        这里值得注意的地方就只是传参的位置了,不管是默认形参还是任意数量形参,都只能放在形参的最后面哦

任意数量的关键字实参

        这个就比较有趣,且重要了,它的方式是**,意思组建一个空字典哦,并且写法也有一些不一样。

def new_name(first_name,last_name,**names):
    # 这里的[]里面的内容可以随意写什么样的字符串哦
    names['first_name'] = first_name    #1
    names['last_name'] = last_name    #2
    # 将值返回到列表,这里的意思就是此路不同,就此打住
    return names
# 这里有两种传值方式
new_names = new_name('zhang','san',lisi = 'lisi',wangwu = 'wangwu')
print(new_names)

解惑: **names是创建一个空字典,实则我们这里定义的函数new_name只有两个形参,往下看#1跟#2这里是字典传值的方式。后面的实参传入就似乎传到names字典中,然后传到对应的值里,我们呢给定实参的时候有两种方式,一种是直接给定形参的值,这是位置实参传值,后面的才是关键字实参传值,我们在pint里重新定义了键,并且给定了值,python在后台将值传入字典中,并按照格式一一对应的写入,最后得到我们的结果哦。

        注:**names也可以理解为python在收集任意数量的关键字实参