Python之函数初识

一、函数

代码重复使用,代码可读性差,所以要使用函数。

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

二、函数的定义与调用

1 def my_len():  #def 关键字,定义函数, 空格 函数名(变量)
2     l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3]
3     count = 0
4     for i in l1:
5         count += 1
6 
7 my_len()  # 函数名 + () 执行此函数
8 
9 #函数是以功能为导向,函数内部尽量不要有print

三、函数的返回值

3.1 遇到return 此函数结束,不在向下进行

1 def my_len():
2     l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3]
3     print(1111)
4     print(222)
5     return
6     print(333)

3.2 return返回值

3.2.1 不写return,返回None

1 def my_len():
2     l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3]
3     count = 0
4     for i in l1:
5         count += 1
6 print(my_len())
View Code

3.2.2 return None ,返回None

1 def my_len():
2     l1 = [1,2,3,4,5,6,7]
3     count = 0
4     for i in l1:
5         count += 1
6     return None
7 print(my_len())
View Code

 3.2.3 return 单个值 返回此单个值

def my_len():
    l1 = [1,2,3,4]
    count = 0 
    for i in l1:
        count += 1
    return 'alex'
print(my_len())

3.2.4 return 多个值 将多个值包在元组中,返回给调用者此元组

 1 def my_len():
 2     l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3]
 3     count = 0
 4     for i in l1:
 5         count += 1
 6     return 1,2,[123,2]
 7 ret = my_len()
 8 print(ret)
 9 def my_len():
10     l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3]
11     count = 0
12     for i in l1:
13         count += 1
14     return 1,2,[123,2]
15 ret1,ret2,ret3 = my_len()
16 print(ret1,ret2,ret3)
View Code

四、函数的参数

4.1 函数的传参

 1 l2 = [1, 2, 3, 4, 5, 6, 5, 4, 3, 3, 'alex']
 2 #函数的传参
 3 def my_len(x):  #形参:形式参数
 4     count = 0
 5     for i in x:
 6         count += 1
 7     return count
 8 ret = my_len(l2)  # 实参:实际参数
 9 print(ret)
10 len(s)

4.2 实参传参

4.2.1 按位置传参

1 def my_len(x,y,z):  #形参:形式参数
2     count = 0
3     for i in x:
4         count += 1
5     return count
6 ret = my_len(l2,s,'alex')  # 按位置传参
7 print(ret)

4.2.2 按关键字传参

1 def func(x,y):
2     z = x if x > y else y
3     return z
4 func(y = 2,x = 3) #关键字传参

4.2.3 混合传参 关键字参数永远在位置参数后面

1 def func(x,y,a,b):
2     print(x,y)
3     print(a,b)
4 func(1,2,b = 34,a = 3) #  混合传参

4.3 形式传参

4.3.1 位置参数

def my_len(x,y):  #形参:形式参数
    count = 0
    for i in x:
        count += 1
    return count
ret = my_len(2,3)  # 按位置传参
print(ret)

4.3.2 默认参数

def func(name,sex=''):
    with open('name_list','a',encoding='utf-8') as f1:
        f1.write('{}  {}
'.format(name,sex))
while True:
    name = input('请输入名字:')
    if '' in name:
        sex = input('请输入性别:')
        func(name,sex) #  混合
    else:
        func(name)

 陷阱:

1 #[] {} () 
2 def func(name,l = []):
3     l.append(name)
4     return l
5 print(func('alex'))
6 print(func('wusir'))

4.3.3 动态参数

 1 # *args 动态参数,不定长参数
 2 #args元组,包括了所有的位置参数
 3 #**kwargs,包括了关键动态参数
 4 #顺序:位置参数==>*args==>默认参数==>**kwargs
 5 def func(a,b,c,*args,sex = '',**kwargs):
 6     print(a)
 7     print(b)
 8     print(c)
 9     print(args,type(args))
10     print(sex)
11     print(kwargs)
12 func(1,2,'alex','wusir','ritian ',sex = '',name = 'taibai',age = 21)
13 ############
14 def func2(*args,**kwargs):
15     #万能参数
16     print(args)
17     print(kwargs)
18 func2(1,2,3,5,name='alex',age=56)
19 ############
20 def my_sum(*args):
21     count = 0
22     for i in args:
23         count += i
24     return count
25 print(my_sum(1,2,3,6,78))
26 print(sum([1,2,3]))
27 #魔法运算:打散
28 def func2(*args,**kwargs):
29     print(args)
30 l1 = [1,2,3,]
31 l2 = [1,2,3,2,3,100,2]
32 func2(*l2,*l1)
33 ########
34 def func3(*args,**kwargs):
35     print(args)
36     print(kwargs)
37 dic = {'name':'alex','age':12}
38 dic2 = {'name':'jin','age':22}
39 func3(**{'name1':'alex','age1':12},**{'name2':'jin','age2':22},name3 = 'wusir')
View Code
原文地址:https://www.cnblogs.com/xiaobin12126/p/8392702.html