• Python之函数知识


    Python函数分类

    a,内置函数      

    b,自定义函数

    c,导入函数

    一个函数就相当于一个功能块,比如获取数据库,更新数据库,函数其实就是代码的分块,调用函数来执行代码块

    一块就代表一个功能

    内置函数有以下这些

    vars() 当前模块的所有变量

    >>> vars()
    {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'nama': 'alex', '__package__': None}

    __doc__  :注释内容

    比如

    >>> import Queue
    >>> print Queue.__doc__
    A multi-producer, multi-consumer queue

    __name__ 被执行的脚本__name__值等于main 其他的等于本身

    使用main来标示这个程序的主模块是哪一个

    if  __name__=="__main__"  #这个文件就是程序的主文件,主函数

        xxx                              #执行xxx

    reload()如果一个模块导入(import)一次就常驻内存,假如一个模块修改了需要重新导入一次使用reload()重新加载

    id()记录内存地址

    is 比较地址

    计算级别

    cmp(2,3)比较

    abs()计算绝对值

    bool()计算布尔值

    divmod(10,3)求商和余数分页

    max()取最大

    min()去最小

    sum()求和

    pow()求幂

    len()计算序列长度

    all()接收一个序列,判断所有值都是真的返回真,否则返回假

    例如

    >>> li =[1,2]
    >>> all(li)
    True
    >>> li =[1,2,""]
    >>> li
    [1, 2, '']
    >>> all(li)
    False

    any()只要有一个是真就返回真

    chr()接收一个数字转出字符码

    ord() 接收一个值转化成数字

    hex()10进制转换成16进制

    oct()10进制转换成8进制 

    bin()10进制转换成2进制

    >>> hex(13)
    '0xd'
    >>> oct(12)
    '014'
    >>> bin(8)
    '0b1000'

    range()按顺序生成序列

    xrange()生成器生成序列

    enumerate()

    用法

    >>> for k,v in enumerate(li):
    ... print k,v
    ...
    0 11
    1 22
    2 33
    3 44
    4 55

    循环序列自动生成下标对应value,想要从1开始在li后面加参数1指定数字的起始值

    其他

    内置函数是无法满足需求的

    自定义函数

    面向过程的编程假如需要实现同样的功能是通过复制代码来实现,面向函数编程可以通过定义函数,然后调用函数.

    函数的返回值

    1,未明确指定返回值,返回None

    2,返回值可以赋值给某个变量

    参数:

      普通参数

      默认参数

      动态参数

    #形式参数,形参

    #实际参数,实参

    动态参数

    >>> def func(*arg):
    ...    print arg
    ...
    >>> func()
    ()
    >>> li=[1,2]
    >>> func(1)
    (1,)
    >>> func(1,2)
    (1, 2)
    >>> func(li)
    ([1, 2],)

    不管收到什么参数都整合成元祖

    非动态参数燕严格按照定义输入参数个数

    >>> li=(1,2,3,4)
    >>> func(li)
    ((1, 2, 3, 4),)
    >>> func(*li)
    (1, 2, 3, 4)

    只把参数放入生成一个元祖中的元祖,前面加*就是原来的元祖(列表也是类似的结果),对于字符串效果一样

    小结

    1,接受多个参数

    2,内部自动构造元祖

    3,序列,*,避免内部构造元祖或列表

    >>> def func(**kwargs):
    ...    print kwargs
    ...
    >>> func(**li)
    {'1': 'a', '2': 'b'}

    定义时候加**生成字典,传递参数的时候也要加2个*

    也可以直接在函数传递参数的时候使用key=value的方式来传递

    >>> func(k1=123,k2=454)
    {'k2': 454, 'k1': 123}

    定义一个又可以传递单值的有可以传递字典的函数

    >>> def func(*args,**keargs):
    ...    print args
    ...    print keargs
    ...
    >>> func(1)
    (1,)
    {}
    >>> func(1,2)
    (1, 2)
    {}
    >>> func(k1=123,k2=999)
    ()
    {'k2': 999, 'k1': 123}

    看一下格式化列子,类似于动态传参

    >>> s = "i am {0},age{1}"
    >>> s.format('alex','18')
    'i am alex,age18'
    >>> s = "i am {name},age{age}"
    >>> s.format(name='alex',age='18')
    'i am alex,age18'

  • 相关阅读:
    SpringBoot应用配置常用相关视图解析器
    从Spring到SpringBoot构建WEB MVC核心配置详解
    集美大学网络15软工团队作业8分数统计
    集美大学网络15软工个人作业4分数统计
    集美大学网络15软工个人作业5分数统计
    集美大学网络15软工团队作业9分数统计
    Alpha冲刺阶段评分发布
    事后诸葛亮作业评分表
    软工网络15个人作业3-评分发布
    软工网络15个人阅读作业1-评分发布
  • 原文地址:https://www.cnblogs.com/minseo/p/6739671.html
Copyright © 2020-2023  润新知