你要偷偷学Python,然后惊艳所有人(函数)

函数就是一段具有特定功能的代码块
调用函数-通过一条简单的命令执行一系列复杂的操作
函数名是函数的标识符

函数的优点:整理和优化代码、提高代码的复用率、避免代重复代码、是代码保持简洁
在这里插入图片描述

函数的定义:
定义一个函数say_hi每次调用的时候都会输出一个hello

def say_hi():
    print("hello")
#调用say_hi()函数
say_hi()

#结果
hello

函数中还可以调用函数,并且不需要在乎函数的顺序,因为函数定义时,函数内的内容并不会执行,只有在调用的时候函数才会执行。

def say_hi():
    good_morning()
    print("hello")

def good_morning():
    print("Good Morging")

say_hi()
#结果
Good Morging
hello

参数——在调用函数时,给函数提供数据
定义一个有参函数line(),可以指定打印多少*

def line(width):
    print("*"*width)
    
#有参函数的line()的调用
line(5)
line(10)
#结果
*****
**********

函数中可以有多个参数

def line(width,char):
    print(char*width)

line(5,"*")
line(10,"-")
#结果
*****
----------

函数的返回值,就是调用函数后获取到的结果
定义一个函数,获取两个值中的最大值


def  max_num(x,y):
    v=x
    if x<y:
        v=y
#上面三行还有另一种写法  <表达式1> if <条件> else <表达式2>
# v=x if x>y else y    
    return  v
    print("hahaha")
#函数调用
i=max_num(3,4)
print(i)
#从结果可以知道 return后面的值可以返回给函数外面
#return 可以提前结束整个函数,也就是函数中return后面的程序不在执行
#结果
4

return也可以返回多个值

def fun(a,b):
    return a+b,a-b
#因为函数返回两个值,故需要用两个变量接收
i,j=fun(10,11)
print(i,j)
#结果
21 -1

变量的作用域是指在程序的哪些地方可以使用变量
在这里插入图片描述

#在函数外定义的变量叫做全局(global)变量
i=5
def f():
#在函数内定义的变量叫做局部(local)变量
#局部变量,只能在函数内部使用
	j=5

def f2():
   #全局变量在函数中也能用
   #全局变量,在函数内不能直接被修改
   #函数内定义的变量可以和函数外的变量重名,但这是两个不同的变量
    i=0
f2()
print(i)
#结果
5

#如果想要在函数内改变全局变量的值可以用global关键字
i=5
def f2():
   #全局变量在函数中也能用
   #全局变量,在函数内不能直接被修改
   global i
   i=0
f2()
print(i)
#结果
0

函数参数扩展
在这里插入图片描述
在这里插入图片描述

def f(name,age=0):
    print(f"name={name},age={age}")
#调用带有默认值的函数,可以正常给参数按顺序赋值调用
f("小明",18)
#也可以不给默认函数传值,会直接用我们设置的默认值赋值
f("小红")
#结果
name=小明,age=18
name=小红,age=0

#默认值智能从后往前设置
#例如def f(a,b=0,c)这种情况就是不正确的
def f(a,b=0,c=0):
    print(a,b,c)
f(1,2,3)
f(1,2)
f(1)
#结果
1 2 3
1 2 0
1 0 0

#还可以按照参数的名称给其赋值,这时改变参数的顺序也是可以的
def f(a,b,c):
    print(a,b,c)

f(a=1,c=2,b=3)
#结果
1 3 2

可变参数就是可以传递任意数量的参数值
在这里插入图片描述

#*args是可变参数,主要在不确定要传多少参数的时候使用
def get_sum(*args):
    print(args)
s=get_sum(1,3,6)
#结果,输出的是一个元组
(1,3,6)

#因为元素以元组的形式保存,所以在求和时,需要用for循环
def get_sum(*args):
    sum=0
    for i in  args:
        sum+=i
    return  sum
s=get_sum(1,3,6,2,8)
print(s)
#结果
20

#可变参数和普通参数同时使用时,必须放在普通参数的后面
#并且按照顺序依次给普通参赋值,剩下的元素就以可变参数的形式保存在元组中
def get_sum(a,b,*args):
    print(a)
    print(b)
    print(args)
s=get_sum(1,'hello',6,2,8)
#结果
1
hello
(6, 2, 8)

#调用函数时,可变参数之前只能使用顺序赋值,不能使用关键字赋值
#调用函数时,可变参数之后,只能使用关键词赋值,不能使用顺序赋值
def get_sum(b,*args,c,d):
    print(b)
    print(args)
    print(c)
    print(d)
s=get_sum(1,'hello',6,2,c=8,d='D')
#结果
1
('hello', 6, 2)
8
D

可变关键词参数

#可变关键词参数是以字典的形式返回	
def f(**kwargs):
    print(kwargs)
f(a=1,b=2,c=3)
#结果
{'a': 1, 'b': 2, 'c': 3}

#**kwargs 只能出现在参数列表中的最后位置
def f(a,b,**kwargs):
    for k,v in kwargs.items():
        print(f"{k}:{v}")
    print(f'a={a}')
    print(f'b={b}')

f('aa','bb',x=1,y=2,z=3)
#结果
x:1
y:2
z:3
a=aa
b=bb

高阶函数

#函数的嵌套使用
def f():
    def fn():
        print('fn')
    fn()
f()
#结果
fn

#将函数作为返回值
def f():
    def fn():
        print('fn')
    return  fn
a=f()
a()
#结果
fn

匿名函数

#匿名函数主要是使用lambda
def f(x):
    return  x*2
a = lambda x: x*2
print(a(5))
print(f(5))
#结果
10
10
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值