Python 函数

— 落花人独立,微雨燕双飞。《临江仙》

一、函数

在执行同一个特定的任务,无需重复编写完成该任务的代码,只需编写完成该任务的函数,然后调用。

# 简单示例
def greet_user():
    '''简单的问候用语'''
    print('你好! 靓仔。')

greet_user() # 调用函数
# 运行输出结果
你好! 靓仔。
  • 关键字 def 告诉python 你要开始定义函数了;
  • 定义的函数名 greet_user,括号是函数完成工作所需的输入信息,可以为空;最终以冒号结尾。
  • 下一行所有的缩进构成函数体;
  • ‘’’ ‘’'称为文档字符串注释,描述函数的作用或使用方式;
  • 要调用函数,依次指定函数名和括号中所需的必要信息。

1.1 向函数传递信息

给定义的函数中加入信息

# 简单示例
def greet_user(user_name):
    '''简单的问候用语'''
    print('你好! %s靓仔。'%(user_name))

greet_user(user_name='乔智')
# 运行输出结果
你好! 乔智靓仔。

1.2 实参和形参

在greet_user(user_name)的定义中:

  • user_name:是个形参,在那里做做样子,搞搞形式;
  • ‘乔智’ 是个实参,是调用函数时,传递给函数的信息。
  • python将实参传递给函数greet_user(),然后储存在形参user_name中。

二、传递实参

响函数传递实参可以是:

  • 位置实参:实参的顺序和形参的顺序相同;
  • 关键字实参:每个实参都由变量名和值组成;
  • 还可以使用列表和字典。

2.1 位置实参

函数调用中每个实参都关联到函数定义的一个形参,基于实参顺序的关联顺序称为位置实参。

# 示例
def describe_age(user_name, age):
    '''简单的年龄描述'''
    print('你好! %s今年%s岁。'%(user_name, str(age)))

describe_age('乔智', 6) # 调用函数
# 上述代码,其中‘乔智’储存在形参user_name中,6储存在形参age中。

describe_age(6,'乔智') # 注意实参的顺序很重要
# 运行输出结果
你好! 乔智今年6岁。
你好! 6今年乔智岁。# 小朋友为啥这么多问号???

2.2 关键字形参

关键字实参是传递给函数的 名称-值 对。直接将名称和值关联起来。

# 示例
def describe_age(user_name, age):
    '''简单的年龄描述'''
    print('你好! %s今年%s岁。'%(user_name, str(age)))

describe_age(user_name='乔智爸爸', age=30)
# 运行输出结果
你好! 乔智爸爸今年30岁。

调用函数时,准确的指出了各个实参对应的形参,通过 = 进行赋值。

2.3 默认值

定义函数时,可以给形参指定默认的值。给定默认值后,调用函数是便可省略该实参。
注意:必须列出没有默认的形参,在列出默认的形参,即没有默认的参数要先输入到函数

# 示例
def describe_pet(pet_name, age, pet_type='猫'):
    '''简单的宠物描述'''
    print('我有一只%s,它叫%s,今年%s岁,未婚。'%(pet_type, pet_name, str(age)))

describe_pet('乔智', 8)
# 运行输出结果
我有一只猫,它叫乔智,今年8,未婚。

上面提供了两个实参:‘乔智’, 8,python默认其为位置实参,把它们分别按顺序关联到形参pet_name, age中,由于形参pet_type用户未输入,所以使用了默认值。

2.4 等效的函数调用

混合使用位置形参,关键字实参和默认值。一般能读懂别人传入的参数就行,建议自己写代码不要太花里胡哨。

# 示例
def describe_pet(pet_name, age, pet_type='猫'):
    '''简单的宠物描述'''
    print('我有一只%s,它叫%s,今年%s岁,未婚。'%(pet_type, pet_name, str(age)))
describe_pet('乔智', 8)
describe_pet('乔智', age=8)
describe_pet('乔智', age=8, pet_type='猫')
describe_pet(age=8, pet_name= '乔智', pet_type='猫')
# 运行输出结果
我有一只猫,它叫乔智,今年8,未婚。
我有一只猫,它叫乔智,今年8,未婚。
我有一只猫,它叫乔智,今年8,未婚。
我有一只猫,它叫乔智,今年8,未婚。

2.5 避免实参错误

  • 没有默认值,忘记输入实参
  • 形参的名称指定错误

三、函数返回值

函数处理一组数据通常有一个或一组返回值,使用 return 语句将值返回到调用函数的代码行。

3.1 返回简单值

# 示例
defget_name(first_name, last_name):
    '''返回你的名字'''
    full_name = first_name + ' ' +last_name
    return full_name
name = get_name('小朱', '佩琦')
print(name)
# 运行输出结果
小朱 佩琦

调用函数的返回值时,需提供一个变量,用于储存返回的值。

3.2 可选的实参

使用默认值让实参变成可选的。

# 示例
def get_name(first_name, last_name, middle_name=''):
    '''返回你的名字'''
    if middle_name:
        full_name = first_name + ' ' + middle_name + ' ' + last_name
    else:
        full_name = first_name + ' ' +last_name
    return full_name.title()
name = get_name('小朱', '佩琦', middle_name= '三世')
print(name)

# 有些是没有中间名字的喔
name = get_name('小朱', '乔智')
print(name)
# 运行输出结果
小朱 三世 佩琦
小朱 乔智

python将空字符读为False,middle_name默认为空字符串,用户没有调用这个形参时便指定为默认值,middle_name便变成了可选择的。

3.3 返回字典

函数可以返回任何类型的值,例如列表、字典等复杂的数据结构。

# 示例
def build_pet(first_name, last_name, age=''):
    '''返回包含宠物信息的字典'''
    pet = {'first': first_name, 'last': last_name}
    if age:
        pet['age'] = age
    return pet
    
name = build_pet('小朱', '佩琦')
print(name)
name = build_pet('小朱', '佩琦', age= 10)
print(name)
# 运行输出结果
{'first': '小朱', 'last': '佩琦'}
{'first': '小朱', 'last': '佩琦', 'age': 10}

3.4 结合使用函数和while循环

# 示例
def build_pet(first_name, last_name):
    '''返回包含宠物信息的字典'''
    pet = {'first': first_name, 'last': last_name}
    active = True
    while active:
        input_age = input("请输入年龄,跳过请输入'pass'")
        if input_age.isdigit(): # 方法isdigit()判断字符串是否可转为整数
            pet['age'] = input_age
            break
        elif input_age == 'pass':
            return pet
        else:
            continue
    return pet
    
pet = build_pet('小朱', '佩琦')
print(pet)
# 运行输出结果
请输入年龄,跳过请输入'pass'hahaha # 乱输入一通,继续循环
请输入年龄,跳过请输入'pass' # 啥也不输,继续循环
请输入年龄,跳过请输入'pass'10 # 输入正确,退出循环
{'first': '小朱', 'last': '佩琦', 'age': '10'}

四、传递列表

向函数传入列表可以提高处理列表的效率。

# 示例
def greet_users(names):
    for name in names:
        print('你好, %s'%name)

names = ['乔智', '佩琦']
greet_users(names)
# 运行输出结果
你好, 乔智
你好, 佩琦

4.1 函数修改列表

将列表传递给函数后,函数对其进行修改。

4.2

五、传递任意数量实参

待续

六、完结

🌸🌸🌸撒花🌸🌸🌸

If you feel happy, clap your hands.👏👏👏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值