zoukankan      html  css  js  c++  java
  • 012函数

    #函数定义
    def  f():
        print('love Q')
    f()

    ##参数
    #形参和实参
    def add(a,b):
        print(a+b)
    add(7,5)

    def  print_info(name,age):
        print('name:%s' % name)
        print('age:%d' % age)
    print_info('xia',21)                         #必须参数
    print_info(age = 20,name = 'qiu') #关键字参数

    #默认参数,
    def  print_info(name,age,sex='male'):
        print('name:%s'%name)
        print('age:%d'%age)
        print('sex:%s'%sex)
    print_info('xia',21)
    print_info('qing',20,'female')


    #不定长的的参数,用个*加一个变量名是保存在元组里面,**两个是在字典里面
    def  print_info(*args,**kwargs):
        for  i  in  args:                    #这个是元组
            print(i)
        for  x  in  kwargs:               #这个是字典
            print(x,kwargs[x])
    print_info('xia',21,'male',job='it',lover='qing')      位置不能错
    把列表的各个元素传进去,在列表前面加个*  ,eg:*[1,2,3]
    把字典的各个元素传进去,在字典前面加**,eg:**{'name':'xia','lover':'q'}                         ##在后面的jango会经常使用

    #这里默认参数放左边
    def  print_info(sex='male',*args,**kwargs):
        print(sex)
        for  i  in  args:#这个是元组
            print(i)
        for  x  in  kwargs:#这个是字典
            print(x,kwargs[x])
    print_info('female','xia',21,'male',job='it',lover='qing')

    ##return
    和其他语言基本一样
    不同的是,python可以返回多个对象,只是放在元组里面

    ##高阶函数(假的):函数的形参有函数,通过函数调用函数
    def  my_func(a,b,f):
        return   f(a)+f(b)
    def  f(n):
        return  n * n
    print(my_func(3,4,f))
    函数名也是一个变量,可以赋值给其他变量


    ###作用域

    LEGB

    x=int(2.9)    #built_in
    局部变量不能改变全局变量,要改变就+Global
    嵌套作用域的的使用nonlocal关键字

    函数的阶乘与递归,因为和c语言还有Java都是一样,我很清晰,所以就不再总结了,重在使用,经典:汉诺塔问题。
    递归注意,必须有一个结束条件


    ##内置函数
    python里面就有的函数
    #filter(function, iterable) 函数   #实现对迭代器过滤

    #map函数实现对迭代器的操作
    str=['q','h']
    def  func(s):
        return''.join([s,'xia'])
    ret=map(func,str)
    print(list(ret))


    #reduce函数
    from  functools  import  reduce
    def  add1(x,y):
        return   x+y
    print(reduce(add1,range(1,11)))           ##实现的过程是先取前面两个操作,然后返回去,再从里取两个操作
    也可以实现阶乘


    #lambda函数
    a=1;b=2
    mysum=lambda   a,b:  a+b          #实现了a+b,用法lambda+空格+参数+冒号+空格+操作
    和reduce配合使用


  • 相关阅读:
    php分页问题
    php中memcached的使用
    Linux安装Git
    day06
    day07
    day03
    day05
    day04
    列表的操作
    初识数据类型
  • 原文地址:https://www.cnblogs.com/-nbloser/p/8076542.html
Copyright © 2011-2022 走看看