zoukankan      html  css  js  c++  java
  • Python函数使用

    Python函数用def指定函数名,可以指定输入参数,可以指定参数的默认值,也可以用return指定返回值。
    调用时除了默认的位置赋值,也可按关键字赋值。

    一、函数不带参数、没有返回值

    def hello():
        print("hello world")

    二、函数带参数、没有返回值

    def hello(name):    
        print("hello,", name)

    三、函数指定返回值

    1、一般情况返回值

    def hello(name):    
        return "hello," + name

    2、返回True或False
    Python中用内置函数bool传递任何对象来确定是True或False。
    1)如果计算为0、值None、一个空串或一个空的内置数据结构,则为False

    >>> bool(0)
    False
    >>> bool(0.0)
    False
    >>> bool(None)
    False
    >>> bool('')
    False
    >>> bool('   ')
    True
    >>> bool(0)
    False
    >>> bool(0.0)
    False
    >>> bool(None)
    False
    >>> bool('')
    False
    >>> bool([])
    False

    2)任何非空的数据结构都计算为True

    >>> bool(1)
    True
    >>> bool(-1)
    True
    >>> bool(0.01)
    True
    >>> bool('     ')
    True
    >>> bool([1,2])
    True
    >>> bool({'a',1})
    True

    四、函数的说明文档
    1、使用三重引号字符串写函数的说明文档

    def hello():
         """函数例子
        输出hello world"""
         print("hello world")

    函数第二行的三重引号字符串,称为一个docstring(文档字符串),主要是作为一个文档,用来描述一个函数的用途,可以跨多行。

    在Python Shell中输入“hello(”时会自动显示说明文档

    也可以用help请求函数文档,结果如下:

    >>> help(hello)
    Help on function hello in module __main__:
    
    hello()
        函数例子
        输出hello world

    2、使用注解改进文档
    Python 3支持一种称为注解的记法,描述函数返回类型以及所有参数类型

    def hello(name:list) -> str:
         """输出姓名列表"""
         return ",".join(name)

    代码中:list说明参数是一个列表,-> str说明返回值是字符串。

     

    、指定参数的默认值

    为某个参数默认值后,调用函数时,此参数可提供,也可不提供。

    def fun1(p1:float, p2:int=1):    
        return p1 * p2

    上面函数的调用例子

    >>> fun1(50)
    50
    >>> fun1(50,2)
    100
    >>> 

    六、关键字赋值

    函数默认情况下是按位置赋值的,也可以按参数名来引用参数,称为关键字赋值。

    以上面函数fun1为例,调用如下

    >>> fun1(p1=50)
    50
    >>> fun1(p2=2,p1=50)
    100
    >>> 

     七、一个函数的参数可以为另一个函数

    下面test函数接收一个函数对象func作为参数,test函数的返回结果是func的执行结果

    def test(func: object, value: object) -> object:
        return func(value)
    
    print(test(id, 123))
    print(test(id, test))
    print(test(type, test))

    运行结果:

    8791433376208
    40410648
    <class 'function'>

    八、从函数返回一个函数

    def outer():
        def inner():
            print('这是内部函数')
    
        print('这是外部函数')
        return inner
    
    i = outer()
    print(type(i))
    i()

    运行结果:type(i)的返回结果说明i是一个函数。

    这是外部函数
    <class 'function'>
    这是内部函数

    九、处理任意数量和类型的函数参数
    (1)使用*接收一个任意(0或多个)的参数列表

    def test(*args):
        for a in args:
            print(a, end=' ')
        if args:
            print()
    
    test() #不提供参数时,不做什么
    test(1) #输出:1
    test(1,2,'a') #输出: 1 2 a
    
    list = [1,2,3,'a','bc']
    test(list) #输出:[1, 2, 3, 'a', 'bc'] 
    test(*list) #加“*”会展开参数列表,输出:1 2 3 a bc 

    (2)使用**接收任意多个关键字参数

    def test2(**kwargs):
        for k,v in kwargs.items():
            print(k, v, sep='->', end=' ')
        if kwargs:
            print()
    
    test2() #不提供参数时,不做什么
    test2(a=10,b='abc') #输出:a->10 b->abc 
    
    dict = {'id':1,'name':'张三'}
    test2(**dict) #也可使用**,输出:id->1 name->张三


    (3)同时使用*args,**kwargs

    def test(*args, **kwargs):
        if args:
            for a in args:
                print(a, end=' ')
            print()
        if kwargs:
            for k,v in kwargs.items():
                print(k, v, sep='->', end=' ')
            print()
    
    test() #不提供参数时,不做什么
    test(1) #输出:1
    test(a=10,b='abc') #输出:a->10 b->abc 
    test(1,a=10,b='abc') #输出:1 a->10 b->abc 
  • 相关阅读:
    [转]如何有效运作知识库
    针式PKM如何帮助你解决个人知识管理中的常见问题?
    知识管理的目的是什么?如何进行知识管理?
    [转]阅读《讀書這玩意兒》有感&笔记
    [转]学习的三个层次
    小鱼干的做法
    IIS ERROR: Server Application Error 和 IIS与.NET Framework的安装顺序问题
    C#调用oracle存储过程 最简单的实例
    Oracle 中游标实例
    查看Sql Server是否有打SP4
  • 原文地址:https://www.cnblogs.com/gdjlc/p/11070807.html
Copyright © 2011-2022 走看看