4.python函数1

什么是函数

def 函数名():    

函数体

def u():

    print("123")

# 调用u()函数

u()

 

 

函数的返回值

执行完函数之后. 我们可以使用return来返回结果. 

函数中return的使用:

1. 函数中遇到return, 此函数结束, 不再继续执行.

def u():

    print("123")

    return

    print("456")# 这句话不会被执行

2. 给函数的调用者一个访问结果

def u():

    print("123")

    return"456"

3. 函数的返回值可以有多个结果

def u():

    print("123")

    return"456","678"

总结一下

1. 遇到return. 此函数结束, 函数后面的东西将不会再执行

2. return 返回值

        关于返回值

            如果return什么都不写 或者 干脆不写return .那么返回的就是None

            如果return后面写了一个值. 则调用者可以接收一个结果

            如果return后面写了多个结果, 则调用者可以接收一个tuple, 调用者可以直接解构成多个变量

 

函数的参数

    参数, 函数在调用的时候指定具体的一个变量的值. 就是参数.  语法: 

def 函数名(参数列表):    

函数体

1. 位置参数

def u(si):  #形参

    print("abc"+si)

# 调用u()函数

u("d") #实参

2. 关键字参数

def max(a,b):

    if a>b:

        return a

    else:

        return b

print(max(a = 2,b = 1))

3. 混合参数,  位置参数必须在关键字参数前面

def max(a,b):

    if a>b:

        return a

    else:

        return b

print(max(2,b = 1))

4默认值参数

def max(a,b = 1):

    if a>b:

        return a

    else:

        return b

print(max(2))

 

5函数参数--动态传参

def min(*a,b):

    print(a)

    print(b

min(2,3,b=1)

b=1必须加不然就被a元组全部接收

或者

位置参数放动态参数前面

def min(b,*a):

    print(a)

    print(b)

 min(1,2,3)

# 多个参数传递进去. 收到的内容是元组tuple

顺序最好: 位置参数, 动态参数*, 默认值参数

def ch(a, b , *c, d="123"):

 

6动态接收关键字参数

def func(**kwargs):

    print(kwargs)

func(a=1, b=2, c=3)

func(a=1, b=2)

结果: {'a': 1, 'b': 2, 'c': 3} {'a': 1, 'b': 2}

这个时候接收的是一个dict

最终顺序(*重点):

       位置参数 >  *args > 默认值参数 > **kwargs

在实参位置上给一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散. 

在形参的位置上的* 表示把接收到的参数组合成一个元组

如果是一个字典, 那么也可以打散. 不过需要用两个*

def fun(*args):

     print(args)

lst = [1, 4, 7]

fun(lst[0], lst[1], lst[2])

fun(*lst)

s = "147"

fun(*s)

(1, 4, 7)

(1, 4, 7)

('1', '4', '7')

def fun(**kwargs):

    print(kwargs)

dic = {'a':1, 'b':2}

fun(**dic)

{'a': 1, 'b': 2}

函数的嵌套和作用域

在函数外面的变量被称为全局变量. 它的作用域是整个py文件. 在函数内部的变量被称为局部变量.作用范围仅限于函数内部.

我们可以通过globals()和locals()查看全局和局部作用域中的内容

a = 10

def func():

    a = 40

    b = 20

    print(a, b) # 这里使用的是局部作用域

    print(globals()) # 打印全局作用域中的内容

    print(locals()) # 打印局部作用域中的内容

func()

 
global和nonlocal关键字

a = 10

def func():

    global a

    a = a+10

    print(a)

func()

在函数内部想要修改全局变量. 必须使用global关键字把外面的变量引入才可以进行修改(赋值).

a = 100

def func1():

    a = 20

    def func2():

        nonlocal a

        a = 30

        print(a)

    func2()

    print(a)

func1()

加了nonlocal 30 30 不加nonlocal 30 20

nonlocal也是一样的操作. 它负责在内层函数中引入外层函数的局部变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

YELL.DOLL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值