4、python全栈之路函数初识

四、函数初识

http://www.cnblogs.com/Eva-J/articles/7125925.html

1、定义函数

def 函数名()

def mylen():  #定义函数
    name = 'alexaaa'  #字符串
    length = 0
    for char in name:
        length += 1
    print(length)

 

在内存中生成mylen函数,定义阶段不走函数体内的程序

#基本函数相关的概念
def 函数名(参数1,参数2):   #形参
    '''
    这是一个解决什么问题的函数
    :param 参数1: 传入一个用户名字
    :param 参数2: 传入一个数字表示用户的年龄
    :return: 返回一个列表
    '''
    print('函数体')
    返回值 = {参数1,参数2}
    return 返回值

# 接受返回值 = 函数名('alex',83)  #函数的调用  —— 实参 实际参数
# print(接受返回值)

#函数的作用

#解决代码冗余

#提高代码的可读性

#提高了代码的重用性

#增强了代码的可扩展性

2、调用函数

函数名()

 

3、函数的返回值

3.1 返回值

关键字 return

#如果是有结果的函数,不用print,而是用return

#如果只是单纯的实现某个功能,没有结果就不用return

#return的作用:

    #1.能够返回值

    #2.结束一个函数的执行

 

3.2 返回None

返回None的情况:

    # 如果函数里什么都不写

    # return

    # return None

 

3.3 返回多值

#返回一个值:return 可以返回任意内容

 

#多返回值:多个返回值以逗号隔开以元组的形式被返回

 

3.4 接受返回值

#1.一个值接受

#2.多个变量接受:返回多少个值就用几个变量去接受,必须不多不少

#列表也可以

 

4、参数

#站在调用角度:实参

#站在定义角度:形参

#参数可以是任意的数据类型

#实参和形参的个数相等

 

5、详解参数

5.1 调用角度

1)按照位置传参

2)按照关键字传参

3)混用:按照位置传参必须在关键字传参之前

 

 

5.2 定义角度

5.2.1 位置参数

 

5.2.2 默认参数

 

#默认参数

    #是可以不传的参数

    #如果不传默认是设置的默认值,如果传就用传入的值

    #默认的值是在定义阶段就确定了

    #默认参数的陷阱:针对可变的数据类型

#默认参数的陷阱

针对可变的数据类型要小心,所以一般不会用可变的数据类型做默认

 

5.2.3 动态参数

#站在函数定义的角度上:*做聚合用,将一个一个的参数组合成一个元组

#站在函数调用的角度上:*做打散用,将一个列表或者元组打散成多个参数

#动态传参:*args,**kwargs组合在一起可以hold 100%所有的传参

*把位置参数转换成元组赋值给args

 

**动态参数,接受按关键字传递过来的参数,组织成一个字典

 

5.3 参数的顺序

参数的顺序:

位置参数-->*args-->默认参数-->**kwargs

 

6、函数嵌套

6.1 函数的嵌套调用

 

6.2 函数的嵌套定义

 

 

#为了保证某些功能特有的函数不被其他人随意调用

 

原文地址:https://www.cnblogs.com/xiaojinyu/p/7464803.html