Python函数——向函数传递信息

1.定义函数

函数是带名字的代码块, 用于完成具体的工作
定义函数需要用到关键字def
使用"def ‘函数名’:"的格式,以下一个缩进的每一行都可以是函数内容
可以看一下下面的简单的例子

def greet_user():  # 此处记得以冒号结尾
    # 本函数具有问候作用
    print("Hello! ")  # 缩进部分是函数内的内容可以是多行


greet_user()  # 要想使用函数还要进行函数的调用

1.1向函数传递信息
可在函数定义的部分的括号内添加变量使得向函数传递信息

def repeat(message_fun):
    print(message_fun)


message = input("看我用函数学你说话")
repeat(message)

在函数定义中的变量叫做形式参数比如上面的message_fun
而调用函数是使用的message则是实际参数

2.传递实参

实参和形参在括号内的顺序是一一对应的

def fun_2(function_1, function_2):
    print(function_1 * 0, function_2 * 100)


num_1 = 12
num_2 = 11
fun_2(num_1, num_2)  # 实参num_1向形参function_1传递信息, 实参num_2向形参function_2传递信息


# 结果为0 1100
# 注意, 实参的顺序很重要

2.1关键字实参


def describe_your_pet(animal_type, pet_name):
    print(f"我有一只{animal_type}")
    print(f"我的{animal_type}名字叫{pet_name}")


describe_your_pet(animal_type='小猫', pet_name='小碗儿')

关键字实参是传递给函数的名称值对, 因为直接在实参中将名称和值关联起来, 所以使用关键字实参时并不需要在意其顺序

2.2默认值
编写函数时, 可以给形参指定默认值, 当调用函数时没有给指定了默认值的形参编写实参时将使用默认值, 否则使用实参传递的数据

def describe_film(film_name_fun, film_type_fun='narration'):
    print(f"我最喜欢的电影叫{film_name_fun}, 他的类型是{film_type_fun}")


film_name = 'EVA'
describe_film(film_name)

默认参数要放在非默认参数后面, 否则系统会报错

3.返回值

函数也可以处理一些数据并返回一个或一组值, 函数返回的值称为返回值

def plus_function(fun_num_1, fun_num_2):  # 如何优雅的求两个数的和
    sum_1 = fun_num_1 + fun_num_2
    return sum_1  # 返回值


num_1, num_2 = 1, 1
print(plus_function(num_1, num_2))

3.1让实参变为可选的
就是给某些形参赋予默认值, 被赋予默认值的形参要排在未被赋值的实参之后

def plus_print_function(fun_num_1, fun_num_2=0):  # 论如何优雅的实现加法和打印
    if fun_num_2:
        return fun_num_1 + fun_num_2
    else:
        return fun_num_1


num_1, num_2 = 1, 1
print(plus_print_function(num_1))  # 当没有num_2时则直接输出
print(plus_print_function(num_1, num_2))  # 当有num_2时则求两者加法

3.2返回字典
函数可以返回任何类型的值,包括列表和字典

def build_person(fun_name, fun_gender):
    person = {'name': fun_name, 'gender': fun_gender, }
    return person


person = build_person('行秋', '男')
print(person)

# 使用函数为字典添加键值对
def build_person_1(fun_name, fun_gender, fun_birthday=None):
    fun_person_1 = {'name': fun_name, 'gender': fun_gender, }
    if fun_birthday:
        fun_person_1['birthday'] = fun_birthday
    return fun_person_1


person_1 = build_person_1('迪卢克', '男', '4.30')  # 可以让函数接受可选值
print(person_1)

3.3结合使用函数和循环

def get_formatted_name(first_name,last_name):
    full_name = f"{first_name} {last_name}"
    return full_name.title()


f_name = ['jimi', 'jhon']
l_name = ['hendrix', 'hooker']
for f, l in f_name, l_name:  # 诶呦呦, 原来for循环还带这么玩的呀
    print(f"Hello! {get_formatted_name(f, l)}")

4.关于最后一个例子的补充

最后一个例子我发现了一个for循环可以遍历多个列表
经过实验, 我发现即便可以用for循环同时遍历多个列表, 也是有条件的
1.遍历的列表容量要一致
2.如果是两个列表每个列表的容量必须是2, 如果是三个列表, 每个列表的容量必须是3, 以此类推
3.遍历的顺序并非按照代码编写的顺序, 而是依次遍历各个列表

list_1 = [1, 2, 3, 4]
list_2 = [5, 6, 7, 8]
list_3 = [9, 10, 11, 12]
list_4 = [13, 14, 15, 16]
for l1, l2, l3, l4 in list_1, list_2, list_3, list_4:
    print(l1, l2, l3, l4)
'''
输出结果为
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
不是想象的
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
'''

总之这种做法容易报错不建议使用
希望能帮到你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值