python基础:(六)函数———基础知识

一.定义函数

  • 学会使用函数可以让复杂的工作简单化,“函数本质”就是将一部分代码封装成一个个函数调用,你可以调用函数而没有次数限制。
  • 前面文章中多多少少涉及到一些函数的知识,有些是系统封装好的,我们只需要调用即可,我们也可以自己编写自己的函数。
  • 使用关键字def xxx():告诉python解释器,这是一个函数,还是以:结束。
  • ()括号内部可以指出该函数需要什么信息,当然也可以什么都不写,但是也不能省略括号!
  • 函数是由函数名和函数体构成的,函数名后面所有的缩进表示函数体。
  • 编写函数时,还需要说明函数的功能,也就是注释,使用"“”“”"(文档字符串的注释)。

eg:

def welcome():
    """"打印欢迎来到python世界"""
    print(" 欢迎来到python世界!")
welcome()

在这里插入图片描述

二.传递实参

在进行这一节之前需要补充一些知识,还是之前的函数welcome,稍微改动一下。

2.1补充:函数传递信息

def welcome(name):
    """"打印欢迎来到python世界"""
    print(f"{
      
      name}欢迎来到python世界!")
welcome('mayahei')
#用户调用welcome函数时,把输入的mayahei传递给name,也就是把name替换成mayahei。

在这里插入图片描述

2.2补充:实参和形参

还是以welcome函数为例

def welcome(name):
    """"打印欢迎来到python世界"""
    print(f"{
      
      name}欢迎来到python世界!")
welcome('mayahei')

在这个函数中,实参为:mayehei
                         形参为:name

  • 函数调用就是值传递,把实参的值传递给形参,进而在函数中调用实参的值。
  • 形参和实参刚接触可能分不清,但是随着编写代码的功力越发深厚慢慢就会理解,有时候你也许会看到有人将函数定义中的变量称为实参,把函数调用中的变量成为形参,不必惊讶。

2.3传递实参

用户自定义函数中可能会包含多个形参,也就是当你进行函数调用时,也应该包含多个实参。传递实参的方式很多,也就是说你可以用不同的函数调用的方式输出相同的结果,在这呢,我一一为大家阐明传递实参的一些方法。

2.3.1位置实参

注意:位置实参,顾名思义就是函数调用时实参和形参的传递是一一对应的。就像前文所说的,给多个变量赋值x,y,x = 1,2,3;x = 1;y = 2;z = 3;

这以python参考书中的实例进行讲解。

实参和形参一一对应正确:

def describ_pet(animal_type,pet_name):
    """"显示宠物的信息"""
    print(f"\n我有一只{
      
      animal_type}.")
    print(f"我的{
      
      animal_type}的名字是{
      
      pet_name}")
describ_pet('猫','花花')

在这里插入图片描述
实参和形参对应错误

def describ_pet(animal_type,pet_name):
    """"显示宠物的信息"""
    print(f"\n我有一只{
      
      animal_type}.")
    print(f"我的{
      
      animal_type}的名字是{
      
      pet_name}")
describ_pet('花花','猫')

在这里插入图片描述

ps:虽然语法没有出现错误,但是逻辑上出现了错误,这种错误一般也不好检查,所以一定要注意形参和实参的对应关系,那么有什么方法可以避免呢,那就看下一部分关键字实参。

2.3.2关键字实参

关键字实参本质就是在函数调用时把实参的值赋值给相应的形参即可。

def describ_pet(animal_type,pet_name):
    """"显示宠物的信息"""
    print(f"\n我有一只{
      
      animal_type}.")
    print(f"我的{
      
      animal_type}的名字是{
      
      pet_name}")
describ_pet(pet_name='花花',animal_type='猫')

在这里插入图片描述

2.3.3给形参指定默认值

有时候比如说你的宠物都是猫,但是你不想每次都输入猫,那么你可以把猫设置为默认值,因为形参实参是一一对应的,所以默认值必须放在最后面,看下例。

它实质上就是自定义函数时,给形参一个确定的量。

def describ_pet(pet_name,animal_type='猫'):
    """"显示宠物的信息"""
    print(f"\n我有一只{
      
      animal_type}.")
    print(f"我的{
      
      animal_type}的名字是{
      
      pet_name}")
describ_pet('花花')
describ_pet('美媚')

在这里插入图片描述

2.3.4不同的函数调用输出相同的结果
def describ_pet(pet_name,animal_type='猫'):
    """"显示宠物的信息"""
    print(f"\n我有一只{
      
      animal_type}.")
    print(f"我的{
      
      animal_type}的名字是{
      
      pet_name}")
describ_pet('美媚')
describ_pet('美媚','猫')
describ_pet(animal_type='猫',pet_name='美媚')

在这里插入图片描述

三.函数的返回值

函数并不是直接显示输出,它还可以处理数据,并返回一个或一组值。函数返回的值成为返回值。

3.1语法

def xxxxx:
	  return xxx

eg:

def pingfang(num):
    return num**2
print(pingfang(2))

在这里插入图片描述

3.2让实参可选(某个实参可写可不写)

打个比方,比如说有个人叫威廉-嘿嘿嘿-查尔斯,这个人的名字由三部分构成,但是其他人还有两个字的比如哈利-波特,那么可否给一个广泛的定义,也就是定义一个函数,不管是两个字的还是三个字的都可以正确输出人名,答案当然是可以的。

怎么实现

  • 可以参考第二部分中的给形参指定默认值即可,不过呢此时指定的是一个空的字符串。
  • 补充一个知识点,就是python中非空字符串返回True,反之空字符串返回False;
def name(last_name,first_name,middle_name=''):
    if middle_name:
        full_name = f"你的名字是:{
      
      last_name}-{
      
      middle_name}-{
      
      first_name}"
    else:
        full_name = f"你的名字是:{
      
      last_name}{
      
      first_name}"
    return full_name
print(name('查尔斯','威廉','嘿嘿嘿'))
print(name('波特','哈利'))

在这里插入图片描述
ps:函数的返回值可以是任意类型,简单的就是上面所说。复杂的由列表,字典等等。
eg:

def name(last_name,first_name,middle_name=''):
    if middle_name:
       message = {
    
    'first_name':first_name,
                  'middle_name':middle_name,
                  'last_name':last_name,
                  }
    else:
        message = {
    
    'first_name': first_name,
                   'last_name': last_name,
                   }
    return message
print(name('查尔斯','威廉','嘿嘿嘿'))
print(name('波特','哈利'))

在这里插入图片描述
ps:列表也是一样的道理,就不再赘述了。

猜你喜欢

转载自blog.csdn.net/qq_63913621/article/details/129160093
今日推荐