• Python 函数


    def 语句

    函数用def语句创建,语法如下:
    def function_name(arguments):
        “function_documentation_string”
          function_body_suite
    标题行由def关键字,函数的名字,以及参数的集合(如果有的话组成),def子句的剩余部分包括了一个虽然可选但是强烈推荐的文档字符串,和必须的函数体
     
    #!/usr/bin/env python
    
    def foo():
        print "This foo"
        bar()
    
    def bar():
        print "This bar"
    
    if __name__ == '__main__':
        foo()
    
    /usr/bin/python2.6 /root/PycharmProjects/untitled10/foo.py
    This foo
    This bar
    
    Process finished with exit code 0

    函数属性

    函数属性是python另外一个使用了句点属性标识并拥有名字空间领域
    >>> def foo():
    ...     'foo() --properly create doc string'
    ... 
    >>> foo.__doc__
    'foo() --properly create doc string'
    >>> foo.version
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'function' object has no attribute 'version'
    >>> foo.version = 1.0
    >>> foo.version
    1.0

    内部函数

    在函数体内创建另外一个函数是完全合法的,这种函数叫做内部/内嵌函数
    #!/usr/bin/env python
    
    
    def foo():
        print "This foo"
        def bar():
            print "This is bar"
        bar()
    
    
    if __name__ == '__main__':
        foo()
    
    
    /usr/bin/python2.6 /root/PycharmProjects/untitled10/foo.py
    This foo
    This is bar
    
    Process finished with exit code 0

    函数操作符

    使用一堆圆括号()调用函数,如果没有圆括号,只是对函数的引用,任何输入的带参数都必须放置在括号中
    引用
    调用
    >>> def foo():
    ...     print 'in foo'
    ... 
    >>> a = foo
    >>> a()
    in foo
    >>> foo()
    in foo
    >>> foo
    <function foo at 0x7f3a3fbfa6e0>
    >>> a
    <function foo at 0x7f3a3fbfa6e0>

    关键字参数

    关键字参数的概念仅仅针对函数的调用,这种理念是让调用者通过函数调用中的参数名字来区分参数
    >>> def get_info(name,age):
    ...     print "%s is %s year old" % (name,age)
    ... 
    >>> get_info('bob',20)
    bob is 20 year old
    >>> get_info(20,'bob')
    20 is bob year old
    >>> get_info(age = 20,name = 'bob')
    bob is 20 year old
    >>> get_info(age = 20,name = 'bob')
    bob is 20 year old
    >>> get_info(age = 20,'bob')
      File "<stdin>", line 1
    SyntaxError: non-keyword arg after keyword arg
    >>> get_info(20,name = 'bob')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: get_info() got multiple values for keyword argument 'name'
    >>> get_info('bob',age = 20)
    bob is 20 year old
    >>> get_info()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: get_info() takes exactly 2 arguments (0 given)
    >>> get_info('bob',20,30)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: get_info() takes exactly 2 arguments (3 given)
    >>> def pstar(num = 20):
    ...     print '*' * num
    ... 
    >>> pstar()
    ********************
    >>> pstar(30)
    ******************************
    >>> pstar(20,30)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: pstar() takes at most 1 argument (2 given)

    参数组

    python允许程序员执行没有显示定义参数的函数
    相应的方法是通过一个把元组(非关键字参数)或字典(关键字参数)作为参数组传递给函数
    >>> def foo(*args):
    ...     print args
    ... 
    >>> foo()
    ()
    >>> foo(10)
    (10,)
    >>> foo(10,20,'hello')
    (10, 20, 'hello')
    >>> def add(x,y):
    ...     return x + y
    ... 
    >>> add(10,10)
    20
    >>> add([10,10])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: add() takes exactly 2 arguments (1 given)
    >>> add(*[10,10])
    20
    >>> def func1(args,*non_kwargs,**kwargs):
    ...     print args
    ...     print non_kwargs
    ...     print kwargs
    ... 
    >>> func1()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: func1() takes at least 1 argument (0 given)
    >>> func1(10)
    10
    ()
    {}
    >>> func1(10,20,30,name='bob')
    10
    (20, 30)
    {'name': 'bob'}
     
     
     
     
     
     
     
     
  • 相关阅读:
    进程Queue
    进程ID
    多进程
    queue 生产者、清费者
    让静态页面显示用户登录状态
    apache2.2 + tomcat6 整合以及集群配置整理
    linux安装rzsz
    http_load
    用Ant实现Java项目的自动构建和部署
    Openfire:安装指南
  • 原文地址:https://www.cnblogs.com/weiwenbo/p/6639704.html
Copyright © 2020-2023  润新知