zoukankan      html  css  js  c++  java
  • python_day5

    一:函数

    1.函数的定义和调用:(没有定义就调用会报错)

    >>> def MyFirstFunction():
        print('这是我创建的第一个函数!')    
    >>> MyFirstFunction()
    这是我创建的第一个函数!
    
    
    >>> def MySecondFunction(name):
        print(name+'I love you!')
    >>> MySecondFunction('小甲鱼')
    小甲鱼I love you!
    View Code
    >>> def addFuction(num1,num2):
        result=num1+num2
        print(result)
    
    >>> addFuction(1,2)
    3
    View Code

    2.函数文档的定义和查看

    >>> def MyFirstFunction(name):
        '函数定义过程中的name叫形参'
        #这里是注释
        print('传递进来的'+name+'叫做实参,因为它是具体的参数值')
        
    >>> MyFirstFunction('wwq')
    传递进来的wwq叫做实参,因为它是具体的参数值
     
    >>> MyFirstFunction.__doc__
    '函数定义过程中的name叫形参'
    View Code

    3.关键字参数(当参数很多时是个防止出错的好办法)

    >>> def saySome(name,words):
        print(name+'->'+words)
    
        
    >>> saySome('小甲鱼','让编程改变世界!')
    小甲鱼->让编程改变世界!
    >>> saySome('让编程改变世界!','小甲鱼')
    让编程改变世界!->小甲鱼
    >>> saySome(words='让编程改变世界!',name='小甲鱼')
    小甲鱼->让编程改变世界!
    View Code

    4.默认参数

    >>> def saySome(name='小甲鱼',words='让编程改变世界!'):
        print(name+'->'+words)
        
    >>> saySome()
    小甲鱼->让编程改变世界!
    >>> saySome('wwq')
    wwq->让编程改变世界!
    View Code

    5.收集参数/可变参数(如果参数里面先有收集参数,后面还有参数,就要使用关键字参数指明或者使用默认参数,不然会认为所有参数都会属于收集参数)

    >>> def test(*params):
        print('参数的长度是:',len(params))
        print('第二个参数是:'+params[1])
    
        
    >>> test(1,'wwq',2,3,4,3.14,5)
    参数的长度是: 7
    第二个参数是:wwq
    View Code
    >>> def test(*params,exp):
        print(len(params),exp)
    
        
    >>> test(1,2,3,'wwq')
    Traceback (most recent call last):
      File "<pyshell#45>", line 1, in <module>
        test(1,2,3,'wwq')
    TypeError: test() missing 1 required keyword-only argument: 'exp'
    
    >>> test(1,2,3,exp='wwq')
    3 wwq
    View Code

    二:函数与过程:

    1.函数返回值

    python中,函数如果没有定义return返回值,函数也有自己默认的返回值

    >>> def test():
        print('hello')
    
     
    >>> test()
    hello
    
    >>> temp=test()
    hello
    >>> temp
    >>> 
    >>> print(temp)
    None
     
    >>> type(temp)
    <class 'NoneType'>
    View Code

    2.函数变量的作用域问题

    def discounts(price,rate):
        final_price=price*rate
        return final_price
    ord_price=float(input('请输入原价:'))
    rate=float(input('请输入折扣率:'))
    new_price=discounts(ord_price,rate)
    print('打折后的价格是:',new_price)
    print('final_price=',final_price)#这句是错误的
    View Code

    三:内嵌函数与闭包

    1.global关键字

    >>> count=5
    >>> def func():
        count=10
        print(count)
    
    >>> func()
    10
    >>> count
    5
    
    #下面使用global关键字
    >>> def func():
        global count
        count=9
        print(count)
        
    >>> func()
    9
    >>> count
    9
    View Code

    2.内嵌函数(内嵌函数的定义和调用都在外部函数里面)

    >>> def func1():
        print('func1()正在被调用')
        def func2():
            print('func2()正在被调用')
        func2()
    
        
    >>> func1()
    func1()正在被调用
    func2()正在被调用
    View Code

    3.闭包,nonlocal关键字

    >>> def FunX(x):
        def FuncY(y):
            return x*y
        return FuncY
    
    >>> i=FunX(8)
    >>> i
    <function FunX.<locals>.FuncY at 0x03506C48>
    # i 的类型是函数
    >>> i(5)
    40
    
    >>> FunX(4)(9)
    36
    View Code
    >>> def fun1():
        x=5
        def fun2():
            x*=x
            return x
        return fun2()
    
    >>> fun1()
    Traceback (most recent call last):
      File "<pyshell#102>", line 1, in <module>
        fun1()
      File "<pyshell#101>", line 6, in fun1
        return fun2()
      File "<pyshell#101>", line 4, in fun2
        x*=x
    UnboundLocalError: local variable 'x' referenced before assignment
    
    
    >>> def fun1():
        x=5
        def fun2():
            nonlocal x
            x*=x
            return x
        return fun2()
    
    >>> fun1()
    25
    View Code

    四:lambda表达式

    1.匿名函数

     >>> def ds(x):
        return x*2+1
    
    >>> ds(5)
    11
    
    
    >>> lambda y:y*2+1 #冒号前面是原函数的参数,冒号后面是函数的返回值
    <function <lambda> at 0x03506E40>
    >>> g=lambda y:y*2+1
    >>> g(4)
    9
    View Code
    >>> def add(x,y):
        return x+y
    
    >>> add(3,4)
    7
    
    >>> g=lambda x,y:x+y
    >>> g(3,4)
    7
    View Cod

    lambda表达式的作用:
    1.1python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如说我们只是需要写个简单的脚本管理服务器时间,不需要专门定义一个函数然后再调用,使用lambda函数可以使代码更加精简。
    1.2.对于一些比较抽象并且整个程序执行下来只调用一两次的函数,使用lambda不需要考虑命名问题。
    1.3.简化代码的可读性。

     2.两个厉害的BIF函数

    filter()

    #把非true的过滤掉
    >>> filter(None,[1,0,False,True])
    <filter object at 0x00711410>
    >>> list(filter(None,[1,0,False,True]))
    [1, True]
    >>> def odd(x):
        return x%2
    
    >>> temp=range(10)
    >>> show=filter(odd,temp)
    >>> list(show)
    [1, 3, 5, 7, 9]

    也可以用一句话来写:

    >>> list(filter(lambda x:x%2,range(10)))
    [1, 3, 5, 7, 9]
     

    map()映射:

    >>> list(map(lambda x:x*2,range(10)))
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  • 相关阅读:
    更改默认alert框体
    自定义垂直拖动的seekbar进度条
    android适配pad和部分手机底部虚拟按键+沉浸式状态栏
    解决studio的URI is not registered (Setting|Language&Frameworks|Schemas and DTDs)
    王者荣耀是怎样炼成的(二)《王者荣耀》unity安装及使用的小白零基础入门
    王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍
    使用python(command line)出现的ImportError: No module named 'xxx'问题
    Android Studio生成keystore签名文件步骤讲解
    greendao数据库初次使用的配置及多表关联的初始化
    android视频双向实时通讯的横竖屏切换
  • 原文地址:https://www.cnblogs.com/wwq1204/p/10688542.html
Copyright © 2011-2022 走看看