博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之函数
阅读量:6258 次
发布时间:2019-06-22

本文共 3294 字,大约阅读时间需要 10 分钟。

Python之函数

  

  一、为什么要用函数:

    在大量的代码块的前提下,会后很多相同的功能调用,会导致简单的代码被多次重用。

    所用会有代码冗余的问题,无法统一管理,可维护性差。  

  函数分为内置函数和自定义函数。 

 

  二、如何定义函数:    

1 def test(*args,**kwrags):2     """3     函数功能的注释4     """5     print('#'*13)   #函数体6   return    #返回值,可以是任意类型7 8 test()   # 调用函数

 

  三、函数的参数:

    无参函数:

     函数只是用来打印一些普通的语句。不需要依赖外部传来的参数就可以运行的函数。

def test():    print('is test')

    有参函数:

     函数依赖于外部传来的值。才可以实现函数的调用,需要有返回值。

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

    函数的形参和实参:

      形参:就是定义函数时,在括号里的参数。   

def test(x,y):    # x,y 就是形参    pass

      实参:就是在调用函数时,传入的参数。实参尽量用不可变类型,字符串,数字,元组。

def test(x,y):    res = x+y    return resret = test(1,3)    # 1,3就是实参print(ret)
#实参也可以是变量的形势def test(x,y):    print(x)    print(y)a=1111b=2222test(a,b)   #这里的实参a,b 既是变量的形势,以变量的形势传入到函数test里。

    函数的位置参数,形参的位置参数,实参是位置传参。必须传值。

      实参可以按位置传值。

def test(x,y):    print(x)    print(y)test(1,3)   # 实参的位置参数,1就给x, 3就给y

      实参也可以按关键字传值。

def test(x,y):    print(x)    print(y)test(x=1,y=3)     # 实参按关键字传值

      关键字传值和位置传值可以混合用

def test(x,y):    print(x)    print(y)test(1,y=3)

 

    函数的默认参数:在定义函数阶段,就已经定义好值了。默认参数必须放在位置参数后边。

def test(x,y=1):   #y=1 就是定义好的默认参数,在不给y传值的情况下,就用默认的。    print(x)    print(y)test(5)     #在传值时,可以不用给y传值。test(1,4)  #也可以继续给y传值,只不过,传的值会覆盖已经定义好的值。

    函数的可变参数:(*args,**kwargs)

    *args接收列表和元组类型,**kwargs接收字典类型。

    按位置传值,多余的交给*args处理,处理成元组。

    按关键字传值,多余的交给**kwargs处理成字典。

 

    *args:

1 def test(x,*args):2     print(x)3     print(args)4 5 test(1,2,3,4,5,6,7,7,'a','b')

 

    **kwargs:

def test(x,**kwargs):    print(x)    print(kwargs)test(1,y=2,z=3)

 

注意:

    一、传参的位置:位置参数 --- *args --- 关键字参数 --- 默认参数 --- **kwargs

    二、对于一个形参,只能赋值一次。

    三、按位置传值,指的是实参。

    四、位置参数,指的是形参。必须传值。

 

  四、空函数:

    用于项目的体系设计。

def test():    pass

 

  五、函数的调用:

  无参函数在调用时,直接调用即可。

  有参函数在调用时,加上要传的参数即可。有几个参数位,就传几个参数。

#带参数的函数def test(x,y):    print(x,y)    res = x+y    return resret = test(1,4)  #有参函数的调用print(ret)

  

  六、函数的返回值:

      可以返回任意数据类型。

      没有return的,返回None。

      return 1 ,返回就是1。

      return 1,2,3    返回的就是一个元组(1,2,3)

 

    函数在执行到return时,只会执行一个return,并且执行完return就结束这个函数的调用了。

def test():    """    不写返回值的情况,结果是None    :return:    """    print('aaaa')res = test()print(res)def test(x,y):    """    有返回值的情况, 返回结果    :param x:    :param y:    :return:    """    res=x if x>y else y    return resres1 = test(1,4)print(res1)def test(x,y):    """    return可以返回任何数据类型    :param x:    :param y:    :return:    """    return 1,2,3,[1,2],{
'a':1},{1,2,3}res = test(1,2)print(res)

 

  七、名称空间

    有关名称的定义,都会放在名称空间里。

    名称空间分为三种:内置名称空间、全局名称空间、局部名称空间。

    内置名称空间(全局作用域):内置在Python解释器里的。

    全局名称空间(全局作用域):顶头写的变量,就是全局名称。

    局部名称空间(局部作用域):在函数内部定义使用的。外部使用不了。

 

  八、作用域

    先局部找,在全局找,最后内置找。没有在报错。

    先定义,后使用。

x=0def test():    x=100    print(x)test()

 

  九、函数嵌套

     函数的嵌套调用:好处是节省代码

        函数体内部在调用其他的函数

def test1(x,y):    res = x if x>y else y    return resdef test2(a,b,c,d):    res1 = test1(a,b)    res2 = test1(res1,c)    res3 = test1(res2,d)    return res3print(test2(1,56,2,68))

  在test2函数里嵌套了test1。

 

     函数的嵌套定义:就是在函数里再定义函数。

def test1():    def test2():        def test3():            pass

 

def test1():    print('----test1',x)    x=1    def test2():         x=2        print('------test2',x)        def test3():             x=3            print('----test3',x)        test3()   test2()test1()

 

转载于:https://www.cnblogs.com/george92/p/8507385.html

你可能感兴趣的文章
Hql 中实用查询时候 引号的使用
查看>>
利用PowerShell复制SQLServer账户的所有权限
查看>>
SQLServer 维护脚本分享(10)索引
查看>>
js里父页面与子页面的相互调用
查看>>
AES加解密【示例】
查看>>
jdbc向各种数据库发送sql语句
查看>>
比特币进一步学习-针对作弊问题的处理
查看>>
Android实现手机摄像头的自动对焦
查看>>
ASCII流程图
查看>>
Linux知识积累(5) 关机shutdown和重启reboot
查看>>
HTML5为输入框添加语音输入功能
查看>>
[LeetCode] Find Permutation 找全排列
查看>>
os.environ() 说明
查看>>
Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍
查看>>
tomcat安装不成功.提示:failed to install tomcat6 service ,check your setting and permissions
查看>>
[转]当当网高可用架构之道--转
查看>>
ROS学习网址【原创】
查看>>
mysql数据库对时间进行默认的设置
查看>>
喵哈哈村的魔法考试 Round #3 (Div.2) 题解
查看>>
音频 API 一览
查看>>