Python 测开27期 - WL - 学习笔记 - 函数基础

函数基础

函数的作用

函数定义

定义与示例

  • def:函数定义关键词
  • function_name:函数名称
  • ():参数列表放置的位置,可以为空
  • parameter_list:可选,指定向函数中传递的参数
  • comments:可选,为函数指定注释
  • function_body:可选,指定函数体
    image
def func_demo(a, b, c):
    '''
    这是一个携带参数和注释的函数
    :param a:
    :param b:
    :param c:
    :return:
    '''
    # 函数体
    print(f"This is a 打印参数: a={a},b={b},c={c}")
    return True
# 打印函数的comments
print(func_demo.__doc__)
# help(func_demo)  效果一样
'''
#结果是:
    这是一个携带参数和注释的函数
    :param a:
    :param b:
    :param c:
    :return:
'''
# 打印传入参数
print(func_demo('s','dd',3))
'''
# 结果是:
This is a 打印参数: a=s,b=dd,c=3
True
'''
# 定义空函数
def demo(ss):
    pass
def demo1(dd):
    '''
    '''

定义函数的注意事项

  • 缩进:python是通过严格的缩进来判断代码块
    ** 函数体和注释相对于def关键字必须保持一定的缩进,一般都是4个空格或一个tab
    ** pycharm自动格式化快捷键“ctrl + alt + L”
  • 定义空函数
    ** 使用 pass 语句占位
    ** 写函数注释comments

函数调用

  • function_name:函数名称
  • parameter_value:可选,指定各个参数的值
    image
def demo1():
    print("这是一个函数")

def demo2(a,b,c):
    print(f"这是一个参数函数:a={a},b={b},c={c}")

def deme3(s):
    ''''''

demo1() # 结果是:这是一个函数
demo2('xxx', 5.333, 999) # 结果是:这是一个参数函数:a=xxx,b=5.333,c=999

参数传递

  • 形式参数:定义函数时,函数名称后面括号中的参数
  • 实际参数:调用函数时,函数名称后边括号中的参数
    image
  • 位置参数:
    ** 数量必须与定义时一致
    ** 位置必须和定义时一致
    image
  • 关键字参数
    ** 使用形式参数的名字确定输入的参数值
    ** 不需要与形式参数的位置完全一致
    image
def demo2(a,b,c):
    print(f"这是一个参数函数:a={a},b={b},c={c}")

demo2(c='ddd',a=163.0504,b=['ddd',333,3]) 
# 结果是:这是一个参数函数:a=163.0504,b=['ddd', 333, 3],c=ddd
  • 为参数设置默认值
    ** 定义函数时可以指定形式参数的默认值
    ** 指定默认值的形式参数必须放在所有参数的最后,否则会参数语法错误
    ** param=default_value:可选,指定参数并且为该参数设置默认值default_value
    ** 默认值不要为列表、元组等组合,默认值一定是常量不可变
    image

函数返回值

  • – value:可选,指定要返回的值
    image
  • 当没有设置返回值时,调用函数后,返回值为None
    示例:
def sum(a, b):
    resl = a + b
    # 函数返回值
    return resl, a, b
r = sum(1, 3)
print(r)  # 结果是:(4, 1, 3)

练习

# 练习: 自定义一个函数,并调用
def baby(level, name = "大话西游Ⅱ"):
    ''''''
    list = ['飞鱼', '山贼', '强盗', '修罗', '白虎', '蜘蛛精', '猴精', '神兵', '神灵', '该转生了']
    s = level -1
    if s <9:
        return list[s],name
    else:
        return list[-1],name

for i in range(1,12):
    ss = baby(i)
    print(ss)
'''打印结果为:
('飞鱼', '大话西游Ⅱ')
('山贼', '大话西游Ⅱ')
('强盗', '大话西游Ⅱ')
('修罗', '大话西游Ⅱ')
('白虎', '大话西游Ⅱ')
('蜘蛛精', '大话西游Ⅱ')
('猴精', '大话西游Ⅱ')
('神兵', '大话西游Ⅱ')
('神灵', '大话西游Ⅱ')
('该转生了', '大话西游Ⅱ')
('该转生了', '大话西游Ⅱ')
'''