python从小白到入门(7)

函数(简化代码、易更改):
1、定义函数def + 函数名(****) + ‘’。
2、函数定义形式决定了函数调用的方式。

def function(x,y):
    print('x is ',x)
    print('y is ',y)
    return x + y
>>> function(1,2)
x is  1
y is  2
3   

3、return表示返回值(结束这个函数)。返回值可以赋值给变量。

>>> a = function(1,2)
x is  1
y is  2
>>> a
3

4、当函数不写return时,默认返回None
5、function表示函数整体,function(1,2)表示一个值。

>>> type(function), type(function(1,2))
x is  1
y is  2
(<class 'function'>, <class 'int'>)

6、改变一个函数名。

>>> d = function
>>> d(3,4)
x is  3
y is  4
7

7、

def f1(x, y = 10):
    print(x)
    print(y)
>>> f1(1)
1
10
#x为必备参数,y为默认参数。
>>> f1(1, 2)
1
2
#默认参数可以更改。
def f1(x, y ):
	y = 10
    print(x)
    print(y)
    会报错,y不是默认参数。

8、

def f1(x, y = 10, *args, **kwargs):
    print(x)
    print(y)
    print(args)
    print(kwargs)
>>> f1(20,'a',30,40,50,60,70)
20
a
(30, 40, 50, 60, 70)
{}
#*args 不定长参数,超过的单个元素都会被元组接受。(args可以换)
>>> f1(20,'a',30,40,50,60,70,a = 1, b = 2)
20
a
(30, 40, 50, 60, 70)
{'a': 1, 'b': 2}
#kwargs 不定长参数, 键值对的形式(字典),只能放在最后的位置。

9、正确传入函数元组和字典参数

>>> f1(10,20,ta,di)
10
20
((1, 2, 3, 4, 5), {'a': 1, 'b': 2, 'c': 3})
{}
>>> f1(10,20,*ta,**di)
10
20
(1, 2, 3, 4, 5)
{'a': 1, 'b': 2, 'c': 3}

10、定义在函数内部的变量是局部变量,不能在外部使用。
11、全局变量如果想在函数内更改,要先把函数global(可以直接使用全局变量)。

variable = 223
def f3():
    global variable
    variable += 1
    return variable
f3()
print(variable)
224#variable发生了改变。

12、函数内部nonlocal

def f4():
    var1 = 10
    def f5():
            nonlocal var1
            var1 += 1
            print('***',var1)
            return var1
    f5()
    print('f4 is var1', var1)
    return var1

13、函数里嵌套的函数和变量都称为闭包,想要使用闭包里的函数,如下。

def f4():
    var1 = 10
    def f5():
            nonlocal var1
            var1 += 1
            print('***',var1)
            return var1
    return f5
>>> a = f4()
>>> a
<function f4.<locals>.f5 at 0x0000014CFB700160>
>>> a()
*** 11
11

14、递归函数(自己调用自己):

def r(n):
    if n <= 1:
        return 1
    else:
        return n * r(n - 1)

15、匿名函数:

>>> g = lambda x: x + 1
>>> g(10)
11
相当于
def g(x):
	return x + 1

16、

li = [2, 'a', 'b', 1]
>>> li.sort(key = lambda x:str(x)[0])
>>> li
[1, 2, 'a', 'b']
key把列表中的每一个元素传到匿名函数中去,再根据匿名函数返回的结果进行排序。
#[0]表示无论列表中元素有多少字母,只比较第一个字母。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值