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

222222222222222222

时间:2018-12-28 22:08:42      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:函数返回值   函数的参数   传递   error   highlight   表达式   contain   调用函数   ram   

函数基础

一、定义函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"""
#语法
def 函数名(参数1,参数2,参数3,...):
    ‘‘‘注释‘‘‘
    函数体
    return 返回的值
 
#函数名要能反映其意义
"""
 
def tol(a,b):              # def 定义函数
    """
    求和
    :param a:
    :param b:
    :return:
    """
    ret=a+b                 #函数体
    return ret             #函数返回
tol(1,2)                    #调用函数  函数名+括号就是调用
print(tol(1,2))            #打印返回值,如果没return语句,返回值为None

二、使用原则:先定义,再调用

函数即“变量”,“变量”必须先定义后引用。未定义而直接引用函数,就相当于在引用一个不存在的变量名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 情况1:
def foo():
    print(‘from foo‘)
    bar()
foo()  # 报错 NameError: name ‘bar‘ is not defined
 
# 情况2:
def bar():
    print(‘from bar‘)
def foo():
    print(‘from foo‘)
    bar()
foo()  # 正常
 
# 情况3:
#######定义阶段#######
def foo():
    print(‘from foo‘)
    bar()
def bar():
    print(‘from bar‘)
#######定义阶段#######
 
#######调用阶段#######
foo()  #正常
# ******不报错,调用的时候已经定义好了******#先定义,后调用
#######调用阶段#######

三、定义函数的三种形式

1
2
3
4
5
6
7
8
def tell_tag(tag,n): #有参函数
    print(tag*n)
 
def tell_msg(): #无参函数
    print(‘hello world‘)
 
def tell_blank():#空函数
    pass

四、调用函数的三种形式

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

五、函数返回值

  • 1、无return->None
  • 2、return 1个值->返回1个值
  • 3、return 逗号分隔多个值->元组
  • 3、return 逗号分隔多个值->元组

六、函数参数

形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,解除绑定

#1、位置参数:按照从左到右的顺序定义的参数
        位置形参:必选参数
        位置实参:按照位置给形参传值

#2、关键字参数:按照key=value的形式定义的实参
        无需按照位置为形参传值
        注意的问题:
                1. 关键字实参必须在位置实参右面
                2. 对同一个形参不能重复传值

#3、默认参数:形参在定义时就已经为其赋值
        可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
        注意的问题:
                1. 只在定义时赋值一次
                2. 默认参数的定义应该在位置形参右面
                3. 默认参数通常应该定义成不可变类型


#4、可变长参数:
        可变长指的是实参值的个数不固定
        而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*args,**kwargs

        ===========*args===========
        def foo(x,y,*args):
            print(x,y)
            print(args)
        foo(1,2,3,4,5)

        def foo(x,y,*args):
            print(x,y)
            print(args)
        foo(1,2,*[3,4,5])


        def foo(x,y,z):
            print(x,y,z)
        foo(*[1,2,3])

        ===========**kwargs===========
        def foo(x,y,**kwargs):
            print(x,y)
            print(kwargs)
        foo(1,y=2,a=1,b=2,c=3)

        def foo(x,y,**kwargs):
            print(x,y)
            print(kwargs)
        foo(1,y=2,**{a:1,b:2,c:3})


        def foo(x,y,z):
            print(x,y,z)
        foo(**{z:1,x:2,y:3})

        ===========*args+**kwargs===========

        def foo(x,y):
            print(x,y)

        def wrapper(*args,**kwargs):
            print(====>)
            foo(*args,**kwargs)

#5、命名关键字参数:*后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递
可以保证,传入的参数中一定包含某些关键字
        def foo(x,y,*args,a=1,b,**kwargs):
            print(x,y)
            print(args)
            print(a)
            print(b)
            print(kwargs)

        foo(1,2,3,4,5,b=3,c=4,d=5)
        结果:
            1
            2
            (3, 4, 5)
            1
            3
            {c: 4, d: 5}

222222222222222222

标签:函数返回值   函数的参数   传递   error   highlight   表达式   contain   调用函数   ram   

原文地址:https://www.cnblogs.com/bubu99/p/10192835.html

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