欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数

程序员文章站 2022-03-19 11:55:50
...

函数

一.函数的基础用法

1.函数的定义
def my_add(a, b):
    """
    计算两个数的和
    :param a:第一个数
    :param b:第二个数
    :return:返回的和
    """
    c = a + b
    return c

res = my_add(3,4)
print(res)
2.函数的默认值,直接调用等
def my_add(a, b, c=666, d=44):
    print(c)
    print(d)


my_add(3, 4, d=3)

函数

这里说明一下,函数的默认值必须放在最后,而关键字调用的话要也要放在后面,不过这个东西实在不行就试试就行,也不用太多记

def my_add(a, b, c=666, d=44):
    print(a)
    print(b)
    print(c)
    print(d)


# my_add(3, 4, d=3)
my_add(b=3, a=5)

函数

这是显示说明关键字取值可以不按照顺序,只要记住永远让位置参数放前面就行

3.不定长接收(args,kwargs)

args是元组,接收的是值,而kwargs接受的是键值对

def run(*args,**kwargs):
    print(args)      #元祖
    print(kwargs)    #字典
    print(type(args))
    print(type(kwargs))

run(3,4,a=5,b=6)

函数

输入调用严格按照顺序

def run(*args,**kwargs):
    print(args)      #元祖
    print(kwargs)    #字典
    
list1 = {1,2,3,4,5}
tuple1 = (2,4,6)
run(*tuple1)
dict1 = {'zxc': 4, 'na': 2}
run(*list1,**dict1)

函数

记住导入list,dict,tuple等时候一定要加*,**不然会出问题,具体问题具体分析。

4.内置函数

file:///C:/Users/%E5%BC%A0%E5%AD%A6%E6%88%90/AppData/Local/Temp/BNZ.5d2409b25956ad8/6.21/07-python3%E5%86%85%E7%BD%AE%E5%87%BD%E6%95%B0%E5%A4%A7%E5%85%A8%20(1).html

这是调用链接,忘记怎么用就百度

def test1(w):
    if w > 2:
        return w
a = 'c+d+f'
c = 1
d = 2
f = 3
print(eval(a))
l1 = [c, d, f]
print(list(filter(test1, l1)))

函数

这是两个过滤器,eval可以去掉括号来执行,而filter()可以直接加上函数来运行,实现过滤,map可以将数据放入函数里面批量操作

def test1(w):
    return 10*w
a = 'c+d+f'
c = 1
d = 2
f = 3
print(eval(a))
l1 = [c, d, f]
print(list(map(test1, l1)))

[外链图片转存失败(img-U63GMa11-1564987369984)(…/…/AppData/Roaming/Typora/typora-user-images/1562651842399.png)]

zip函数,功能很好,能拼接成字典

l1 = [1, 12, 3, 3]
l2 = ['x', 'y', 'u', 'w']
print(dict(zip(l1,l2)))

函数

不过这些后来都要进行格式转换,因为返回的都是地址

二.函数作用域

num = 100
def test():
    num = 200
    print(num)

print(num)
test()
print(num)

函数

2.1.函数中定义全局变量(global)
num = 100
def test():
    global num
    num = 200
    print(num)

print(num)
test()
print(num)

函数

2.2函数上一级的变量nonlocal
def test1():
    num = 100

    def test2():
        nonlocal num
        num = 200
        print(num)

    test2()
    print(num)

test1()

函数

注意:定义的时候不能是上一级没有的变量

三.函数的闭包

def test(num1):
    print(num1)

    def test1(num2):
        res = num1 + num2
        return res

    return test1


res = test(66)
print(res(88))

函数

这就是闭包。其实第一次res = test(66)执行后的res就已经是test1了,所以这样res不调用就不会被释放掉因为是函数没调用这样就能保留数据了

相关标签: 函数