zoukankan      html  css  js  c++  java
  • python 之自定义函数

    最近一直被定义函数这东东而头大,直到现在还是懵懵懂懂,不是不去问题,而是对于没有一点基础,注意是一丁点基础的没有的,真不知道怎么问题,脑子有些转不过弯来了。
    1.什么是函数
    定义函数
    函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
    面向对象:对函数进行分类和封装,让开发“更快更好更强...”
    函数式编程最重要的是增强代码的重用性和可读性
    函数的理解:相对于把一组功能,组成成一个或把一堆功能块,放在一个函数里面,然后对这个组合命名一个名称。在代码读取的时候,对于函数的内容是不执行的,但会读入内存中。
    例子:
    def mail():
        n = 123
        n += 1
        print(n)
    mail()  # 此时mail已经并定义为一个函数名
    就这么多理解吧,大多都是抄来的,嘿嘿。
    2.说函数,不得不说的return
    return语句是从函数返回一个值,每个函数都要有一个返回值。函数中一定要有return返回值才是完整的函数。如果你没有定义返回值,那么会得到一个结果是None对象,而None表示没有任何值。也就是说,没有retrun这个函数第一无意义,第二没结果,会是这样吗?看看实验就知道了。
    1. def name(x,y):
    2. z = x+y
    3. print(z)
    4. def names(x,y):
    5. z = x+y
    6. return z
    7. test1 = name(1,2)
    8. test2 = names(2,3)
    9. print(test1)
    10. print(test2)
    执行结果:
    1. C:Python34python.exe E:/Python/S12/day1/test1.py
    2. 3 #这个是test1里面有print的所有有显示,但是和test2的不同在于,他只是将结果显示到屏幕上,但对于test1自身来讲,毫无异议,值为空。
    3. None #注意这个是test1 print的结果
    4. 5
    5. Process finished with exit code 0
    希望以上总结是对的,望各界大神,来炮弹批评、批评、批评......
    最后:写函数,就要有return。
    3.形式参数。
    先上例子:
    1. def name(x,y):
    2. z = x+y
    3. print(z)
    当我们去调用时候,可以是name(1,2),其中1,代表x,2代表y,x、y就是形式参数。这里可以有多个,在调用时候是按照顺序进行匹配的。
    4.默认参数
    默认参数是指在定义参数时候就可以给参数进行赋值,当需要对赋值的参数进行修改的时候,也可在调用的时候重新赋值,若不赋值,这时候回使用当初赋值的默认值。具体例子如下:
    1. def show(a1,a2=100):
    2. print(a1,a2) #这里为了打印效果,因此没有使用return
    3. show(111)
    4. show(111,112)
    执行结果:
    1. 111 100 # show(111)结果
    2. 111 112 # show(111,112)结果
    3. Process finished with exit code 0

    这个时候,加入对于a2,没有赋值,则会打印100,若赋值了,就打印赋值的内容,把原来的值就覆盖掉了。
    注意:默认参数必须放在参数的最后面


    5.指定参数
    指定参数就可以让你随心所欲了。
    具体例子如下:
    1. def show(a1,a2):
    2. print(a1,a2)
    3. show(a2=123,a1=999) #这样就会按照顺序进行赋值。
    执行结果:
    1. 999 123
    2. Process finished with exit code
    主要看结果的顺序。
    6.动态参数
    1).带一个* 默认为元组,最少传入一个参数,个数没有限制  传入是个元素就行。
    1. def show(*arg):
    2. print(arg,type(arg))
    3. show(1,22,33,44,55)
    执行结果
    1. C:Python34python.exe E:/Python/S12/day1/test1.py
    2. (1, 22, 33, 44, 55) <class 'tuple'>
    2)带两个参数,是传入形成字典,个数没有限制
    1. def show(**arg):
    2. print(arg,type(arg))
    3. show(n1=11,n2=22,n3=33)
    执行结果:
    1. C:Python34python.exe E:/Python/test1.py
    2. {'n3': 33, 'n2': 22, 'n1': 11} <class 'dict'>
    3. Process finished with exit code 0
    3)下面情况下,就会同时具备元组和字典的功能。写参数的时候规则是一个星星的内容放在前面,两个星星内容放在后面,同时两者的顺序也不能变
    1. def show(*test1,**test2):
    2. print(test1,type(test1))
    3. print(test2,type(test2))
    4. show(11,22,3,n1=222,n2='ddd')
    执行结果:
    1. C:Python34python.exe E:/Python/test1.py
    2. (11, 22, 3) <class 'tuple'>
    3. {'n1': 222, 'n2': 'ddd'} <class 'dict'>
    4. Process finished with exit code 0
    注意顺序相当重要,顺序不对,无法执行:
    1. def show(*test1,**test2):
    2. print(test1,type(test1))
    3. print(test2,type(test2))
    4. show(n1=222,n2='ddd',11,22,3,)
    执行结果:






  • 相关阅读:
    Android Logcat使用技巧
    SqlClient使用存储过程并获取输出参数的指
    内存调试的东西D/dalvikvm( 809 ): GC_CONCURRENT freed
    android 读写sd卡的权限设置
    Android中EditText的使用方法持續更新
    RSL编译方式的FLEX站点出现#2046错误
    从网络读取数据并动态的显示在ListView中
    LEFT JOIN INNER JOIN 效率比较
    使用Installshield2009 在IIS6部署Asp.net mvc 应用程序
    Installshield2009中使用osql.exe执行数据库脚本
  • 原文地址:https://www.cnblogs.com/worter991/p/5155746.html
Copyright © 2011-2022 走看看