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配合使用


  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/-nbloser/p/8076542.html
Copyright © 2011-2022 走看看