码迷,mamicode.com
首页 > 其他好文 > 详细

函数复习(一)---函数基础

时间:2019-12-23 22:40:53      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:自定义函数   关键字   size   方案   情况下   不用   报错   不可变   value   

一、定义函数

1.如何自定义函数    (return 返回值和参数不是必须要写的)

#语法
def 函数名(参数1,参数2,参数3,...):
    ‘‘‘注释‘‘‘
    函数体
    return 返回的值

#函数名要能反映其意义

2.函数的使用原则先定义,在调用   (******)

def foo():
    print(from foo)
    bar()
    
def bar():
    print(from bar)
foo() #会报错吗?   不会

#结论:函数的使用,必须遵循原则:先定义,后调用我们在使用函数时,一定要明确地区分定义阶段和调用阶段,会先走定义阶段的foo和bar,等到调用foo函数的时候,内存中已经存在bar函数了

3.函数在定义阶段

只检测语法,不执行代码
也就说,语法错误在函数定义阶段就会检测出来,而代码的逻辑错误只有在执行时才会知道

4.定义函数的三种形式

#1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
#2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值
#3、空函数:设计代码结构

二、调用函数

1.函数返回值

return:函数内可以有多个return,但是只能执行一次return
执行return函数就立刻结束,并且return后的值当做本次调用的结果返回

return返回值没有类型限制
无return->默认返回None
return 1个值->返回1个值
return 逗号分隔多个值->返回一个元组

2.函数调用的三种形式

1 语句形式:foo()
2 表达式形式:3*len(hello)
3 当中另外一个函数的参数:range(len(hello))

三、函数的参数

1.具体应用 (******)重点

1.位置参数:按照从左往右的顺序依次定义的参数
位置形参:必须被传值,多一个少一个都不行
位置实参:与形参一一对应传值

2.关键字参数:按照key=value的形式定义的实参
特点:指名道姓的给形参传值,不再依赖位置
注意:1.关键字实参必须在位置实参的后面。2.不能为同一个参数赋值多次

3.默认参数:在函数定义阶段,就已经为形参赋值了
特点:定义阶段已经有值意味着调用阶段可以不用传值
位置参数通常用于经常变化的参数,而默认参数指的是大多数情况下都一样的
注意:1.默认参数必须放在位置形参的后面  2.默认参数的值只在定义时被赋值一次  3.默认参数的值通常应该是不可变类型

4.可变长参数:(分在形参使用和在实参使用)
在调用函数时,实参值的个数不固定 实参的形式有:位置实参,关键字实参 在形参中使用的解决方案:用
*,**接收多余的实参 (*接收多余的位置实参,**接收多余的关键字实参)

在实参中使用的解决方案:用*,**打散 (*打散元组,**打散字典,然后把打散的值传给一一传给形参)

了解:命名关键字参数
*后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参key=value的形式传递 def foo(x,y,*,m,n) print(x,y) print(m,n) foo(1,2,n=4,m=3) #如果不用key=value形式传参,那么传的值都会被*接收

函数复习(一)---函数基础

标签:自定义函数   关键字   size   方案   情况下   不用   报错   不可变   value   

原文地址:https://www.cnblogs.com/wangcuican/p/12088451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!