Python函数简介

函数

1.1函数的简介

函数其实就是用来保存数据的

函数的优点:

1、遇到重复功能的时候,直接调用,减少代码量

2、提升代码,项目的结构性,分工明确,提高代码的可读性

3、遇到扩展功能的时候,修改还比较方便

1.2函数的定义

def()——》函数名(形参1,形参2,形参3......形参n)
	代码块

命名规则:
1、由数字或字母或下划线组成
2、首字母不能是数字
3、不能使用关键字

命名规范:
1、见名知意
2、下划线命名法
3、驼峰命名法
def my_len(str):
    length=0
    for c in str:
        length+=1
    return length
length=my_len("https://edu.zztion.com/live/index?termId=265261431274864640&resourceId=322524823567728640")
print(length)

89

Process finished with exit code 0

1.3函数的调用

必须遵循先定义,再调用

def fn():
    print("这是我的第一个函数")
print(fn)
print(fn())
fn()

<function fn at 0x000002C29A3D00D0>
这是我的第一个函数
None
这是我的第一个函数

Process finished with exit code 0

fn——》函数对象

fn()——》调用函数

print——》函数对象

print()——》调用函数

#定义一个函数login(),功能是输入用户名和密码,验证是否正确
def login():
    i=0
    while i<=3:
        i+=1
        user=2022020222
        code=123456
        user=int(input("请输入你的账号:"))
        code = int(input("请输入你的密码:"))
        if user==2022020222 and code==123456:
            print("恭喜你,登录成功!")
            break
        if i == 4:
            print("您的登录次数已用完,账号冻结")
            break
        else:
            print("不好意思,密码错误,您还有"+str(4-i)+"次机会")
login()

1.4函数的参数

1.4.1形参和实参

形参

def 函数名(参数1,参数2,参数3…):

​ pass

·定义一个函数,可以用来求任意两个数的和:

def sum():
    a=10
    b=20
    print(a+b)
sum()

30

Process finished with exit code 0

函数的参数:在定义参数时,可以在函数名后()中定义数量不等的形参,注意可以有也可以没有,可以有1个也可以有多个,多个形参之间用逗号隔开

形参(形式的参数):定义形参就相当于在函数内部声明了变量,但是并不赋值

实参

实参(实际的参数):在函数定义的时候指定了形参,在调用的时候也必须传递实参,我们的实参会赋值给对应的形参

def fn(a,b):
    print(a,"+",b,"=",a+b)
fn(200,100)

200 + 100 = 300

Process finished with exit code 0

总结:我们在定义函数的时候叫形参,需要在调用的时候才确定值,调用的时候叫实参

定义多少个形参就要传递多少个实参

1.4.2参数的传递方式

1.4.2.1默认值参数
def fn(a,b,c=10):
    print("a=",a)
    print("b=",b)
    print("c=",c)
fn(200,100)

a= 200
b= 100
c= 10

Process finished with exit code 0
def fn(a,b,c=10):
    print("a=",a)
    print("b=",b)
    print("c=",c)
fn(200,100,100)

a= 200
b= 100
c= 100

Process finished with exit code 0

默认值参数就是如果你传递了值就用你传递的值,如果你没传递值就用默认值

1.4.2.2位置参数和关键字参数

1、位置参数:就是将对应位置的参数赋值给对应位置的形参

2、关键字参数:可以不用按照形参定义的顺序来传递,而是直接按照根据参数名字来传递

注意:混合使用位置参数和关键字参数时,位置参数必须放在关键字参数前面

1.4.3实参的类型

def fn(a):
    print("a=",a)
b=True
fn(b)

a= True

Process finished with exit code 0
def fn(a):
    print("a=",a)
b=fn
fn(b)

a= <function fn at 0x00000213C55200D0>

Process finished with exit code 0
def chengji():
    a=int(input("a="))
    b=int(input("b="))
    c=int(input("c="))
    print(a,"*",b,"*",c,"=",a*b*c)
chengji()

a=10
b=160
c=026
10 * 160 * 26 = 41600

Process finished with exit code 0

2.1可变参数

2.1.1*args

