第六讲:Python的函数和方法

第六讲:Python的函数和方法


目录:

一、函数

Python中的函数:

  • 定义:
    • 组织好的、可重复使用的、可以实现某个功能的代码段.
  • 功能:
    • 大大减少程序中重复代码段的使用.

函数的定义

基本定义格式:

def 函数名(参数): 
    代码1. 
    代码2. 
    ......

示例代码:

# 定义一个返回给定数据的绝对值的函数.
def my_abs(a):
    if a > 0:
        return a
    else:
        return -a

调用函数:

基本调用格式:

函数名()

示例代码:

""" 1、定义一个函数 """
def my_abs(a):
    if a > 0:
        return a
    else:
        return -a


""" 2、调用函数 """
result = my_abs(9)
print(result)

注意:

  • 不同的需求,参数可有可无.
  • 调用函数必须放在定义函数之后.

1.2 函数中的参数

必要传参(位置参数)

定义函数时,根据需求必需要传递的参数, 而且,在调用函数时根据函数定义的参数位置顺序来传递参数.

示例代码:

def test(start, end):
    """ 计算从开始到结束之间所有数字的和,包括结束. """
    s = 0
    for i in range(start, end + 1):
        s += i
    return s


print(test(1, 100))

注意:传递和定义参数的顺序及个数必须一致.

关键字传参

函数调用,通过“键=值”形式加以指定.
可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求.

示例代码:

def test(start, end):
    """ 计算从开始到结束之间所有数字的和,包括结束. """
    s = 0
    for i in range(start, end + 1):
        s += i
    return s


print(test(end=10, start=1))

注意: 函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序.

默认传参

用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值.

示例代码:

def test(start, end, init_value = 0):
    """ 计算从开始到结束之间所有数字的和,包括结束. """
    s = init_value
    for i in range(start, end + 1):
        s += i
    return s


print(test(end=100, start=0))
print(test(1, 10, 10))

注意:所有位置参数必须出现在默认参数前,包括函数定义和调用.

不定长传参(可变参数)

不定长传参用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.
此时,来进行参数传递,会显得非常方便.

注意:如果函数同时使用默认传参和不定长传参,那么不定长参数必须放在默认参数之后,否则会报错.

  • 不定长普通参数
def test(*numbers):
    print(type(numbers))
    for i in numbers:
        print(i)


test(10, 20)

不定长普通参数传入函数中通过一个元组 numbers接收.

  • 不定长关键字参数
def test(**kws):
    print(type(kws))
    for k,v in kws.items():
        print(f'参数的名字:{k},参数的值:{v}')


test(a=10, b=20, c=30)

不定长关键字参数传入函数中通过一个字典 kws接收.

1.3 函数的返回值

return语句用于函数调用后,返回需要的计算结果,并且退出函数,选择性地使用return语句, 默认是返回None.

返回值用法:

  • return语句用于返回函数的值,并且退出函数;因此return之后的语句不会被执行.
def test():
    print('执行test1函数')
    """ 返回10 """
    # return 10
    """ 返回None """
    return
    # 以下代码不会被执行.
    print('hello')

result = test()
print(result)
  • return a, b写法,返回多个数据的时候,默认是元组类型.
def test(a):
    p = a ** 2
    l = a ** 3
    """ 返回的值被元组接收 """
    return p, l


# 拆包:把容器中每一个元素拆分出来.
r1, r2 = test(9)
# 使用一个元组接收.
result = test(9)
print(type(result))

print(r1, r2)
print(result)
  • return后面可以连接列表、元组或字典,以返回多个值.
def test(a):
    p = a ** 2
    l = a ** 3
    """ 返回的值被列表接收 """
    return [p, l]


# 拆包:把容器中每一个元素拆分出来.
r1, r2 = test(9)
# 使用一个列表接收.
result = test(9)
print(type(result))

print(r1, r2)
print(result)

二、局部变量和全局变量

2.1 局部变量

定义:

  • 在函数内部定义的变量.

作用范围:

  • 这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的.

使用注意事项:

  • 因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量.
  • 当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了.

2.2 全局变量

定义:

  • 定义在函数的外面.

作用范围:

  • 全局变量在整个.py文件中声明,全局范围内可以使用,即所有函数内部都可以使用这个变量.

使用注意事项:

  • 当函数内出现局部变量和全局变量相同名字时,函数内部中的 变量名 = 数据 ,此时理解为定义了一个局部变量,而不是修改全局变量的值.
    • 如果要修改全局变量,必须使用global.

2.3 局部变量和全局变量的使用代码示例

    """ 1、局部变量和全局变量 """
    # 全局变量.
    str1 = 'abcdef'


    def test1(a):
        b = 100
        return a + b


    print(test1(10))
    ''' 以下代码会报错! '''
    # print(a) # 局部变量
    # print(b) # 局部变量

    """ 2、在函数中修改全局变量 """
    num = 20  # 全局变量


    def test2():
        global num  # 标识这个函数内部不是定义一个局部变量,而是修改全局变量.
        num = 10
        # 以下打印的结果为num = 10.
        print(f'当前函数的局部变量是:{num}')


    test2()

三、课堂小结

学习Python时间规划:

  • 严格按照三七分比例规划时间:
    • 三分:看视频课、听老师讲课.
      • 每个人能够集中精力听讲的时间不超过20分钟!
    • 七分:自己练习代码和实操项目.
      • 只有自己敲过代码,才能真正理解并掌握代码.
      • 仅靠听课是远远不够的!

好的建议:

  • 听课过程中,老师讲完一个知识点后,立即暂停视频,自己动手实操代码和项目进行练习.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值