zoukankan      html  css  js  c++  java
  • &【12】Python 函数

    本文参考:

    纯洁的微笑:http://www.ityouknow.com/python.html

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,所以我经常说函数是程序员规模化使用的基础。

    函数能提高应用的模块性,和代码的重复利用率。在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。善于利用函数,可以减少重复编写程序段的工作量。

    如何定义一个函数

    定义一个函数有如下几个步骤

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
    • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    语法

    def 函数名(参数列表):
        函数体

    默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

    简单示例

    一个最简单的函数示例:

    #定义一个函数
    def hello() :
       print("Hello World!")
    
    #调用函数
    hello()

    带参数的示例:

    #定义一个函数
    def helloN(name) :
       print("Hello World!", name)
    
    #调用函数
    helloN('neo')

    加减乘除示例

    我们使用函数实现一个基本的加减乘除运算。

    #定义函数
    def add(a,b) :
       return a+b
    
    def reduce(a,b) :
       return a-b
    
    def multiply(a,b) :
       return a*b
    
    def divide(a,b) :
       return a/b
    
    #调用函数
    print(add(1,2))
    print(reduce(12,2))
    print(multiply(6,3))
    print(divide(12,6))

    发现定义函数可以实现代码的多次复用。

    多个返回值

    某些情况下,我们需要一个函数返回多个值,Python 也是支持的。

    #定义多个返回值函数
    def more(x, y):
        nx = x + 2
        ny = y - 2
        return nx, ny
    
    #调用函数
    x, y = more(10, 10)
    print(x, y) 

    递归函数

    有时候我们需要反复调用某个函数得到一个最后的值,这个时候使用递归函数是最好的解决方案。

    编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数

    举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:

    fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n

    所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。

    于是,fact(n)用递归的方式写出来就是:

    def fact(n):
        if n==1:
            return 1
        return n * fact(n - 1)

    这样一个递归函数就定义完了。

    我们试着调用一下 6 的阶乘是多少,可以这样调用:

    print(fact(6))
    # 输出内容
    # 720

    类似的需要都可以按照这样的方式来实现。

  • 相关阅读:
    [译]在Python中如何使用额enumerate 和 zip 来迭代两个列表和它们的index?
    [译]如何去除Git的unstaged的文件提示“old mode 100755 new mode 100644”?
    [译]在SQL查询中如何映射(替换)查询的结果?
    [总结]《敏捷软件开发: 原则、模式与实践》一次编程实践
    [书摘]《敏捷软件开发: 原则、模式与实践》第一部分:敏捷开发
    [译]Python
    [问题解决]Python locale error: unsupported locale setting
    [持续补充]开发过程中常见bug查找思路
    [译]如何比较同一分支上的不同commit的代码区别?
    [整理]如何切换到远程分支
  • 原文地址:https://www.cnblogs.com/doagain/p/15521668.html
Copyright © 2011-2022 走看看