可变参数也可以称为不定长参数,我们在定义函数写形参的时候可以在形参前面加一个*号

def fn(*a):
    print(a)
    print(type(a))
fn()

()
<class 'tuple'>

Process finished with exit code 0
def fn(*a):
    print(a)
    print(type(a))
fn(1,2,3,4,5)

(1, 2, 3, 4, 5)
<class 'tuple'>

Process finished with exit code 0

我们可以发现*a能够接收所有的实参,并且把实参保存到一个元组中,可以成为装包

def sum(*args):
    Z=0
    for i in args:
        Z+=i
    print(Z)
sum(1,2,3,4,5,6,4,5,6,7,8,9,10)

70

Process finished with exit code 0

注意:

1、带*号的形参只能有一个

2、带*号的参数可以与其它参数配合使用,但是带星的参数一定要写在最后面

如果一定要把*号放在前面,后面的两个参数一定要用关键字参数传值

2.1.2**kwargs

上一节带*号的形参有一个弊端就是只能接收位置参数,所以这节的**kwargs的作用就出来了

def fn(**kwargs):
    print("args=",kwargs)
    print(type(kwargs))
fn(a=2,b=3,c=5)

args= {'a': 2, 'b': 3, 'c': 5}
<class 'dict'>

Process finished with exit code 0

总结:**形参可以接收任意的关键字参数,会将这些参数统一保存到字典里,字典的键就是参数的名字,字典的值就是参数的值

注意:**形参也是只能有一个,并且必须写在所有参数最后,它必须也是在最后位置

2.1.3参数解包

元组解包(*args)

def fn(a,b,c):
    print("a=",a)
    print("b=",b)
    print("c=",c)
t=(1,2,3)

fn(*t)
a= 1
b= 2
c= 3

Process finished with exit code 0

其中的*t就称之为解包,将实参中的元组元素解放出来。传递实参时,也可以在序列类型的参数前面添加⭐号,这样它会自动将序列中的元素依次作为参数传递

但序列元素的个数必须对应我们定义的形参个数

字典解包(**kwargs)

def fn(a,b,c):
    print("a=",a)
    print("b=",b)
    print("c=",c)
t={"a":10,"b":20,"c":30}
fn(**t)

a= 10
b= 20
c= 30

Process finished with exit code 0

其中的**t就称之为解包,将实参中的字典元素解放出来。

1*args是用于接收多余的未命名的参数,**kwargs用于接收形参中命名的参数,其中args是一个元组类型,而kwargs是一个字典类型的数据
2*agrs是把元组中的数据进行拆包,也就是把元组中的数据拆成单个的数据,**kwargs是把字典中的数据进行拆包,也就是把字典中的数据拆成单个的键值对

3.1函数的返回值

def sum(*args):
    #定义一个变量,来保存结果
    result=0
    #遍历元组,并且将元组中得到的数进行累加
    for i in args:
        result+=i
    # print(result)
    return result
sum(10,20,30,40)


Process finished with exit code 0

函数执行以后返回的结果,可以通过return来返回执行的结果

def fn(*args):
    #定义一个变量,来保存结果
    result=0
    #遍历元组,并且将元组中得到的数进行累加
    for i in args:
        result+=i
    # print(result)
    return result
# x=fn(10,20,30,40)
# print(x)
# print(fn())
fn()
fn
print(fn)
x=fn()
print(x)

<function fn at 0x000002179A4100D0>
0

Process finished with exit code 0

return 后面是什么,函数返回结果就是什么

return 后面可以是任意的值

return 后面跟啥就返回啥

返回值也可以返回函数,返回值可以是任意类型包括函数

def fn2():
    pass
print(fn2())

None
如果我们不给函数return,那么这个函数的返回值就是None
print(type(None))

<class "NoneType">
None 类型——》空类型
def fn():
    return
print(fn())

None
对于return后面没有内容时,python会在末尾默认return None,表示这个函数默认返回空值

总结:如果仅仅写一个return或者不写return,就等价于return None

None是python中一个特别的空值,用来表示空的

在函数中,return代表函数执行结束,后面代码不会再执行,这就是return

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值