python函数

目录

函数基本语法

函数定义

函数调用

形式参数和实际参数

None类型

None主要作用

函数的说明文档

语法

变量的作用域

变量分类

global关键字

不加global关键字

加global关键字

函数的多返回值

多返回值写法

函数的四种传参方式

位置参数 

关键字参数

缺省参数

不定长参数

不定长参数类型

位置传递参数的不定长

关键字传递参数的不定长

匿名函数

函数作为参数传递

lambda匿名函数

函数的定义

匿名函数的定义

函数基本语法

含义:组织好的,可重复使用的,用来实现特定功能的代码段

函数定义

def 函数名(传入参数1,传入参数2):
    函数体
    return 返回值

函数调用

函数名(传入参数1,传入参数2)

注意:

  • 函数定义时函数的传入参数以及返回值(包括return关键字)可以省略 
  • 函数定义完成之后只有经过调用才能生效
  • 函数的传入参数在函数计算时用来接收函数调用时提供的数据
  • 通过return关键字,就能向调用者返回数据(也称返回值)
  • 函数体遇到return关键字后就表明函数在这里结束了,之后的代码不执行
  • 有返回值的函数可以用一个变量接受该函数的返回值
  • 若函数没有使用return关键字返回数据,那么函数也有返回值,这个返回值就是None
#创建一个函数用来统计字符串的长度
def my_len(data):
    count=0
    for i in data:
        count+=1
        print(f"字符串{data}的长度是{count}")
#创建一个字符串
str="hello world"
#调用函数
my_len(str)

形式参数和实际参数

  • 形式参数:在函数定义时,提供的x、y称之为形式参数,表示声明时将要使用的参数
  • 实际参数:函数调用时,提供的参数称之为实际参数,表示函数执行时真正使用的参数

注意:形式参数要和实际参数一一对应

None类型

含义:None作为一个特殊的字面量,表示:空、无意义,其有非常多的应用场景

None主要作用

  • 用在函数的返回值上表示无返回值
  • 用在if判断上,None等同于False(一般用于在函数中主动返回None,配合if判断做相关处理)
  • 用于声明无内容的变量上(定义变量,但暂时不需要变量具有具体值,可以用None代替)
def check_test():
    print("用来测试None")
flag=check_test()
print(f"函数的返回值为:{flag},具体类型为:{type(flag)}")
#函数的返回值为:None,具体类型为:<class 'NoneType'>

函数的说明文档

前言:函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低,因此我们可以给函数添加说明文档,辅助理解函数的作用

语法

"""
函数说明
:params x:形参函数x的说明
:params y:形参函数y的说明
:return 返回值的说明
"""

注意:我们可以通过多行注释的形式,对函数进行说明解释

变量的作用域

含义:变量的作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)

变量分类

  • 局部变量:定义在函数体内部的变量,即只在函数体内部生效(作用在函数体的内部,在函数运行的时候临时保存数据,当函数调用完成之后立刻就销毁了局部变量)
  • 全局变量:指在函数体内外都能生效的变量

global关键字

作用:主要用在函数内部将定义的变量声明为全局变量

不加global关键字

num=200
def test_a():
    num=500
    print(f"函数内num的值:{num}")
test_a()#500
print(f"外部num的值:{num}")#200

加global关键字

num=200
def test_a():
    global num
    num=500
    print(f"函数内num的值:{num}")
test_a()#500
print(f"外部num的值:{num}")#500

函数的多返回值

前言:若一个函数写了2个return,那么他只会执行第一个return,原因是return可以退出当前函数,导致return下方的代码不执行

多返回值写法

#多返回值函数的定义
def 函数名:
    函数语句
    return 返回值1,返回值2

#多返回值函数的接收
变量1, 变量2=函数名()

注意:

  • 多返回值的接收,写对应顺序的多个变量接收即可
  • 多返回值的书写以及多返回值的接收时应该用逗号隔开
  • 多返回值的返回类型不受限
#多返回值函数的定义
def test_return():
    return "hello",666,True
#多返回值的接收
x,y,z=test_return()
print(x)#hello
print(y)#666
print(z)#True

函数的四种传参方式

前言:根据使用方式上的不同,函数有四种常见的参数使用方式

