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

    • 定义函数
    • 函数的参数
    • 递归函数

      函数名其实就是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给这个函数起了一个“别名”。

    >>> a = abs    # 变量a指向abs函数
    >>> a(-1)    # 所以也可以通过a调用abs函数
    1

    定义函数

      在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

      函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。

      如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。

    空函数

      如果想定义一个什么事也不做的空函数,可以用pass语句:

    def nop():
        pass

      pass还可以用在其他语句里,比如:

    if age >= 18:
        pass
    # 缺少了pass,代码运行就会有语法错误

    返回多个值

      Python返回的任然是单一值,返回值是一个tuple。但是在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

    函数的参数

      Python函数除了正常的必选参数外,还可以使用默认参数、可变参数和关键字参数。

    # 当调用power(5)时,相当于调用power(5, 2)
    # 而对于n > 2的其他情况,就必须明确地传入n,比如power(5, 3)
    def power(x, n=2):
        s = 1
        while n > 0:
            n = n - 1
            s = s * x
        return s

      默认参数使用不当的情况:当正常调用时,结果是对的;当使用默认参数调用时,一开始结果是对的,但是当再次调用add_end()时,结果就不对了。

      默认参数是[],但是函数似乎每次都“记住了”上次添加了'END'后的list。

      原因如下:Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

      注意:默认参数必须指向不变对象。

    >>> def add_end(L=[]):
    ...     L.append('END')
    ...     return L
    ...
    >>> add_end([1, 2, 3])
    [1, 2, 3, 'END']
    >>> add_end(['x', 'y', 'z'])
    ['x', 'y', 'z', 'END']
    >>> add_end()
    ['END']
    >>> add_end()
    ['END', 'END']
    >>> add_end()
    ['END', 'END', 'END']

      可变参数就是传入的参数个数是可变的。

      定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,在调用该函数时,可以传入任意个参数,包括0个参数。

      如果已经有一个list或者tuple,要调用一个可变参数时,可以在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去。

    >>> def calc(*numbers):
    ...     sum = 0
    ...     for n in numbers:
    ...         sum = sum + n * n
    ...     return sum
    ...
    >>> calc(1, 2)
    5
    >>> calc()
    0

     >>> nums = [1, 2, 3]
     >>> calc(*nums)
     14

     

      关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

    >>> def person(name, age, **kw):
    ...     print('name:', name, 'age:', age, 'other:', kw)
    ...
    >>> person('Mike', 30)
    name: Mike age: 30 other: {}
    >>> person('Bob', 29, city='Beijing')
    name: Bob age: 29 other: {'city': 'Beijing'}
    >>> person('Adam', 23, gender='M', job='Engineer')
    name: Adam age: 23 other: {'gender': 'M', 'job': 'Engineer'}
  • 相关阅读:
    Swift
    ios中沙盒
    Mac下安装apk(命令形式)
    iOS 保存异常日志
    android sliding menu
    iOS 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
    iOS应用崩溃日志分析
    iOS 推送
    iOS 修改textholder的颜色
    iOS 7.1 UITapGestureRecognizer 不好用的解决办法
  • 原文地址:https://www.cnblogs.com/lucky-zhangcd/p/9077469.html
Copyright © 2011-2022 走看看