python语法之函数

一、什么是函数

函数类似于一种工具,可以重复调用。

二、为什么要用函数

防止代码的冗余;代码的可读性差。

三、使用方法

3.1

1 定义函数----->make a wapen

2 调用函数----->use it

## 函数的命名规范和变量名一样,需要具有意义。

四、函数的三种分类

4.1 无参函数

def func():    # ()没有参数
    print('hello world')
func()

 

4.2 空函数

def func2():     
    pass     #代码块先用pass代替, 空函数
func2()

 

4.3 有参函数

def func1(a,b):    # ()有参数, 有参函数
    print(a,b)
func1(1,2)   # a= 1 b =2

 

4.4把函数名赋值给变量

def func3():
    print('小猪皮蛋')
f = func3    #通过把函数名赋值给变量f,调用f也能调用函数
f()

 

五、函数的返回值

5.1 不写return:返回none

def u():
    print(1)
# u()        # 1
print(u())     #None

5.2 只写return:只有结束代码的效果,返回none

def u():
    print(1)
    return
# u()        # 1
print(u())     #None

5.3 写return none:与上一条一样效果

def u():
    print(1)
    return None
# u()        # 1
print(u())     #None

5.4 return 返回一个值:可以将返回的结果当做一个变量名使用

def s(a,b):
   return a,b
s(1,2)     #看不见结果
d = s(1,2)  #  把函数的结果给变量d就可以看见结果
print(d)   #(1, 2)

5.5 return 返回多个值:  5.5.1 将返回的多个值默认存入元祖返回

                                        5.5.2 函数的返回不想被修改

                                        5.5.3 可以自己指定返回的类型

def func1():
    return 1, "2"
print(func1())   #(1, '2') 返回元祖
a = 1
b = 2
c = '3'
d = [4, 5]
e = {'name': 'sean'}
def func(a, b, c, d, e):
    return a, b, c, d, e
print(func(a, b, c, d, e))   #(1, 2, '3', [4, 5], {'name': 'sean'})   #返回指定类型

 

## return 是函数结束的标志,函数体代码,只要执行return,函数就执行结束。

 

六、函数的参数

6.1 参数类型

形参: 函数在定义阶段就规定的参数,相当于定义变量时的变量名。

实参: 函数在调用阶段传入的参数,相当于定义变量时的变量值。

def foo(a):    #a就是形参
    print(a)
foo(1)   #1就是实参

 

6.2 传参方式

6.2.1  位置参数: 通过位置进行传参。

def s(a,b):
    return a,b
print(s(1,2))   #(1, 2) a=1 b=2

6.2.2  关键字参数: 指定参数进行传参。

def s(a,b):
    return a,b
print(s(b=1,a=2))   #(2, 1)  b=1,a=2

6.2.3  默认参数: 在定义函数阶段就已经传入参数,如果在实参时传入一个新参数,就会使用新参数。***不能将可变类型当参数传递。

def s(a,b,c=3):
   return a,b,c
s(1,2)
print(s(1,2))  #(1, 2, 3)默认把c=3也传出来
def s(a,b,c=3):
   return a,b,c
# s(1,2,c=4)
print(s(1,2,c=4))  #(1, 2, 4)指定c=4时,就把指定值传出来

6.2.4  可变长参数

6.2.4.1  *args  : 接收所有溢出的位置参数,接收的值都被存入一个元祖。

示范:

 

 

 

 

 

解决方法:

# *args
def f(a,b,*args):    #接收溢出位置参数
    print(a,b,args)    #  args 会把溢出的参数存入一个元祖
f(1,2,3,4,5)   #1 2 (3, 4, 5)  
def f(a,b,*args):     #接收溢出位置参数
    print(a,b,*args)   #  args 会把溢出的参数打散
f(1,2,3)   #1 2 3

 

6.2.4.2  **kwargs  : 接收所以溢出的关键字参数,接收的值都被存入一个字典。

示范:

 

 

 

 

 

解决方法:

# **kwargs
def f(a, b, **kwargs):
    print(a, b, kwargs)  # kwargs:  会把溢出的参数以字典返回
f(1, 2, c=3)  # 1 2 {'c': 3}
def f(a, b, **kwargs):  # 接收溢出关键字参数
    print(a, b, *kwargs)  # *kwargs 会把溢出的参数以字典中的key返回
f(b=1, a=2, c=3)  # 2 1 c

 

##  * 的作用打散你传入的容器类型

 

 

posted @ 2019-11-09 20:50  小猪皮蛋  阅读(427)  评论(0编辑  收藏  举报