位置参数 

含义:调用函数时根据函数定义的参数位置来传递参数

def user_info(name,age,gender):
    print(f"您的名字是:{name},您的年龄是:{age},您的性别是:{gender}")

user_info('Tom',20,'男')
#您的名字是:Tom,您的年龄是:20,您的性别是:男

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

关键字参数

含义:函数调用时,通过“键=值”的形式传递参数

作用:可以让函数更加清晰,容易使用,同时也清楚了参数的顺序需求

def user_info(name,age,gender):
    print(f"您的名字是:{name},您的年龄是:{age},您的性别是:{gender}")

user_info(age=20,name='Tom',gender='男')
#您的名字是:Tom,您的年龄是:20,您的性别是:男

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

缺省参数

含义:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值

作用:当调用函数时没有传递参数,就会使用默认缺省参数的值

def user_info(name,age,gender='男'):
    print(f"您的名字是:{name},您的年龄是:{age},您的性别是:{gender}")

user_info("Tom",20)
#您的名字是:Tom,您的年龄是:20,您的性别是:男
user_info("Tom",20,"女")
#您的名字是:Tom,您的年龄是:20,您的性别是:女

注意:

  • 函数定义时,所有的位置参数必须出现在默认参数前
  • 函数调用时,若为缺省参数传值则修改默认参数值,否则使用这个默认值

不定长参数

含义:也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景

作用:当调用函数不确定参数个数时,可以使用不定长参数

不定长参数类型

位置传递参数的不定长
def user_info(*args):
    print(f"您传的参数为:{args},其类型为:{type(args)}")

user_info('Tom')
#您传的参数为:('Tom',),其类型为:<class 'tuple'>
user_info('Tom',18)
#您传的参数为:('Tom', 18),其类型为:<class 'tuple'>

注意:传进去的所有参数都会被*后面的变量收集(形式参数为*变量名),他会根据传进参数的位置合并成一个元组(tuple),该变量是元组类型一般用args,这就是位置传递

关键字传递参数的不定长
def user_info(**kwargs):
    print(f"您传的参数为:{kwargs},其类型为:{type(kwargs)}")

user_info(name='Tom')
#您传的参数为:{'name': 'Tom'},其类型为:<class 'dict'>
user_info(name='Tom',age=20)
#您传的参数为:{'name': 'Tom', 'age': 20},其类型为:<class 'dict'>

注意:关键字传递的不定长参数,参数是键=值形式的情况下,所有的键值对都会被**后面的变量接收(形式参数为**变量名)这个变量一般用kwargs,同时会根据键=值组成字典

匿名函数

函数作为参数传递

前言:函数除了可以将数据传入一个函数内,其实我们也可以将函数本身作为一个参数传入另一个函数内

def test_func(compute):
    result=compute(1,2)
    print(f"计算结果为:{result}")

def compute(x,y):
    return x+y

test_func(compute)
#计算结果为:3
def test_func(compute):
    result=compute
    print(f"计算结果为:{result}")

def Add(x,y):
    return x+y

test_func(Add(1,2))
#计算结果为:3

注意:将函数作为参数传入的作用在于传入计算逻辑,而非传入数据

lambda匿名函数

函数的定义

  • def关键字,可以定义带有名称的函数
  • lambda关键字,可以定义匿名函数(无名称)

注意:有名称的函数可以基于名称重复使用,无名称的匿名函数,只可以临时使用一次

匿名函数的定义

lambda 传入参数:函数体(一行代码)

注意:

  • lambda是关键字,表示定义匿名函数
  • 传入参数表示匿名函数的形式参数,如:x,y表示接收两个形式参数
  • 函数体,就是函数的执行逻辑,匿名函数只能写一行,无法写多行代码
  • 匿名函数用于临时构建一个函数,只用一次的场景
  • lambda函数是直接将函数体的结果return的,所以可以直接省略return
def test_func(compute):
    result=compute(1,2)
    print(f"计算结果为:{result}")
def compute(x,y):
    return x+y
test_func(compute)
#计算结果为:3

#通过lambda关键字,传入一个一次性使用的lambda匿名函数
test_func(lambda x,y:x+y)
##计算结果为:3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值