python-函数

函数:

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

函数能提高应用的模块性和代码的重复利用率。也可以自己定义函数,叫自定义函数。

1、定义一个函数:

在python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

 2、语法:python定义函数使用def关键字,一般格式如下:

def 函数名(参数列表):
    函数体

      默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

3、函数的调用:

    函数名([实参])

# 定义函数
import random
def yan_zheng(length):
    code = ''
    a = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
    for i in range(length):
        ran = random.choice(a)
        code+=ran
    print('验证码为:',code)

#调用函数
yan_zheng(4)
yan_zheng(5)
# 验证码为: IQls
# 验证码为: a4kpw

 

4、函数的参数:

  1》普通参数:

  参数的个数:要求定义函数时的个数与调用函数时个数要一致。

from collections import Iterable

def func(name,friends):
    # 打印信息
    print('{}的朋友们如下'.format(name))
    if isinstance(friends,Iterable):
        for friend in friends:
            print(friend)
    else:
        print(friends)

# 添加朋友们friends
def add_friend(f):
    name = input('输入朋友们的名字:')
    if isinstance(f,list):
        f.append(name)

name = '钢铁侠'
friends = ['雷神','黑寡妇','绿巨人']
# 调用函数查看friends
func(name,friends)
# 添加朋友
add_friend(friends)  # 输入朋友们的名字:gang
print(friends)  # ['雷神', '黑寡妇', '绿巨人', 'gang']

 

  2》参数的类型:

     不可变:str  int  float  bool  tuple

     可变: list  set  dict  ------可变类型函数传递的是地址

    不可变的参数给的是值  

    可变的参数给的是地址

5、函数的参数:

  1》默认值参数:在定义函数的时候,对某个参数设置一个固定的值。

     def func(a,b=10):

     其中b = 10 就是默认值

     调用时:

     func(8)   ----- a=8,b=10  此时使用了默认b=10的值

     func(1,5) ----- a = 1,b=5  此时5替换了原来的默认值

   注意:在定义默认值的时候必须要放在参数的后面,否则报错

def func(a,b=10):
    r = a + b
    print(r)

func(8)   # 18
func(4,5) # 9

 

  2》关键字参数:在调用的时候通过关键字的方式明确指明是给哪一个参数的

    func(b=6)   ----- b=7就是关键字的方式

    func(b=1,a=2)    ----  顺序乱也是没有关系,关键是能够明确给那个参数赋值

def func(b=8,a=10):
    r = a + b
    print(r)

func(a=4,b=5) # 9

  补充:拆包、装包

list1 = [4,7,8]
n1,n2,n3 = list1  # 先做拆包动作再给前面变量赋值
print(n1,n2,n3)  # 4 7 8

list2 = [1,2,3,6,7,8]
x,y,*z = list2
print(x,y,z)  # 1 2 [3, 6, 7, 8]
x,*y,z = list2
print(x,y,z)  # 1 [2, 3, 6, 7] 8

 

  3》可变类型参数:*args    **args

  def   函数名(*args,**args):

    pass

  args   --->()     元组 底层会将所有的位置参数存放到args

  kwargs   ---->{}   字典  会将所有的关键字参数放到字典中

  调用:

  函数名(1,2,3)    ------  1,2,3  位置参数   ---- (1,2,3)

  函数名(a=1,b=2) ----- a = 1,b=2 关键字参数 -------{'a':1,'b':2}

def func(a,b=0,*args):
    print(a)
    print(b)
    print(args)

func(4,6,7,8,9)  
# 4
# 6
# (7, 8, 9)
func(6)
# 6
# 0
# ()
func(1,2)
# 1
# 2
# ()

 

注:只要函数定义中出现可变参数,则在使用关键字参数的时候要慎重。

----------------

def func1(a,*args):
    print(a)
    print(args)

func1(10)
func1(1,2,3)
# 只要调用函数,参数是至少必须填一个的

 

**args 关键字参数

def func2(*args,**kwargs):
    print(args)   # ()
    print(kwargs)  # {}

调用func2
func2()
func2(1,2,3,4)
func2(1,3,5,a=6,b=10)

 

posted @ 2019-07-31 18:16  刚--  阅读(241)  评论(0编辑  收藏  举报