zoukankan      html  css  js  c++  java
  • 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'

  • 相关阅读:
    The Python Standard Library
    Python 中的round函数
    Python文件类型
    Python中import的用法
    Python Symbols 各种符号
    python 一行写多个语句
    免费SSL证书(https网站)申请,便宜SSL https证书申请
    元宇宙游戏Axie龙头axs分析
    OLE DB provider "SQLNCLI10" for linked server "x.x.x.x" returned message "No transaction is active.".
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "xxx.xxx.xxx.xxx" was unable to begin a distributed transaction.
  • 原文地址:https://www.cnblogs.com/minseo/p/6739671.html
Copyright © 2011-2022 走看看