python之函数

python中的函数

像我们常用的print()、input()、range()等函数是python中内置的函数,我们可以直接用,不需要自己去写,python还支持自定义函数,我们可以自己定义一个函数,去实现自己想要的需求,同时又可以反复调用,是不是很棒?接下来介绍一下函数。

函数的创建和调用

  • 函数创建
def 函数名(arg1,arg2):
    '''函数说明文档'''
    函数体
    return 返回值

def 是声明函数的关键字

函数说明文档:解释函数,相当于注释

arg1 arg2 传递参数

函数体是来写实现需求的代码

return 结束函数 可以返回一个或多个值

函数即使没有传递参数,括号也要加上

  • 调用函数
# 我们首先定义一个函数
def run():
    print('调用函数')

# 如果只定义函数 是不会被调用的
# 要 函数名+()调用函数 如果有参数就要传参
# 定义的函数要放在函数调用的上方 不然会报错
run()

函数的参数

函数的参数 就是传递实际参数给函数使用。

形式参数和实际参数

形式参数和实际参数的区别就好比拍戏,拍戏肯定要剧本,而剧本里的角色就是形式参数,角色还没有选定,当有人来演角色的时候,那就是实际参数。

# 定义一个打印0到n-1函数
def run(n):
    for i in range(n):
        print(i)
# 传入参数
run(10)

默认参数

定义参数时可以给形式参数设置一个默认值,这个默认值就是默认参数,
当调用函数忘记赋值时,函数就会自动去找默认参数,从而使函数不会报错。如下

# 默认值 a=5
def run(a=5):
    print(a)
# 没有传入参数
run()

位置参数

位置参数就是按照顺序传入参数,传入的参数和数量要与设置的形式参数一一对应。如下

def run(a, b, c):
    print(a, b, c)


run(1, 2, 3)

如果少了参数会报错。

关键字参数

关键字参数是用形式参数的名字来确定输入的值,这样就不需要像位置参数一样一一对应。如下

def run(a, b, c):
    print('关键字参数')
    print(a, b, c)


# 关键字参数 不需要一一对应
run(b=5, c=3, a=2)

注意 关键字参数和默认参数是有区别的,关键字参数是在调用函数时,给参数赋值时使用,而默认参数是在定义函数时给形式参数设置的默认值,默认调用。我们可以在调用函数的时候传参,这样就会覆盖掉默认值。

不定长参数

不定长参数指可以传入多个实际参数。有两种方式,一种对应位置参数,一种对应关键字参数。如下

def run(*args, **kwargs):
    # 使用时参数前面不需要加*
    print('位置参数:', args)
    print('关键字参数:', kwargs)


run('a', 'b', k=2, s=3)
# 位置参数: ('a', 'b')
# 关键字参数: {'k': 2, 's': 3}

# 通过观察我们可以发现 位置参数返回的是元组,关键字参数返回的是字典

提醒大家:关键字参数后面不能传位置参数,会报错!!!

def run(*args, **kwargs):
    # 使用时参数前面不需要加*
    print('位置参数:', args)
    print('关键字参数:', kwargs)

# 不能这样写!!!
run('a', 'b', k=2, s=3,'d')

函数的返回值

前面我们调用函数,函数执行就结束了,有时候我们需要对函数里的数据进行处理,这时候我们就需要返回值了。
在python中,在函数体内用return返回指定值,返回值可以是任意类型,而且无论return出现在函数内哪个位置,只要执行了,函数就会结束。如下

def run():
    print('函数马上结束了')
    return None
    print('不会执行')

run()
# 函数马上结束了

return可以返回多个值,用逗号隔开,多个值以元组的形式返回。
当函数中没有return语句或者只有 return 时返回空值 即None

def run():
    print('函数马上结束了')
    return

d = run()
print(d) # None

def run1():
    print('函数马上结束了')

d1 = run1()
print(d1) # None

变量的作用域

变量作用域指的是变量生效的范围,在Python中一共有两种作用域。

局部变量

局部变量值在函数内部定义的变量,只在函数内部有效,函数外部不能调用。函数运行时会创建变量,函数结束就销毁了。如下

def run():
    a = 5
    for i in range(1,a):
        print(i)
run()
print(a) # 会报错

全局变量

全局变量与局部变量相比,更加全能,既能在函数内部使用,也能在函数外部使用

m = 100


def run():
    # m时外部变量 在函数内部能访问
    print(m)


run()


global关键字的使用

如果我们要在函数内改变全局变量,那该怎么办?有的小伙伴说这不有手就行,直接上操作

m = 100
def run():
    m = 50
    print(m)
run()

这样好像可以,其实并没有改变,只是在函数内部暂时的改变,函数外部仍然没有改变。

m = 100


def run():
    m = 50
    print(m)

run()
print(m)

# 50
# 100

这时候就该我们的global关键字上场了,用法如下

m = 100
a = 100


def run():
    # 在函数内部声明m是全局变量 这样外部的m也一同改变
    # 多个值用逗号隔开
    global m, a

    m = 50
    a = 30

run()
print(m)
print(a)

# 50
# 30

匿名函数

匿名函数,顾名思义就没有名字的函数,需要一个函数,但是又不想命名,那么匿名函数作用就显示出来了。
语法如下:

name = lambda arg1,arg2...... : 表达式
arg1,agr2...... 形式参数,可以不传,多个参数用逗号隔开
表达式:必填,实现相应的功能

# 正常参数
def com(a, b):
    print(a * b)


com(1, 3)

# 匿名参数
result = lambda a, b: a * b
print(result(1, 3))


练习

计算1+2+3+4+…+n的和。
我们可以用函数的进行封装,传入的实际参数就是我们要求的1到n的和。

def run(n):
    # 计数
    num = 0
    for i in range(1, n + 1):
        # 累加
        num += i
    # 返回最后的值
    return num


print(run(100))

给定一个列表,输入查询列表中的数据,找到返回数据并停止查询,未找到返回提示。


data = ['天天','小红','小明','小兰','小小']

def run(data_list):
    instr = input('请输入查询的名字:')
    for k in data_list:
        # 找到就结束了
        if instr == k:
            return k
    # 遍历完了 都没找到  就打印 没找到
    else:
        print('没找到!')


print(run(data))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天501

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值