目录

  • 函数
  • 7.1、自定义函数
  • 7.2、函数的参数
  • 7.2.1、函数的参数-->普通参数(位置实参数)
  • 7.2.2、实参和形参
  • 7.2.3、关键字实参
  • 7.2.3、函数的参数-->默认参数


函数

函数是带名字的代码块,用于完成具体的工作。要执行一个自己想要的特定的逻辑,就需要在程序中字节集设计一个函数。

7.1、自定义函数

函数的定义主要有下面几个要点:

  • def : 表示函数的关键字
  • 函数名:函数的名称,以后根据函数名调用函数
  • 函数体:函数中进行一系列的逻辑计算
  • 参数:为函数体提供数据
  • 返回值:当函数执行完毕后,可以给调用者返回数据

和其他语言区别:

  1. 声明函数名尾部要有冒号
  2. 他不需要用花括号将语句块包括起来,用tab键缩进即可

添加函数编程,最重要的是增强代码的重用性和可读性
下面简单来定义一个问候的函数。

# 自定义一个函数
def print_info(): # 1
    '''显示简单的问候语句'''
    print('Hello!!')
# 调用该函数
print_info()

输出结果:
Hello!!

关键字def引入一个函数定义。在其后必须跟有函数名和包括形式参数的圆括号。函数体语句从下一行开始,必须是缩进的。
函数体的第一行可以是可选的字符串文本,这个字符串是函数等等文档字符串,或者称为docstring。有些工具通过docstrings自动生成在线的或者可打印的文档,或者让用户通过代码交互浏览。

7.2、函数的参数

函数有三种不同的参数:

  1. 普通参数(位置实参数)
  2. 默认参数
  3. 动态参数(可变参数)—>后续内容仔细讲解

7.2.1、函数的参数–>普通参数(位置实参数)

位置参数,是必填的,调用函数时不传会报错。

def print_info(user_name):
    """
    :param user_name: 传递一个名字
    :return: 返回一句问候语
    """
    print('Hello~ '+ user_name.title() + '!')
# 调用print_info()函数
print_info('tony')

注意: 使用位置实参来传递函数时,如果实参的顺序不正确,结果可能不太理想。

7.2.2、实参和形参

上面例子中,在调用函数print_info(),要求给变量user_name指定一个值。而user_name是一个形参,函数完成其工作所需的一项信息,在代码print_info(‘tony’)中,值tony是一个实参。实参是调用函数时候传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。 原理: 将实参‘tony’传递给函数print_info(),这个值被存储给形参user_name中。

注意:有些人有时候会形参、实参不分,因此如果您看到有人讲函数定义中的变量称为实参或者将函数调用中的变量称为形参,不要大惊小怪。

7.2.3、关键字实参

关键字实参是传递给函数的名称一一对应。直接在实参中将名称和值关联起来,因此想函数传递实参时不会混淆。好处: 可以让我们不用考虑函数调用中的实参顺序,还清楚的指出了函数调用中各个值的用途。

def D_info(user_name,city):
    print('学生名字:'+user_name)
    print('喜欢城市为:'+city)
# 调用函数
D_info(user_name='tom',city='北京')

运行结果:
学生名字:tom
喜欢城市为:北京

使用关键字实参的方式传递参数则无需考虑顺序,Python会自动识别并存储到对应的形参当中。注意的是要准确的指定函数中的形参名。

7.2.3、函数的参数–>默认参数

定义函数时,可以给形参指定默认值。在调用过程中,函数给形参传递实参时,将使用指定的实参值,否则将使用形参定义的默认值。这样给形参指定默认值后,可以在函数调用中省略对应的实参。可以简化函数调用。

def D_info(user_name,city = '北京'):
    print('学生名字:'+user_name)
    print('喜欢城市为:'+city)
# 调用函数
D_info(user_name='tom')

运行结果:
学生名字:tom
喜欢城市为:北京

注意: 使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。这让Python依然能够正确地解读位置实参。