python函数微讲解

python函数微讲解

函数的调用

1.调用函数的时候,一定要先定义好函数,先定义函数,在调用,否则就会报错。

# index()  # 报错

def index():
    print('先定义函数才能看到我')

index()  # 先定义函数才能看到我

2.函数在定义阶段只检测语法不执行代码。

3.函数体代码只有在调用函数的时候才会执行,调用函数的方法是:函数名+括号,如果有参数,就在括号内写上参数。

4.函数名其实就是变量名,只不过指向的是内存中函数体代码所在的位置。

函数的分类

1.内置函数

内置函数就是python已经给我们写好的函数,我们可以直接拿来使用的函数,比如之前我们经常使用的print、len、input等等都是内置函数。

2.自定义函数

自定义函数就是程序员自己定义的函数,分为:

(1).无参函数

无参函数就是在定义函数阶段,函数名后面括号里面没有参数。

def index():
    print('这是一个无参函数')

index()  # 这是一个无参函数 不需要参数

(2).有参函数

有参函数就是在定义函数阶段,函数名后面括号里面有参数。

def index(a):
    print(a,'这是一个有参函数')

index(123456)  # 123456 这是一个有参函数

(3).空函数

空函数就是在函数定义阶段,用“pass”或者“...”来代替函数体代码。看似空函数无用,其实用处很大,对于项目的前期搭建具有很大的作用,可以先用空函数来搭建项目的框架,然后在一步步的追加功能。

def index():
    pass

函数的返回值

1.什么是函数的返回值?

函数的返回值就是函数执行完之后返回的结果。

2.如何获得函数的返回值?

变量名 = 函数调用

然后print(变量名)

3.如何操作返回值

(1).当函数体代码没有return关键字的时候,函数的返回值为"None"。

def index():
    print('这里返回None')

l = index()
print(l)  # None

 

 

 (2).当函数体代码后面跟了return,但是后面没有值,返回的也是None.

def index():
    print('这里返回None')
    return 

l = index()
print(l)  # None

(3).当函数体代码后面跟了return,后面跟了什么值,就返回什么值,跟了变量名,就返回变量名指定的值。

def index():
    print('这里返回123')
    return 123

l = index()
print(l)  # 这里返回123

def index1():
    print('这里返回oscar')
    return name

name = 'oscar'
l1 = index1()
print(l1)  # 这里返回oscar

(4).return后面可以跟随多个值,用逗号隔开,返回的时候组合成了元组。

def index():
    print('返回元组')
    return 12,'jason',999
l = index()
print(l)  # (12, 'jason', 999)

(5).函数体代码遇到“return”,立刻结束,跟循环里的“break”很像。

def index():
    print('执行我')
    return 12
    print('不执行')  # 这一句是不执行的
l = index()
print(l)  # (12, 'jason', 999)

函数的参数

1.函数的参数可以分成两大类:形式参数和实际参数

(1).形式参数:在函数定义阶段,括号里写的参数叫形式参数,也叫做形参。

(2).实际参数:在调用函数阶段,括号里写入的参数叫实际参数,也叫做实参。

2.形参与实参的关系:

形参类似于变量名,实参类似于变量值,在调用函数阶段传入实参,与形参临时绑定,并执行函数代码体,函数执行结束后自动解除绑定。

def index(a, s):  # a,s都是形式参数
    print(a, s)
index(1, 2)  # 1,2都是实际参数

1会临时绑定给a,2会临时绑定给b,然后执行函数代码体,执行结束后自动解除绑定,然后a,s就处于没有绑定值的状态,等待下一次函数调用传入实参进行绑定。

def index(a, s):  # a,s都是形式参数
    print(a, s)

m = 'jason'
z = 123
index(m, z)  # 将变量名指向的'jason',123传入形参进行绑定

位置参数

1.位置形参:在定义函数阶段,函数名后面的括号里从左往右依次填写的变量名

def index(a, s):  # a,s就是位置形参

2.位置实参:在调用函数阶段,函数名后面的括号里从左往右依次填写的变量值

index(1, 2)  # 1,2就是位置实参

3.位置参数的特点:

(1).位置形参与位置实参是从左往右依次进行绑定的

(2).位置形参与位置实参进行绑定的时候个数要相等,一个不能多,一个也不能少

def index(a, s):  
    print(a, s)

index(1, 2)  # 正确
index(1, 2, 3, 4)  # 报错
index(1)  # 报错

关键字参数

在实参中出现,直接传递参数,不需要遵循位置参数的原则

def index(a, s):
    print(a, s)

index(s = 999, a = 2)  # 2 999
# index(s=999, 12)  # 报错 关键字参数必须放在位置参数的后面
# index(999,a=45)  # 报错 形参只能指向一个实参

默认参数

出现在形参中,在函数定义阶段,已经给一些形参进行赋值,如果在实参中不在给他赋值就使用默认的,如果在实参中进行传值,就使用传的值,默认参数要在位置参数的后面。

def index(name,age,sex = ''):
    print('''
    名字:%s
    年龄:%s
    性别:%s
    '''% (name,age,sex))

index('oscar',18)  # 名字:oscar 年龄:18 性别:男
index('jason',21,'')  # 名字:jason 年龄:21 性别:女

可变长参数

1."*"号

"*"号在形参中,表示接收多余的参数,并用元组保存起来赋值给"*"号后面的变量名。

def index(a,b,*c):
    print(a,b,c)

index(1,2,2,2,2,3,3,3,)  # 1 2 (2, 2, 2, 3, 3, 3)

index(1)  # 报错 因为形参有两个,也就是ab,所以实参至少传两个值

2."**"号

"**"号在形参中,表示接受多余的关键字参数,并用字典保存起来赋值给"**"号后面的变量名。

def index(a,b,**c):
    print(a,b,c)

index(a=1,b=2,f=3,s=5)  # 1 2 {'f': 3, 's': 5}

# index(a=1)  # 报错 因为形参有两个,也就是ab,所以实参至少传两个值

3.定义一个无论接受多少,什么数据类型的参数函数都能正常执行的代码:

def index(*a,**c):
    print(a,c)

index()  # () {}
index(1)  # (1,) {}
index(1,2,3,a=5,)  # (1, 2, 3) {'a': 5}

补充:"*"与"**"在形参的使用使用中,后面的变量名没有特殊的要求,但是python有推荐的写法:(*args,**kwargs)

"*"与"**"在实参的使用

1."*"在实参的使用

在实参中可以将列表或者元组里的元素作为位置参数一一传入。

def index(*a):
    print(a)

index(*['jason', 'oscar', 'jerry'])  # ('jason', 'oscar', 'jerry')
index(*(1, 2, 3))  # (1, 2, 3)

2."**"在实参的使用

在实参中可以将字典的键值对作为关键字参数一一传入。

def index(**k):
    print(k)

index(**{'name': 'jason', 'age': 18})  # {'name': 'jason', 'age': 18}
index(x = 'asd')  # {'x': 'asd'}

这里是IT小白陆禄绯,欢迎各位大佬的指点!!!

 

posted @ 2022-03-16 17:47  陆禄绯  阅读(77)  评论(0)    收藏  举报